低版本Docker升级高版本Docker的详细教程及成功避坑
目录
-
安装低版本Docker
-
查看Docker版本宿主机创建挂载目录下载镜像并创建容器登录容器查看映射访问测试
在升级前确定几个重点:
-
1.原配置文件备份一下2.清楚知道Docker的存储目录在哪里
进行升级高版本docker
-
将低版本Docker卸载安装yum管理工具添加国内镜像源查看软件版本安装指定版本的docker查看容器和镜像依然存在启动容器测试:启动容器进行测试
总结
操作系统 | 服务 |
Centos7 | Docker |
安装低版本Docker
由于Centos7自带的yum源中的Docker版本过低,先安装默认的版本
- yum -y install docker
复制代码
查看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
复制代码
访问测试
在升级前确定几个重点:
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=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_NEТWORK_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
复制代码
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/ | 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=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升级高版本内容请搜索软件技术网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件技术网!
原创文章,作者:starterknow,如若转载,请注明出处:https://www.starterknow.com/105209.html