1.3 Docker 基于已有镜像的容器创建镜像
2018-05-09
1.3 Docker 基于已有镜像的容器创建镜像
运行 docker run 后,进入到该容器中,我们做一些变更,比如安装一些东西,然后针对这个容器进行创建新的镜像
把已经退出的容器启动起来
root@ubuntu:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
81678fc4d6c7 ubuntu:latest "/bin/bash" 35 minutes ago Exited (0) 32 minutes ago happy_newton
root@ubuntu:~# docker start 816
816
root@ubuntu:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
81678fc4d6c7 ubuntu:latest "/bin/bash" 36 minutes ago Up 6 seconds happy_newton
进入这个已经启动的容器
root@ubuntu:~# docker exec -it 816 /bin/bash
root@81678fc4d6c7:/#
root@81678fc4d6c7:/# apt-get install -y net-tools
root@81678fc4d6c7:/# apt-get install -y wget
查看网卡信息
root@81678fc4d6c7:/# ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:c0:a8:2a:03
inet addr:192.168.42.3 Bcast:0.0.0.0 Mask:255.255.255.0
inet6 addr: fe80::42:c0ff:fea8:2a03/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:18287 errors:0 dropped:0 overruns:0 frame:0
TX packets:1814 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:27632961 (27.6 MB) TX bytes:125274 (125.2 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
创建新镜像
docker commit -m “change somth” -a “somebody info” container_id new_name (id 可以通过 docker ps -a 获得)
root@ubuntu:~# docker commit -m "ubuntu_with_nettools_and_wget" -a "user1" 81678fc4d6c7 ubuntu_with_net
45d4c91e72cee9b9fc9b2b3f05542e33b96631fefea115fbf62ae2b827a27952
root@ubuntu:~# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu_with_net latest 45d4c91e72ce About a minute ago 176.7 MB
ubuntu v1 ac8b2a2b477b 37 hours ago 125.2 MB
test1 latest ac8b2a2b477b 37 hours ago 125.2 MB
test1 v1.0 ac8b2a2b477b 37 hours ago 125.2 MB
这个命令有些像 SVN 的提交,-m 加一些改动信息,-a 指定作者相关信息,816 这一串为容器 ID,再后面为新镜像的名字。