上一次我们讲了如何搭建自己私有的镜像管理仓库,实际上我们使用的依然是别人或者公共的image,今天就来说说如何将自己定制化的images上传到自己的私有仓库中,以供符合自己业务场景的项目来使用,如:我使用docker基于ubuntu 14.04系统搭建了一套ruby的环境,以后直接使用。

先来看看我们在运行的容器:

#docker ps

ubuntu-docker入门到放弃(四)容器的导入导出

接下来我们在nginx服务器上安装一个ruby环境:

进入容器内:

#docker exec -it e96a98d5902c /bin/bash
#apt-get update
#dpkg -l  | grep ruby #查看是否安装了ruby
#apt-get install ruby

已经安装完了,查看一下:

#ruby -v
ruby 2.3.3p222 (2016-11-21) [x86_64-linux-gnu]

接下来我们把这个容器导出来,制作成镜像,上传到我们的私有仓库中,以后需要ruby环境就不需要安装了,直接拉镜像下来跑起来就可以了:

导出容器:

#docker export e96a98d5902c >ubuntu14_ruby2.tar.gz

导入到本地镜像:

#docker import ubuntu14_ruby2.tar.gz
sha256:fd2e33845352e808b3b3bd90c47afa067b5542663c518fa2cef5e1f3cc912e3

查看本地镜像:

#docker images

ubuntu-docker入门到放弃(四)容器的导入导出

这个没有tag的就是我们刚刚导入的,现在我们给他打一个tag:

#docker tag fd2e33845352 ubuntu14_ruby2:2.2
#docker images

ubuntu-docker入门到放弃(四)容器的导入导出

好了,接下来我们把这个本地镜像上传到私有仓库中:

#docker tag ubuntu14_ruby2:2.2 10.30.234.212:5000/ubuntu14_ruby
#docker push 10.30.234.212:5000/ubuntu14_ruby

接下来看看仓库中的镜像:

#curl http://10.30.234.212:5000/v2/ubuntu14_ruby/tags/list
{"name":"ubuntu14_ruby","tags":["latest"]}

已经有了,接下来我们把本地ruby环境的容器及image删除:

先停止容器:

#docker stop e96a98d5902c

在删除容器:

#docker rm e96a98d5902c

查看:

#docker ps

ubuntu-docker入门到放弃(四)容器的导入导出

接下来删除image:

#docker rmi 10.30.234.212:5000/ubuntu14_ruby
#docker rmi ubuntu14_ruby2:2.2

从仓库下载镜像来启动ruby环境:

 

#docker pull 10.30.234.212:5000/ubuntu14_ruby
#docker images

ubuntu-docker入门到放弃(四)容器的导入导出

用这个image启动一个容器:

#docker run -dit --name test_ruby 10.30.234.212:5000/ubuntu14_ruby /bin/bash
#docker ps

ubuntu-docker入门到放弃(四)容器的导入导出

容器已经起来了,让我们看看ruby环境还在不在:

#docker exec -it 12f5cefa90d9 /bin/bash
#ruby -v
ruby 2.3.3p222 (2016-11-21) [x86_64-linux-gnu]

环境依然在,成功~