Fedora40操作系统中离线安装Docker20.10.7 + Containerd1.5.9 + Docker Compose2.20.0

110 阅读1分钟

在Fedora40操作系统中,通过下载安装包,搭建Docker环境。

安装docker

1步:下载安装包
mkdir docker-20.10.7
cd docker-20.10.7
wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.7.tgz2步:解压并安装
# 解压
tar -zxvf docker-20.10.7.tgz

# 复制二进制文件到系统目录
sudo cp docker/* /usr/bin/

# 设置执行权限
sudo chmod +x /usr/bin/docker*


第3步:创建docker用户组
sudo groupadd docker

第4步:创建systemd服务文件,分2次运行

第一次运行
# 创建docker.service
sudo tee /usr/lib/systemd/system/docker.service > /dev/null <<'EOF'
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket

[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process

[Install]
WantedBy=multi-user.target
EOF

-----------------------------------------------

第二次运行
# 创建docker.socket
sudo tee /usr/lib/systemd/system/docker.socket > /dev/null <<'EOF'
[Unit]
Description=Docker Socket for the API

[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target
EOF

安装Containerd

Docker 20.10.7 官方要求 Containerd >=1.5.9

# 下载Containerd 1.5.9
wget https://github.com/containerd/containerd/releases/download/v1.5.9/containerd-1.5.9-linux-amd64.tar.gz

# 复制文件到系统目录

sudo tar -C /usr/local -xzf containerd-1.5.9-linux-amd64.tar.gz 
  
---------------------------------------------------------------------------
以下内容是选择运行,因为我先安装了一个Containerd 1.5.2,导致问题:dockerd 无法与旧版 Containerd 正常通信

所以需要在 “复制文件到系统目录” 之前运行如下操作:
# 停止 DockerContainerd
sudo systemctl stop docker containerd

# 确保所有容器运行时进程已终止
sudo pkill -9 containerd
sudo pkill -9 dockerd

#强制覆盖安装 Containerd
# 解压覆盖旧版本
sudo tar -C /usr/local -xzf containerd-1.5.9-linux-amd64.tar.gz --overwrite

---------------------------------------------------------------------------


# 创建或修改 Containerd 的主配置文件
sudo tee /etc/containerd/config.toml <<'EOF'
version = 2

[grpc]
  address = "/run/containerd/containerd.sock"

[plugins]
  [plugins."io.containerd.grpc.v1.cri"]
    [plugins."io.containerd.grpc.v1.cri".cni]
      bin_dir = "/usr/libexec/cni/"
      conf_dir = "/etc/cni/net.d"
  [plugins."io.containerd.internal.v1.opt"]
    path = "/var/lib/containerd/opt"
EOF


# 确保 containerd 可执行文件在 PATH 中
sudo ln -sf /usr/local/bin/containerd /usr/bin/containerd

# 验证路径
which containerd  # 应输出 /usr/bin/containerd

# 重启 Containerd
sudo systemctl start containerd

# 重启 Docker
sudo systemctl start docker

# 检查版本
containerd --version  # 应显示 1.5.9
或者
docker info | grep "Containerd Version"  # 应匹配 1.5.9

# 重启Containerd
sudo systemctl restart containerd



# 创建containerd服务文件
sudo tee /usr/lib/systemd/system/containerd.service > /dev/null <<'EOF'
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target
EOF


创建Docker配置


# 创建配置目录
sudo mkdir -p /etc/docker

# 创建daemon.json配置文件
sudo tee /etc/docker/daemon.json > /dev/null <<'EOF'
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://registry.docker-cn.com"
  ]
}
EOF

启动服务

# 重新加载systemd配置
sudo systemctl daemon-reload

# 启动containerd
sudo systemctl enable containerd
sudo systemctl start containerd

# 启动Docker
sudo systemctl enable docker.socket
sudo systemctl enable docker.service
sudo systemctl start docker

第8步:验证安装
sudo docker version
sudo docker info

安装Docker Compose(推荐)

# 下载docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 设置执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose --version

测试Docker安装

# 运行hello-world测试
sudo docker run hello-world

# 查看Docker状态
sudo systemctl status docker

# 查看Docker镜像
sudo docker images

# 查看运行的容器
sudo docker ps