一、基本信息

1、Docker版本
[root@ip---- ~]# docker --version
Docker version 19.03., build a872fc2f86
 
2、系统版本
[root@ip---- ~]# cat /etc/redhat-release
CentOS Linux release 7.6. (Core)
 

二、问题描述

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: .
docker push lile224/centos7_nginx:
 
2)在机器2上通过docker service启动容器
docker service create --name centos7_nginx lile224/centos7_nginx:
 
3)在机器上通过Dockerfile2制作镜像lile224/centos7_nginx,并重新push到Docker Hub
docker build -f Dockerfile2  -t lile224/centos7_nginx: .
docker push lile224/centos7_nginx:
 
4)对比Dockerfile1与Dockerfile2,我把一个叫lile_test的文件拷贝到了根目录下,所以这个镜像是更新了,我得更新我的service
docker service update centos7_nginx --image lile224/centos7_nginx:
 
到这里为止,发现这个update有把最新提交的镜像pull下来,但是容器运行的镜像还是原来的那个。
 

三、排查过程

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

四、解决办法

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

五、深究原因

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

六、总结

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

Docker service update更新不成功的问题的更多相关文章

  1. 37. docker swarm docker service 的更新

    在service 运行的情况下 进行更新 1. 创建 名为 demo 的 overlay 网络 docker network create -d overlay demo 2. 创建 python-f ...

  2. docker swarm:执行 service update 过程中服务短暂不能访问的问题

    这是我们使用自建 docker swarm 集群后在部署时遇到的一个问题,使用 docker service update 命令更新服务时, docker service update -d=fals ...

  3. Docker - 通过swarm 管理 docker service

    创建一个 Docker service $ docker service create --replicas 1 --name myhelloworld alpine ping docker.com ...

  4. docker探索-使用docker service管理swarm(十一 )

    本文转自:https://www.cnblogs.com/atuotuo/p/6265541.html 1.创建一个 Docker service $ docker service create -- ...

  5. docker.service启动失败:Unit not found

    docker.service启动失败:Unit not found 版权声明:本文为博主原创文章,未经博主允许不得转载. 背景 因为最近一直在折腾Kubernetes集群版本升级.Docker版本升级 ...

  6. SVN提示update更新成功,但是本地文件却没有更新

    问题描述:将仓库的最新版本代码check out到本地后,然后最某个文件做了修改,保存后想通过svn的update来重新得到最新的版本,发现失效. 原因:经过多方查找原因,主要看了以下两篇文档 htt ...

  7. Job for docker.service failed because the control process exited with error code. See

    在Liunx中使用Docker, 注: Liunx使用的是在虚拟机下的centOS7版本在刚开始安装Docker时没有任何错误, 但是在后续的docker启动过程中, 出现以下问题: Job for ...

  8. Linux系统Docker启动问题Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service"

    在Liunx中使用Docker, 注: Liunx使用的是在虚拟机下的centOS7版本在刚开始安装Docker时没有任何错误, 但是在后续的docker启动过程中, 出现以下问题: [root@zk ...

  9. CentOS启动docker1.13失败(Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.)

    一.启动失败 1.启动docker [root@localhost ~]# systemctl start docker Job for docker.service failed because t ...

随机推荐

  1. Java 网络编程:必知必会的 URL 和 URLConnection

    java.net.URL 类将 URL 地址进行了封装,并提供了解析 URL 地址的基本方法,比如获取 URL 的主机名和端口号.java.net.URLConnection 则代表了应用程序和 UR ...

  2. C#开发BIMFACE系列24 服务端API之获取模型数据9:获取单个房间信息

    系列目录     [已更新最新开发文章,点击查看详细] 大厦建筑模型中,基本上包含多个楼层,每个楼层包含多个房间等信息.在<C#开发BIMFACE系列21 服务端API之获取模型数据6:获取单模 ...

  3. python实现煲机脚本

    生日的时候女票送了一副新耳机,还挺帅气. 装逼界的人都知道,新耳机是有"煲"这个步骤的 至于有没有效果?怎么煲?煲多久?这些问题都是耳机界常年争执的问题,各路高手分成各种门派常年杀 ...

  4. ASP.NET Core 2.2 : 二十. Action的多数据返回格式处理机制

    上一章讲了系统如何将客户端提交的请求数据格式化处理成我们想要的格式并绑定到对应的参数,本章讲一下它的“逆过程”,如何将请求结果按照客户端想要的格式返回去. 一.常见的返回类型 以系统模板默认生成的Ho ...

  5. ssh的秘钥认证

    ssh秘钥认证简述 通常我们会使用x-shell.putty.MobaXterm等支持ssh连接的工具去登录服务器进行管理,而执行ssh命令.scp命令等从一台服务器登录另外一台服务器的时候,通常需要 ...

  6. SpringCloud学习笔记(2):使用Ribbon负载均衡

    简介 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡工具,在注册中心对Ribbon客户端进行注册后,Ribbon可以基于某种负载均衡算法,如轮询(默认 ...

  7. java学习笔记之基础篇

    java选择语句之switch   //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...

  8. 做一个完整的Hadoop项目

     1. 完整的数据流图 由同ip访问的次数: SQL查询 select ip,count(ip) from tablename Group by ip; 基于Hadoop分析 使用Hadoop分析,需 ...

  9. Filter过滤器学习

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...

  10. Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵动态限流规则

    Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵动态限流规则 前面几篇文章较为详细的介绍了Sentinel的使用姿势,还没看过的小伙伴可以访问以下链接查看: &l ...