🎈 作者:互联网-小啊宇
🎈 简介: CSDN 运维领域创作者、阿里云专家博主。目前从事 Kubernetes运维相关工作,擅长Linux系统运维、开源监控软件维护、Kubernetes容器技术、CI/CD持续集成、自动化运维、开源软件部署维护等领域。
🎈 博客首页:CSDN【互联网-小阿宇】 、阿里云【互联网-小阿宇】
🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬
🔥低版本Docker升级高版本Docker【详细教程、成功避坑】🔥
操作系统服务Centos7Docker
⭐安装低版本Docker
由于Centos7自带的yum源中的Docker版本过低,先安装默认的版本
yum -y installdocker
🍒查看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
🍒登录容器查看映射
dockerexec -it nginx bash
root@daea0c2b307b:/# cd /test/nginx
root@daea0c2b307b:/test/nginx# ls
a b c d
🍒访问测试
⭐在升级前确定几个重点:
🍒1.原配置文件备份一下
[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=1Environment=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\$REGISTRIESExecReload=/bin/kill -s HUP $MAINPIDLimitNOFILE=1048576LimitNPROC=1048576LimitCORE=infinity
TimeoutStartSec=0Restart=on-abnormal
KillMode=process
[Install]WantedBy=multi-user.target
🍒2.清楚知道Docker的存储目录在哪里
默认目录:
/var/lib/docker
⭐进行升级高版本docker
🍒将低版本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管理工具
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
🍒安装指定版本的docker
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
🍒查看容器和镜像依然存在
🍒启动容器测试:
报错①
Error response from daemon: Unknown runtime specified docker-runc
这是因为低版本升级到高版本之后不兼容 修改参数进行解决
报错①解决方法:
更改/var/lib/docker/containers目录中的文件参数,把docker-runc替换为runc
命令:
grep -rl 'docker-runc' /var/lib/docker/containers/ |xargssed -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完美结束~!
版权归原作者 互联网-小阿宇 所有, 如有侵权,请联系我们删除。