一. 将容器转化为镜像
使用docker pull命令从远程仓库下载的镜像为base镜像,只具有最小的内核。我们可以在base镜像上安装其他工具,将其生成为一个新的镜像。相当于可以在原始的基础镜像上一层一层添加。
例如:下载一个centos的镜像,其没有vim命令,我们可以启动centos的容器,然后添加vim命令,使用commit命令将容器转化为一个新的镜像;之后启动新生成镜像的容器,在该容器内就可以使用vim命令。commit命令为:
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
1. 下载centos7镜像
docker pull centos:7
2. 查看镜像id
docker images
3. 新建并启动centos7
4. 在centos7容器内下载vim
yum install vim
5. 在容器外查看当前运行的centos7容器的id(ctrl+p+q退出但不停止容器,或新打开一个终端)
docker ps
6. 在容器外将centos7容器转化为一个新的镜像,该镜像将具有vim命令的功能。
docker commit -m="add vim ok" -a="tom" 66f428876ae8 mycentos:7.1
由于该镜像在原始的centos镜像上加了vim功能,因此大小从204MB增大到448MB。
二. 将镜像发布到阿里云上
1. 创建命名空间
2. 创建镜像仓库
创建阿里云镜像仓库后下面有操作信息,可以根据需求执行
3. 将新镜像推送到阿里云仓库
执行以下命令:
4. 将阿里云上的镜像拉取到本地
删除本地的镜像,然后 执行以下命令将镜像从阿里云仓库中拉取下来:
三. 将镜像上传到私有仓库
1. 下载私服库镜像
docker pull registry
2.运行私有库Registry,相当于本地有个私有Docker hub
docker run -d -p 5000:5000 -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry
默认情况下,仓库被创建在容器的/var/lib/registry目录下
3. 验证私有库上是否有镜像(此时为空)
curl -XGET http://192.168.32.128:5000/v2/_catalog
4. 将新镜像mycentos:7.1修改为符合私服规范的Tag
docker tag 镜像:Tag ip:port/镜像:Tag
ip为linux系统本机的ip,例如:docker tag mycentos:7.1 192.168.32.128:5000/mycentos:7.1(使用docker tag命令将mycentos:7.1修改为192.168.32.128:5000/mycentos:7.1)
5. 修改配置文件来支持http
使用vim命令在/etc/docker/daemon.json中添加以下内容
"insecure-registries": ["本机ip:5000"]
"insecure-registries": ["192.168.32.128:5000"]
6. 将新镜像推送到私服库(此时私有库Registry应为运行状态)
docker push 192.168.32.128:5000/mycentos:7.1
7. 验证私有库上是否有镜像
curl -XGET http://192.168.32.128:5000/v2/_catalog
8. 将私有库上的镜像拉取到本地
docker pull 192.168.32.128:5000/mycentos:7.1