上一篇已经介绍如何将镜像发布到阿里云:https://www.cnblogs.com/sportsky/p/16246394.html
一、创建新镜像文件
1、创建容器并在容器内创建文件
在根目录下创建 /xiaohemiao/test.txt 并在test.txt文件中写入一些内容
2、提交容器副本使之成为一个新的镜像
1 2 |
<span style="font-size: 15px;"><span style="color: rgba(0, 0, 0, 1);"># 提交格式 docker commit </span>-m=<span style="color: rgba(128, 0, 0, 1);">"</span><span style="color: rgba(128, 0, 0, 1);">提交的描述信息</span><span style="color: rgba(128, 0, 0, 1);">"</span> -a=<span style="color: rgba(128, 0, 0, 1);">"</span><span style="color: rgba(128, 0, 0, 1);">作者</span><span style="color: rgba(128, 0, 0, 1);">"</span> 容器id 要创建的目标镜像名:[标签名,也就是版本号]</span> |
二、本地镜像推送到私有库
1、下载镜像Docker Registry
1 |
<span style="font-size: 15px;">docker pull registry</span> |
2、创建本地私有容器库
1 2 3 |
<span style="font-size: 15px;"># 创建一个名为registry的容器,将宿主机5000端口映射到容器的5000端口,将宿主机的/myregistry目录映射到容器/tmp/<span style="color: rgba(0, 0, 0, 1);">registry目录作为数据容器卷 docker run </span>-id -p <span style="color: rgba(128, 0, 128, 1);">5000</span>:<span style="color: rgba(128, 0, 128, 1);">5000</span> -v /myregistry/:/tmp/registry --privileged=<span style="color: rgba(0, 0, 255, 1);">true</span><span style="color: rgba(0, 0, 0, 1);"> registry 默认情况,仓库被创建在容器的</span>/<span style="color: rgba(0, 0, 255, 1);">var</span>/lib/registry目录下,建议自行用容器卷映射,方便与宿主机联调</span> |
3、curl验证私服库上的镜像
1 2 |
<span style="font-size: 15px;"># IP地址是自己宿主机的ip,端口号是刚刚创建容器映射的宿主机端口</span> <span style="font-size: 15px;">curl -XGET http:<span style="color: rgba(0, 128, 0, 1);">//</span><span style="color: rgba(0, 128, 0, 1);">192.168.140.129:5000/v2/_catalog</span></span> |
4、将新镜像myredis:latest修改符合私服规范的Tag
1 2 |
<span style="font-size: 15px;"># 格式 docker tag 镜像名称:版本号 ip:端口/镜像名称:版本号 docker tag myredis:latest <span style="color: rgba(128, 0, 128, 1);">192.168</span>.<span style="color: rgba(128, 0, 128, 1);">140.129</span>:<span style="color: rgba(128, 0, 128, 1);">5000</span>/myredis:latest</span> |
5、修改配置文件使之支持http
1 |
<span style="font-size: 15px;">vi /etc/docker/daemon.json</span> |
添加如下配置:insecure-registries”:[“192.168.140.129:5000”]
上述理由:docker默认不允许http方式推送镜像,通过配置选项来取消这个限制,修改完后如果不生效,建议重启docker
6、push推送到私服库
1 2 |
<span style="font-size: 15px;"># 后台配置重新加载</span> <span style="font-size: 15px;">systemctl daemon-reload</span> |
# 重启docker服务
systemctl restart docker
# 查看配置的端口号(5000)是否开启(非必要)
netstat -nlpt
1 2 |
<span style="font-size: 15px;"># 推送到私服</span> <span style="font-size: 15px;">docker push <span style="color: rgba(128, 0, 128, 1);">192.168</span>.<span style="color: rgba(128, 0, 128, 1);">140.129</span>:<span style="color: rgba(128, 0, 128, 1);">5000</span>/myredis:latest</span> |
7、重新查看私服库镜像有哪些
1 2 |
<span style="font-size: 15px;"># 查看私服镜像文件(ip地址修改成自己宿主机的ip)</span> <span style="font-size: 15px;">curl -XGET http:<span style="color: rgba(0, 128, 0, 1);">//</span><span style="color: rgba(0, 128, 0, 1);">192.168.140.129:5000/v2/_catalog</span></span> |
三、pull私服镜像
首先先删掉目前docker上的镜像,然后再从私服镜像pull
1 2 3 |
<span style="font-size: 15px;"><span style="color: rgba(0, 0, 0, 1);"># pull私服镜像(ip地址填写当前宿主机的ip和端口) docker pull </span><span style="color: rgba(128, 0, 128, 1);">192.68</span>.<span style="color: rgba(128, 0, 128, 1);">140.129</span>:<span style="color: rgba(128, 0, 128, 1);">5000</span>/myredis:latest</span> |
================================Ending 大功告成 !===========================================