正文

低版本Docker升级高版本Docker的详细教程及成功避坑(docker的版本命令)没想到

文章摘要

这篇文章详细介绍了如何在Centos7系统中从低版本升级到高版本的Docker,涵盖以下核心内容: 1. **升级准备**: - 备份原配置文件。 - 确认Docker的存储目录位置。 2. **安装低版本Docker**: - 使用`yum -y install docker`安装默认版本。 3. **高版本升级过程**: - 使用`yum`更新软件并安装指定版本的Docker。 - 检查升级后的容器和镜像状态。 4. **常见问题及解决方法**: - **报错①**:由于高版本Docker与低版本不兼容,解决方法是修改`/var/lib/docker/containers`目录中的`docker-runc`为`runc`。 - **报错②**:调整`/etc/selinux/config`或修改`/etc/sysconfig/docker`以设置`SELINUX=permissive`或关闭/启用SELINUX。 5. **关键点总结**: - 在升级前备份配置文件并清楚了解Docker的存储目录。 - 升级高版本Docker应谨慎操作,避免使用过时的存储驱动。 - 修改SELINUX配置是解决问题的有效方法。 通过以上步骤和解决方法,用户可以顺利进行Docker版本升级,避免常见问题并确保系统正常运行。


目录安装低版本Docker查看Docker版本宿主机创建挂载目录下载镜像并创建容器登录容器查看映射访问测试在升级前确定几个重点:1.原配置文件备份一下2.清楚知道Docker的存储目录在哪里进行升级高版本docker将低版本Docker卸载安装yum管理工具添加国内镜像源查看软件版本安装指定版本的docker查看容器和镜像依然存在启动容器测试:启动容器进行测试总结
操作系统服务Centos7Docker

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

yum -y install docker
[root@Ayu ~]# docker –version Docker version 1.13.1, build 7d71120/1.13.1
mkdir -p /test/nginx cd /test/nginx && mkdir a b c d
docker pull nginx docker run -itd -v /test/nginx:/test/nginx -p 80:80 –name nginx nginx
docker exec -it nginx bash root@daea0c2b307b:/# cd /test/nginx root@daea0c2b307b:/test/nginx# ls a b c d

[root@localhost ~]# cat /usr/lib/systemd/system/docker.service [Unit] Description=Docker Application Container Engine Documentation=http://docs.docker.com After=network.target Wants=docker-storage-setup.service Requires=docker-cleanup.timer [Service] Type=notify NotifyAccess=main EnvironmentFile=-/run/containers/registries.conf EnvironmentFile=-/etc/sysconfig/docker EnvironmentFile=-/etc/sysconfig/docker-storage EnvironmentFile=-/etc/sysconfig/docker-network Environment=GOTRACEBACK=crash Environment=DOCKER_HTTP_HOST_COMPAT=1 Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin ExecStart=/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 \ $REGISTRIES ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity TimeoutStartSec=0 Restart=on-abnormal KillMode=process [Install] WantedBy=multi-user.target

默认目录:/var/lib/docker

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

[root@localhost docker]# yum list installed | grep docker docker.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 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 -r docker-ce.x86_64 3:18.09.6-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.5-3.el7 docker-ce-stable docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.03.3.ce-1.el7 docker-ce-stable
yum -y install docker-ce-18.03.1.ce-1.el7.centos [root@localhost ~]# systemctl start docker [root@localhost ~]# docker –version Docker version 18.03.1-ce, build 9ee9f40

报错①

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

报错①解决方法:

更改/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

报错②

报错②解决方法:

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

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

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

或者修改docker关闭selinux

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

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

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

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

您可能感兴趣的文章:docker拉取镜像查看版本的方法步骤docker如何查询镜像版本信息