Docker service update更新不成功的问题

1、基本信息

一、Docker版本
[root@ip-172-0-0-88 ~]# docker --version Docker version 19.03.3, build a872fc2f86
 
二、系统版本
[root@ip-172-0-0-88 ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)
 

2、问题描述

Dockerfile1:
FROM centos RUN rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
RUN yum -y install nginx CMD /bin/bash -c "echo 'hello' && exec nginx -g 'daemon off;'"

 

Dockerfile2:
FROM centos RUN rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
RUN yum -y install nginx COPY ./lile_test / CMD /bin/bash -c "echo 'hello' && exec nginx -g 'daemon off;'"
 
 
1)在机器1上经过Dockerfile1制做镜像lile224/centos7_nginx,并上传到Docker Hub
docker build -f Dockerfile1  -t lile224/centos7_nginx:20191012 . docker push lile224/centos7_nginx:20191012
 
2)在机器2上经过docker service启动容器
docker service create --name centos7_nginx lile224/centos7_nginx:20191012
 
3)在机器上经过Dockerfile2制做镜像lile224/centos7_nginx,并从新push到Docker Hub
docker build -f Dockerfile2  -t lile224/centos7_nginx:20191012 . docker push lile224/centos7_nginx:20191012
 
4)对比Dockerfile1与Dockerfile2,我把一个叫lile_test的文件拷贝到了根目录下,因此这个镜像是更新了,我得更新个人service
docker service update centos7_nginx --image lile224/centos7_nginx:20191012
 
到这里为止,发现这个update有把最新提交的镜像pull下来,可是容器运行的镜像仍是原来的那个。
 

3、排查过程

通过反反复复的测试验证,第一是否是版本的问题,发现不是。这是在线上发现的问题,我本身模拟这个环境重现错误,发现本身的环境又能够,这就尴尬了,而后对比线上环境和本身模拟的环境没啥不同啊;后来在网上搜索的时候,关于这个的问题还不多有资料,在某个地方看到说当你的仓库是私有仓库的时候,要加上参数 --with-registry-auth。而后反向验证了一下,把本身的仓库从public设置为private的时候,这个问题获得了重现。也就获得了解决办法。
 

4、解决办法

1)把仓库设为公有仓库
2)在service update的时候加上参数--with-registry-auth
 

5、深究缘由

待研究,之后弄明白了再来补充
 

6、总结

1)一直把问题放在Docker上,没去想其余方面,好比仓库的问题
 
2)不要放过任何一个错误,其实service update的时候一直有报错,以下:
[root@ip-172-0-0-111 ~]# docker service update centos7_nginx --image lile224/centos7_nginx:20191012 image lile224/centos7_nginx:20191012 could not be accessed on a registry to record its digest. Each node will access lile224/centos7_nginx:20191012 independently, possibly leading to different nodes running different versions of the image. centos7_nginx overall progress: 1 out of 1 tasks 1/1: running   [==================================================>] verify: Service converged 
 
一直没去管它,没去仔细的看他,而后就是按照本身的想象在找缘由;不要放过任何一个错误,多看;而后其实可使用systemctl status docker看看docker的状态时不时有error,一看果真是有的,而后得根据日志去查问题。
 
3)路还很长,得加油

 

原文出处:https://www.cnblogs.com/lemon-le/p/11675025.htmlhtml

相关文章
相关标签/搜索