当前位置:首页 » 《随便一记》 » 正文

低版本Docker升级高版本Docker【详细教程、成功避坑】

10 人参与  2022年10月30日 08:17  分类 : 《随便一记》  评论

点击全文阅读


? 作者:互联网-小啊宇

? 简介: CSDN 运维领域创作者、阿里云专家博主。目前从事 Kubernetes运维相关工作,擅长Linux系统运维、开源监控软件维护、Kubernetes容器技术、CI/CD持续集成、自动化运维、开源软件部署维护等领域。
? 博客首页:CSDN【互联网-小阿宇】 、阿里云【互联网-小阿宇】
? 欢迎小伙伴们点赞?、收藏⭐、留言?

在这里插入图片描述

?低版本Docker升级高版本Docker【详细教程、成功避坑】?

⭐安装低版本Docker?查看Docker版本?宿主机创建挂载目录?下载镜像并创建容器?登录容器查看映射?访问测试 ⭐在升级前确定几个重点:?1.原配置文件备份一下?2.清楚知道Docker的存储目录在哪里 ⭐进行升级高版本docker?将低版本Docker卸载? 安装yum管理工具? 添加国内镜像源? 查看软件版本?安装指定版本的docker?查看容器和镜像依然存在?启动容器测试:报错①`Error response from daemon: Unknown runtime specified docker-runc`报错①解决方法:报错②`Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/09f8444f734ca18130ac4e2dafdcd3a19dd2986c9474bd0a50c87c0af559a831/merged: invalid argument`报错②解决方法: ?启动容器进行测试


操作系统服务
Centos7Docker

⭐安装低版本Docker

由于Centos7自带的yum源中的Docker版本过低,先安装默认的版本

yum -y install docker

?查看Docker版本

[root@Ayu ~]# docker --versionDocker version 1.13.1, build 7d71120/1.13.1

?宿主机创建挂载目录

mkdir -p /test/nginxcd /test/nginx && mkdir a b c d

?下载镜像并创建容器

docker pull nginxdocker run -itd -v /test/nginx:/test/nginx -p 80:80 --name nginx nginx

?登录容器查看映射

docker exec -it nginx bashroot@daea0c2b307b:/# cd /test/nginxroot@daea0c2b307b:/test/nginx# lsa  b  c  d

?访问测试

在这里插入图片描述

⭐在升级前确定几个重点:

?1.原配置文件备份一下

[root@localhost ~]# cat /usr/lib/systemd/system/docker.service [Unit]Description=Docker Application Container EngineDocumentation=http://docs.docker.comAfter=network.targetWants=docker-storage-setup.serviceRequires=docker-cleanup.timer[Service]Type=notifyNotifyAccess=mainEnvironmentFile=-/run/containers/registries.confEnvironmentFile=-/etc/sysconfig/dockerEnvironmentFile=-/etc/sysconfig/docker-storageEnvironmentFile=-/etc/sysconfig/docker-networkEnvironment=GOTRACEBACK=crashEnvironment=DOCKER_HTTP_HOST_COMPAT=1Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbinExecStart=/usr/bin/dockerd-current \          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \          --default-runtime=docker-runc \          --exec-opt native.cgroupdriver=systemd \          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \          --init-path=/usr/libexec/docker/docker-init-current \          --seccomp-profile=/etc/docker/seccomp.json \          $OPTIONS \          $DOCKER_STORAGE_OPTIONS \          $DOCKER_NETWORK_OPTIONS \          $ADD_REGISTRY \          $BLOCK_REGISTRY \          $INSECURE_REGISTRY \  $REGISTRIESExecReload=/bin/kill -s HUP $MAINPIDLimitNOFILE=1048576LimitNPROC=1048576LimitCORE=infinityTimeoutStartSec=0Restart=on-abnormalKillMode=process[Install]WantedBy=multi-user.target

?2.清楚知道Docker的存储目录在哪里

默认目录:/var/lib/docker

⭐进行升级高版本docker

?将低版本Docker卸载

不删除 /var/lib/docker 目录 就不会删除已安装的镜像及容器

[root@localhost docker]# yum list installed | grep dockerdocker.x86_64                       2:1.13.1-209.git7d71120.el7.centos @extras  docker-client.x86_64                2:1.13.1-209.git7d71120.el7.centos @extras  docker-common.x86_64                2:1.13.1-209.git7d71120.el7.centos @extras  [root@localhost ~]# yum -y remove docker*

? 安装yum管理工具

yum install -y yum-utils

? 添加国内镜像源

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

? 查看软件版本

yum list docker-ce --showduplicates|sort -rdocker-ce.x86_64            3:18.09.6-3.el7                     docker-ce-stabledocker-ce.x86_64            3:18.09.5-3.el7                     docker-ce-stabledocker-ce.x86_64            18.03.1.ce-1.el7.centos             docker-ce-stabledocker-ce.x86_64            18.03.0.ce-1.el7.centos             docker-ce-stabledocker-ce.x86_64            17.12.1.ce-1.el7.centos             docker-ce-stabledocker-ce.x86_64            17.03.3.ce-1.el7                    docker-ce-stable

?安装指定版本的docker

yum -y install docker-ce-18.03.1.ce-1.el7.centos[root@localhost ~]# systemctl start docker[root@localhost ~]# docker --versionDocker version 18.03.1-ce, build 9ee9f40

?查看容器和镜像依然存在

在这里插入图片描述

?启动容器测试:

报错①Error response from daemon: Unknown runtime specified docker-runc

在这里插入图片描述

这是因为低版本升级到高版本之后不兼容 修改参数进行解决

报错①解决方法:

更改/var/lib/docker/containers目录中的文件参数,把docker-runc替换为runc

命令:

grep -rl 'docker-runc' /var/lib/docker/containers/ | xargs sed -i 's/docker-runc/runc/g'

注:grep -rl:递归搜索目录和子目录,只列出含有匹配的文本行的文件名,而不显示具体的匹配内容
xargs:衔接执行之前得到的值

总体意思是把/var/lib/docker/containers中含有‘docker-runc’的文件搜索出来,并把‘docker-runc’字符为runc

重新启动docker

systemctl restart docker

在这里插入图片描述

报错②Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/09f8444f734ca18130ac4e2dafdcd3a19dd2986c9474bd0a50c87c0af559a831/merged: invalid argument

在这里插入图片描述

报错②解决方法:

解决方案无非是SELINUX要么都关闭,要么都开启

推荐修改CentOS下的/etc/selinux/config 将SELINUX=disabled 改成 SELINUX=permissive

vi /etc/selinux/config# 找到SELINUX=enable修改为SELINUX=permissiveSELINUX=permissive# 保存:wq

或者修改docker关闭selinux

vi /etc/sysconfig/docker# 找到OPTIONS="--selinux-enabled --log-driver=journald --signature-verification=false"# 删除 --selinux-enabledOPTIONS="--log-driver=journald --signature-verification=false"# 保存:wq

另外docker-18.03已经废弃使用overlay1了,overlay2存储才是今后所支持的,因此不建议按照网上某文章的教程那样将docker的存储驱动改回overlay1。改回overlay1的方式只是治标不治本,正解是修改selinux配置。

?启动容器进行测试

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

至此低版本Docker升级高版本Docker完美结束~!
在这里插入图片描述


点击全文阅读


本文链接:http://zhangshiyu.com/post/46212.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1