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

相關文章
相關標籤/搜索