翼度科技»论坛 云主机 服务器技术 查看内容

低版本Docker升级高版本Docker的详细教程及成功避坑

10

主题

10

帖子

30

积分

新手上路

Rank: 1

积分
30
操作系统服务Centos7Docker
安装低版本Docker
  1. 由于Centos7自带的yum源中的Docker版本过低,先安装默认的版本
复制代码
  1. yum -y install docker
复制代码
查看Docker版本
  1. [root@Ayu ~]# docker --version
  2. Docker version 1.13.1, build 7d71120/1.13.1
复制代码
宿主机创建挂载目录
  1. mkdir -p /test/nginx
  2. cd /test/nginx && mkdir a b c d
复制代码
下载镜像并创建容器
  1. docker pull nginx
  2. docker run -itd -v /test/nginx:/test/nginx -p 80:80 --name nginx nginx
复制代码
登录容器查看映射
  1. docker exec -it nginx bash
  2. root@daea0c2b307b:/# cd /test/nginx
  3. root@daea0c2b307b:/test/nginx# ls
  4. a  b  c  d
复制代码
访问测试



在升级前确定几个重点:


1.原配置文件备份一下
  1. [root@localhost ~]# cat /usr/lib/systemd/system/docker.service
  2. [Unit]
  3. Description=Docker Application Container Engine
  4. Documentation=http://docs.docker.com
  5. After=network.target
  6. Wants=docker-storage-setup.service
  7. Requires=docker-cleanup.timer

  8. [Service]
  9. Type=notify
  10. NotifyAccess=main
  11. EnvironmentFile=-/run/containers/registries.conf
  12. EnvironmentFile=-/etc/sysconfig/docker
  13. EnvironmentFile=-/etc/sysconfig/docker-storage
  14. EnvironmentFile=-/etc/sysconfig/docker-network
  15. Environment=GOTRACEBACK=crash
  16. Environment=DOCKER_HTTP_HOST_COMPAT=1
  17. Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
  18. ExecStart=/usr/bin/dockerd-current \
  19.           --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
  20.           --default-runtime=docker-runc \
  21.           --exec-opt native.cgroupdriver=systemd \
  22.           --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
  23.           --init-path=/usr/libexec/docker/docker-init-current \
  24.           --seccomp-profile=/etc/docker/seccomp.json \
  25.           $OPTIONS \
  26.           $DOCKER_STORAGE_OPTIONS \
  27.           $DOCKER_NETWORK_OPTIONS \
  28.           $ADD_REGISTRY \
  29.           $BLOCK_REGISTRY \
  30.           $INSECURE_REGISTRY \
  31.           $REGISTRIES
  32. ExecReload=/bin/kill -s HUP $MAINPID
  33. LimitNOFILE=1048576
  34. LimitNPROC=1048576
  35. LimitCORE=infinity
  36. TimeoutStartSec=0
  37. Restart=on-abnormal
  38. KillMode=process

  39. [Install]
  40. WantedBy=multi-user.target
复制代码
2.清楚知道Docker的存储目录在哪里
  1. 默认目录:/var/lib/docker
复制代码
进行升级高版本docker


将低版本Docker卸载
  1. 不删除 /var/lib/docker 目录 就不会删除已安装的镜像及容器
复制代码
  1. [root@localhost docker]# yum list installed | grep docker
  2. docker.x86_64                       2:1.13.1-209.git7d71120.el7.centos @extras  
  3. docker-client.x86_64                2:1.13.1-209.git7d71120.el7.centos @extras  
  4. docker-common.x86_64                2:1.13.1-209.git7d71120.el7.centos @extras  
  5. [root@localhost ~]# yum -y remove docker*
复制代码
安装yum管理工具
  1. yum install -y yum-utils
复制代码
添加国内镜像源
  1. yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
复制代码
查看软件版本
  1. yum list docker-ce --showduplicates|sort -r

  2. docker-ce.x86_64            3:18.09.6-3.el7                     docker-ce-stable
  3. docker-ce.x86_64            3:18.09.5-3.el7                     docker-ce-stable
  4. docker-ce.x86_64            18.03.1.ce-1.el7.centos             docker-ce-stable
  5. docker-ce.x86_64            18.03.0.ce-1.el7.centos             docker-ce-stable
  6. docker-ce.x86_64            17.12.1.ce-1.el7.centos             docker-ce-stable
  7. docker-ce.x86_64            17.03.3.ce-1.el7                    docker-ce-stable
复制代码
安装指定版本的docker
  1. yum -y install docker-ce-18.03.1.ce-1.el7.centos
  2. [root@localhost ~]# systemctl start docker
  3. [root@localhost ~]# docker --version
  4. Docker version 18.03.1-ce, build 9ee9f40
复制代码
查看容器和镜像依然存在



启动容器测试:

报错①
  1. Error response from daemon: Unknown runtime specified docker-runc
复制代码
  1. 这是因为低版本升级到高版本之后不兼容 修改参数进行解决
复制代码
报错①解决方法:
  1. 更改/var/lib/docker/containers目录中的文件参数,把docker-runc替换为runc
复制代码
命令:
  1. grep -rl 'docker-runc' /var/lib/docker/containers/ | xargs sed -i 's/docker-runc/runc/g'
复制代码
  1. <strong>注:grep -rl:递归搜索目录和子目录,只列出含有匹配的文本行的文件名,而不显示具体的匹配内容</strong><strong>xargs:衔接执行之前得到的值</strong>
  2. <strong>总体意思是把/var/lib/docker/containers中含有‘docker-runc’的文件搜索出来,并把‘docker-runc’字符为runc</strong>
复制代码
重新启动docker
  1. systemctl restart docker
复制代码

报错②
  1. Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/09f8444f734ca18130ac4e2dafdcd3a19dd2986c9474bd0a50c87c0af559a831/merged: invalid argument
复制代码

报错②解决方法:
  1. 解决方案无非是SELINUX要么都关闭,要么都开启
复制代码
推荐修改CentOS下的/etc/selinux/config 将SELINUX=disabled 改成 SELINUX=permissive
  1. vi /etc/selinux/config
  2. # 找到SELINUX=enable修改为SELINUX=permissive
  3. SELINUX=permissive
  4. # 保存
  5. :wq
复制代码
或者修改docker关闭selinux
  1. vi /etc/sysconfig/docker
  2. # 找到OPTIONS="--selinux-enabled --log-driver=journald --signature-verification=false"
  3. # 删除 --selinux-enabled
  4. OPTIONS="--log-driver=journald --signature-verification=false"
  5. # 保存
  6. :wq
复制代码
  1. 另外docker-18.03已经废弃使用overlay1了,overlay2存储才是今后所支持的,因此不建议按照网上某文章的教程那样将docker的存储驱动改回overlay1。改回overlay1的方式只是治标不治本,正解是修改selinux配置。
复制代码
启动容器进行测试




至此低版本Docker升级高版本Docker完美结束~

总结

到此这篇关于低版本Docker升级高版本Docker的详细教程及成功避坑的文章就介绍到这了,更多相关低版本Docker升级高版本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/article/284039.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具