http://www.ppzedu.com/archives/1062.html

docker的容器修改后保存及更新本地镜像

列出镜像:

$ sudo docker images

1

$ sudo docker images

docker命令images
获取镜像:

sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04

1

sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04

#生产中我们都是自己搭建自己的私有仓库
注意:从第三方镜像仓库获取镜像可能出现https证书问题,例如:

Error response from daemon: unable to ping registry endpoint

1

Error response from daemon: unable to ping registry endpoint  

 

https://dl.dockerpool.com:5000/v0/ v2 ping attempt failed with error: Get https://dl.dockerpool.com:5000/v2/: tls: oversized record received with length 28012 v1 ping attempt failed with error: Get https://dl.dockerpool.com:5000/v1/_ping: tls: oversized record received with length 28012</pre>

1

2

3

https://dl.dockerpool.com:5000/v0/

v2 ping attempt failed with error: Get https://dl.dockerpool.com:5000/v2/: tls: oversized record received with length 28012

v1 ping attempt failed with error: Get https://dl.dockerpool.com:5000/v1/_ping: tls: oversized record received with length 28012</pre>

解决方案,还是建议通过nginx+ssl的代理方式来实现安全。如果只是为了学习,可以用以下办法:
到/etc/sysconfig/default目录,找到docker文件,在其中添加如下代码:

other_args="--insecure-registry dl.dockerpool.com:5000 -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock"

1

other_args="--insecure-registry dl.dockerpool.com:5000 -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock"

之后重启docker服务:

sudo service docker restart

1

sudo service docker restart

镜像保存与导入
保存方式一:save
save命令会将镜像完整保存,包括历史版本和元数据信息,所以文件可能比较大。
-o: 表示以文件的形式导出 紧跟在-o后面的是导出文件保存的位置 最后是镜像(仓库:TAG,或者镜像id)

sudo docker save -o /home/admin/dockerImages/mmm.tar ubuntu:12.04 #ç°å¨ä¸è¬ædockerçéåä»åºäºï¼ä¸è¬ä¸ä½¿ç¨è¿ç§æ¹æ³ã

1

sudo docker save -o /home/admin/dockerImages/mmm.tar ubuntu:12.04      #现在一般有docker的镜像仓库了,一般不使用这种方法。

保存方式二:export
确切的说,export其实是容器的保存,只把镜像当前的状态保存下来,没有历史版本等信息,所有文件比较小
-o:表示以文件形式导出 紧跟在-o后面的是导出文件保存位置
最后是容器的id 容器通过sudo docker ps -a 查看
docker export -o ubuntu1204.tar d0751467dcad
镜像导入:
docker load
sudo docker load < /home/fengzheng/Docker/ubtuntu12.04.tar
镜像删除删除镜像前,要先把依赖于这个镜像的容器删除(sudo docker rm 容器id)
删除镜像的命令是docker rmi [镜像id]

sudo docker rmi 0ac5b09d8536

1

sudo docker rmi 0ac5b09d8536

提交修改的容器,并生成新的镜像
当对现有容器进行修改后,例如安装了某些软件、修改了配置等,要保存当前修改并生成新的镜像,使用docker commit命令 ,这个命令和git的commit命令很像
# -a:修改者信息 -m:注释、说明 紧跟着当前操作的容器id 最后是要生成的新的镜像名称

sudo docker commit -a "baozoudelimi" -m "add 20170309 xxxx message" contain_id image_name 085243761c41ae58e92ba855539460b7342a5cd31b44b51a71c654bb8f823c10 æ¥çéåçä¿¡æ¯ï¼docker inspect [éåå称æèéåid] <img alt='docker容å¨ä¿å­' class='alignnone size-full wp-image-1065 ' src='http://www.ppzedu.com/wp-content/uploads/2017/03/img_58c0fec25f28f.png' title="docker 容å¨ä¿å­02"/> <strong>æ°å»ºå¹¶å¯å¨å®¹å¨</strong> æ ¹æ®ä¸ä¸ªéåå¯ä»¥å¯å¨å¤ä¸ªå®¹å¨ï¼å¯å¨å®¹å¨çå½ä»¤æ¯docker run

1

2

3

4

5

6

sudo docker commit -a "baozoudelimi" -m "add 20170309 xxxx message" contain_id image_name

085243761c41ae58e92ba855539460b7342a5cd31b44b51a71c654bb8f823c10

查看镜像的信息:docker inspect [镜像名称或者镜像id]

<img alt='docker容器保存' class='alignnone size-full wp-image-1065 ' src='http://www.ppzedu.com/wp-content/uploads/2017/03/img_58c0fec25f28f.png' title="docker 容器保存02"/>

<strong>新建并启动容器</strong>

根据一个镜像可以启动多个容器,启动容器的命令是docker run

 

sudo docker run -t -i ubuntu:12.04 /bin/bash #æè sudo docker run -t -i éåid

1

2

sudo docker run -t -i ubuntu:12.04  /bin/bash  #或者

sudo docker run -t -i  镜像id

常用参数解释:

-t 表示让Docker分配一个伪终端并绑定到容器的标准输入上
-i 表示让容器的标准输入保持打开
-d 表示以守护方式打开(即非交互模式,后台运行)
还有一个比较常用的,做网络配置时端口映射的参数-p,例如下面的命令将宿主机的3222端口映射到容器的22端口、将宿主机的3280端口映射到容器的22端口,用法如下:
#-p 设置端口映射 -p 宿主机端口:容器端口
sudo docker run -t -i -p 3222:22 -p 3280:80 87e5b6b3ccc1 /bin/bash
查看容器列表

 

#查看已启动的容器

sudo docker ps

1

sudo docker ps

#查看所有容器

sudo docker ps -aãã

1

sudo docker ps -a  

启动一个已存在的容器  
#后面的id为容器ID

sudo docker start 8d98fd43acd4

1

sudo docker start 8d98fd43acd4

进入容器  

sudo docker attach 8d98fd43acd4

1

sudo docker attach 8d98fd43acd4

停止容器

sudo docker stop 8d98fd43acd4

1

sudo docker stop 8d98fd43acd4

删除容器
容器必须是停止状态的才可以删除,否则-f

sudo docker rm 8d98fd43acd4

1

sudo docker rm 8d98fd43acd4

导出容器
#将容器id为7691a814370e 的导出到当前目录下 名称为ubuntu.tar

sudo docker export 7691a814370e > ubuntu1404.tar

1

sudo docker export 7691a814370e > ubuntu1404.tar

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐