当前位置 : 主页 > 操作系统 > centos >

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

来源:互联网 收集:自由互联 发布时间:2023-05-14
目录 安装低版本Docker 查看Docker版本 宿主机创建挂载目录 下载镜像并创建容器 登录容器查看映射 访问测试 在升级前确定几个重点: 1.原配置文件备份一下 2.清楚知道Docker的存储目录在
目录
  • 安装低版本Docker
    • 查看Docker版本
    • 宿主机创建挂载目录
    • 下载镜像并创建容器
    • 登录容器查看映射
    • 访问测试
  • 在升级前确定几个重点:
    • 1.原配置文件备份一下
    • 2.清楚知道Docker的存储目录在哪里
  • 进行升级高版本docker
    • 将低版本Docker卸载
    • 安装yum管理工具
    • 添加国内镜像源
    • 查看软件版本
    • 安装指定版本的docker
    • 查看容器和镜像依然存在
    • 启动容器测试:
    • 启动容器进行测试
  • 总结
    操作系统服务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升级高版本内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

    网友评论