openEuler22.03LTS系统升级docker至26.1.4以支持启用ip6tables功能

本文记录了openEuler22.03LTS将docker升级由18.09.0升级至26.1.4的过程(当前docker最新版本为27.5.1,生产环境为保障稳定性,选择升级到上一个大版本26的最新小版本)。

一、现有环境

1、系统版本
bash 复制代码
[root@localhost opt]# cat /etc/os-release 
NAME="openEuler"
VERSION="22.03 LTS"
ID="openEuler"
VERSION_ID="22.03"
PRETTY_NAME="openEuler 22.03 LTS"
ANSI_COLOR="0;31"
2、docker版本
bash 复制代码
[root@localhost opt]# docker --version
Docker version 18.09.0, build 4ca0e26

二、升级准备

1、卸载现有版本
bash 复制代码
[root@localhost opt]# yum  remove docker -y      
Dependencies resolved.
=========================================================================================================================================================================================================================================
 Package                                                   Architecture                                       Version                                                          Repository                                           Size
=========================================================================================================================================================================================================================================
Removing:
 docker-engine                                             x86_64                                             2:18.09.0-335.oe2203                                             @update                                             160 M

Transaction Summary
=========================================================================================================================================================================================================================================
Remove  1 Package

Freed space: 160 M
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                                                                 1/1 
  Running scriptlet: docker-engine-2:18.09.0-335.oe2203.x86_64                                                                                                                                                                       1/1 
Removed /etc/systemd/system/multi-user.target.wants/docker.service.

  Erasing          : docker-engine-2:18.09.0-335.oe2203.x86_64                                                                                                                                                                       1/1 
  Running scriptlet: docker-engine-2:18.09.0-335.oe2203.x86_64                                                                                                                                                                       1/1 
  Verifying        : docker-engine-2:18.09.0-335.oe2203.x86_64                                                                                                                                                                       1/1 

Removed:
  docker-engine-2:18.09.0-335.oe2203.x86_64                                                                                                                                                                                              

Complete!
2、从docker官网下载目标软件包

下载链接:

docker-26.1.4官网下载

下载实作

bash 复制代码
[root@localhost opt]# wget https://download.docker.com/linux/static/stable/x86_64/docker-26.1.4.tgz
--2025-02-07 13:45:27--  https://download.docker.com/linux/static/stable/x86_64/docker-26.1.4.tgz
正在解析主机 download.docker.com (download.docker.com)... 3.170.229.46, 3.170.229.96, 3.170.229.111, ...
正在连接 download.docker.com (download.docker.com)|3.170.229.46|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:73759281 (70M) [application/x-tar]
正在保存至: "docker-26.1.4.tgz"

docker-26.1.4.tgz                                        100%[=====================================================================================================================================>]  70.34M   245KB/s  用时 4m 41s  

2025-02-07 13:50:09 (256 KB/s) - 已保存 "docker-26.1.4.tgz" [73759281/73759281])
[root@localhost opt]# ll
..
-rw-r--r--. 1 root root  71M  6月 18  2024 docker-26.1.4.tgz

三、升级软件

1、解压软件包
bash 复制代码
[root@localhost opt]# tar -xzvf docker-26.1.4.tgz 
docker/
docker/docker-init
docker/docker-proxy
docker/docker
docker/containerd-shim-runc-v2
docker/runc
docker/ctr
docker/dockerd
docker/containerd
[root@localhost opt]# ll docker
总用量 190M
-rwxr-xr-x. 1 AAAA AAAA  38M  6月  5  2024 containerd
-rwxr-xr-x. 1 AAAA AAAA  12M  6月  5  2024 containerd-shim-runc-v2
-rwxr-xr-x. 1 AAAA AAAA  19M  6月  5  2024 ctr
-rwxr-xr-x. 1 AAAA AAAA  37M  6月  5  2024 docker
-rwxr-xr-x. 1 AAAA AAAA  68M  6月  5  2024 dockerd
-rwxr-xr-x. 1 AAAA AAAA 692K  6月  5  2024 docker-init
-rwxr-xr-x. 1 AAAA AAAA 1.9M  6月  5  2024 docker-proxy
-rwxr-xr-x. 1 AAAA AAAA  15M  6月  5  2024 runc
2、复制文件到/usr/bin目录
bash 复制代码
[root@localhost opt]# cp docker/* /usr/bin
3、编写service文件
bash 复制代码
[root@localhost opt]# vi docker.service
...
[root@localhost opt]# cat docker.service 
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Environment="HTTP_PROXY=http://192.168.80.1:50691"
Environment="HTTPS_PROXY=http://192.168.80.1:50691"
Type=notify
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash

ExecStart=/usr/bin/dockerd $OPTIONS \
                           $DOCKER_STORAGE_OPTIONS \
                           $DOCKER_NETWORK_OPTIONS \
                           $INSECURE_REGISTRY
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process

Restart=on-failure 
StartLimitBurst=3 
StartLimitInterval=60s 

[Install]
WantedBy=multi-user.target
4、将service文件复制到相应文件夹
bash 复制代码
[root@localhost opt]# chmod 644 docker.service
[root@localhost opt]# cp docker.service /usr/lib/systemd/system/docker.service
5、启动服务
bash 复制代码
[root@localhost opt]# systemctl daemon-reload
[root@localhost opt]# systemctl start docker
[root@localhost opt]# systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
6、验证版本
bash 复制代码
[root@localhost opt]# docker --version
Docker version 26.1.4, build 5650f9b
[root@localhost opt]# docker version
Client:
 Version:           26.1.4
 API version:       1.45
 Go version:        go1.21.11
 Git commit:        5650f9b
 Built:             Wed Jun  5 11:27:57 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          26.1.4
  API version:      1.45 (minimum version 1.24)
  Go version:       go1.21.11
  Git commit:       de5c9cf
  Built:            Wed Jun  5 11:29:25 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.7.18
  GitCommit:        ae71819c4f5e67bb4d5ae76a6b735f29cc25774e
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

升级成功。

四、验证启用ip6tables功能

本次升级旨在解决openEuler22.03LTS原生docker不支持ip6tables的问题,,(docker engine 的版本从20.10.2及以上才开始支持ip6tables,这里ip6tables指由docker自动配置 IPv6 的防火墙规则。)

低版本docker引擎配置启用ip6tables,会出现以下报错日志无法启动

....systemd[1]: Starting Docker Application Container Engine...

...dockerd[5597]: unable to configure the Docker daemon with file /etc/docker/daemon.jso>

...systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE

...systemd[1]: docker.service: Failed with result 'exit-code'.

...: Failed to start Docker Application Container Engine.

...: Starting Docker Application Container Engine...

测试配置启用ip6tables并重启服务

bash 复制代码
[root@localhost opt]# vi /etc/docker/daemon.json
[root@localhost opt]# cat /etc/docker/daemon.json
{
    "ipv6": true,
    "fixed-cidr-v6": "2001:db8:1::/64",
    "experimental":true,
    "ip6tables": true
}
[root@localhost opt]# systemctl restart docker

正常通过。

相关推荐
千里镜宵烛几秒前
Linux--进程概念
linux·运维·服务器
无聊的小坏坏3 分钟前
Linux 进程调度与管理:从内核管理到调度机制的深度解析
linux·ubuntu
中云时代-防御可测试-小余19 分钟前
高防服务器价格高原因分析
运维·服务器·tcp/ip·安全·web安全·udp·ddos
FungLeo19 分钟前
node 进程管理工具 pm2 的详细说明 —— 一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录 7
linux·服务器·ubuntu·pm2·node 进程管理
IT葛大侠1 小时前
OSPF域间路由
运维·网络·计算机网络
搬码临时工1 小时前
有公网ip但外网访问不到怎么办?内网IP端口映射公网连接常见问题和原因
运维·服务器·网络·网络协议·tcp/ip·php·远程工作
huangyuchi.2 小时前
【Linux】编译器gcc/g++及其库的详细介绍
linux·运维·服务器·笔记·编译器·gcc·g++
liuyunluoxiao4 小时前
内存管理【Linux操作系统】
linux
独行soc4 小时前
2025年渗透测试面试题总结-腾讯[实习]安全研究员(题目+回答)
linux·安全·web安全·面试·职场和发展·渗透测试
egoist20234 小时前
【Linux仓库】冯诺依曼体系结构与操作系统【进程·壹】
linux·运维·服务器·开发语言·操作系统·冯诺依曼体系结构