9.3 将容器转化为镜像
在上一节中,已经在容器里安装好了nginx,接下来希望将这个容器内容保存下来,这样下次就无需再次安装了。这就是Docker中将容器转换为镜像的技术。
如果还在刚刚的安装了nginx的终端里,执行exit
退出此终端,回到系统本身的终端:
root@43981d58800d:/# exit
exit
root@liu-ubuntu:~#
ps
命令可以查看当前都运行了哪些容器,加上-a
参数后就表示运行过哪些容器,因为刚刚已经退出了安装nginx的容器,因此现在想查看它的话,需要使用-a参数,执行如下命令,就会显示出刚刚运行的容器,并且Docker会随机给每个容器都起个Names方便标示。效果如下:
root@liu-ubuntu:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
43981d58800d ubuntu:14.04 "/bin/bash" 15 minutes ago Exited (0) 51 seconds ago silly_raman
commit
命令用来将容器转化为镜像,运行下面的命令,可以将刚刚的容器转换为镜像,其中,-m
参数用来来指定提交的说明信息;-a
可以指定用户信息的;43981d58800d
代表的是容器的id;gogogo/ubuntu-nginx:v1
指定目标镜像的用户名、仓库名和tag 信息。创建成功后会返回这个镜像的ID信息。注意,gogogo可以改为自己的用户名。
root@liu-ubuntu:~# docker commit -m "ubuntu14.04 with nginx" -a "gogogo" 43981d58800d gogogo/ubuntu-nginx:v1
sha256:3179e620c6f5446cbff9cd96c7a445a76b52a6adb40243973b4b942e41b4cbeb
这是我们再次使用docker images
命令就会发现此时多出了一个我们刚刚创建的镜像:
root@liu-ubuntu:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gogogo/ubuntu-nginx v1 3179e620c6f5 8 minutes ago 266 MB
ubuntu 14.04 578c3e61a98c 2 weeks ago 223 MB
此时,如果运行 docker run -it gogogo/ubuntu-nginx:v1
就会是一个已经安装了nginx的容器:
root@liu-ubuntu:~# docker run -it gogogo/ubuntu-nginx:v1
root@4aa7777f3294:/# nginx -v
nginx version: nginx/1.4.6 (Ubuntu)