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

 更新时间:2023年05月11日 11:14:20   作者:互联网-小阿宇  
如果我们使用docker来管理容器,那么保持docker引擎的更新将会是十分重要的,下面这篇文章主要给大家介绍了关于低版本Docker升级高版本Docker的详细教程及成功避坑,文中通过图文介绍的非常详细,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

操作系统服务
Centos7Docker

安装低版本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_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

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升级高版本内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • Docker 批量删除容器或镜像的操作方法

    Docker 批量删除容器或镜像的操作方法

    这篇文章主要介绍了Docker 批量删除容器或镜像的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 在没有Docker缓存的情况下构建镜像的方法分享

    在没有Docker缓存的情况下构建镜像的方法分享

    这篇文章主要给大家介绍了如何在没有Docker缓存的情况下构建镜像的解决方法,文章通过代码示例介绍的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2023-07-07
  • 如何使用?Dockerfile?创建一个简单容器

    如何使用?Dockerfile?创建一个简单容器

    这篇文章主要介绍了如何使用?Dockerfile?创建一个简单容器,Dockerfile?是用于指导?docker?创建自定义?image?的一系列指令,是用于创建?image?的蓝图,下文更多详细介绍需要的小伙伴可以参考一下
    2022-04-04
  • .NETCore Docker实现容器化与私有镜像仓库管理

    .NETCore Docker实现容器化与私有镜像仓库管理

    Docker是用Go语言编写基于Linux操作系统的一些特性开发的,其提供了操作系统级别的抽象,是一种容器管理技术,它隔离了应用程序对基础架构(操作系统等)的依赖。这篇文章主要介绍了.NETCore Docker实现容器化与私有镜像仓库管理,需要的朋友可以参考下
    2019-08-08
  • docker images,info,-d等命令报错的解决方法

    docker images,info,-d等命令报错的解决方法

    最近刚接触Docker,所以在学习的过程中出现了好多的问题,百度上不好找,谷歌的话,楼主不会翻墙。后来通过各方求助和细心研究解决了一些遇到的问题,现在将遇到的问题和解决方法分享给大家,有需要的朋友们可以参考借鉴。
    2016-11-11
  • docker中使用mysql数据库详解(在局域网访问)

    docker中使用mysql数据库详解(在局域网访问)

    这篇文章主要给大家介绍了在docker中使用mysql数据库,在局域网访问的相关资料,文中通过图文以及示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • Docker镜像优化打包速度思考

    Docker镜像优化打包速度思考

    本文主要介绍了Docker镜像优化打包速度思考,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • docker mysql修改root账号密码并赋予权限

    docker mysql修改root账号密码并赋予权限

    本文主要介绍了docker mysql修改root账号密码并赋予权限,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • jenkins+docker+nginx+nodejs持续集成部署vue前端项目

    jenkins+docker+nginx+nodejs持续集成部署vue前端项目

    本文主要介绍了jenkins+docker+nginx+nodejs持续集成部署vue前端项目,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 解决docker images 镜像消失的问题

    解决docker images 镜像消失的问题

    这篇文章主要介绍了解决docker images 镜像消失的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论

?


http://www.vxiaotou.com