在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.tgz
第2步:解压并安装
# 解压
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 正常通信
所以需要在 “复制文件到系统目录” 之前运行如下操作:
# 停止 Docker 和 Containerd
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