安装
- 1: 在 Debian13 上安装
- 1.1: 在线安装 Docker
- 1.2: 离线安装 Docker
- 2: 在 Debian12 上安装
- 2.1: 在线安装 Docker
- 2.2: 离线安装 Docker
- 3: linux mint 22
- 4: 安装后的镜像加速
- 5: 安装 cri-dockerd
1 - 在 Debian13 上安装
1.1 - 在线安装 Docker
安装docker
参考 docker 官网的安装文档:
https://docs.docker.com/engine/install/debian/
卸载旧版本
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
用 apt 安装
添加 docker 的 apt 仓库:
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
如果想使用 neuxs 的 apt 仓库来进行加速,可以修改 apt 源为本地 nexus 的代理源。
参考: http://skyao.net/learning-debian/docs/develop/tools/nexus/#apt-%E4%BB%93%E5%BA%93
然后更新 apt 源:
sudo apt-get update
如果要安装最新版本,可以直接:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
也可以选择要安装版本。查看可选的 docker 版本:
apt-cache madison docker-ce | awk '{ print $3 }'
列出的版本有:
$ apt-cache madison docker-ce | awk '{ print $3 }'
5:29.1.1-1~debian.13~trixie
5:29.1.0-1~debian.13~trixie
5:29.0.4-1~debian.13~trixie
5:29.0.3-1~debian.13~trixie
5:29.0.2-1~debian.13~trixie
5:29.0.1-1~debian.13~trixie
5:29.0.0-1~debian.13~trixie
5:28.5.2-1~debian.13~trixie
5:28.5.1-1~debian.13~trixie
5:28.5.0-1~debian.13~trixie
......
这里可以选择使用一个版本,我直接选了最新的 5:29.1.1-1 版本, 执行安装命令:
VERSION_STRING=5:29.1.1-1~debian.13~trixie
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
安装完成后检验一下:
sudo docker run hello-world
查看安装的版本:
$ docker --version
Docker version 29.1.1, build 0aedba5
安装后设置
参考 docker 官网的设置文档:
https://docs.docker.com/engine/install/linux-postinstall/
设置权限避免每次sudo
为了以非 root 用户使用 docker, 可以将用户加入 “docker” 组.
# sudo groupadd docker
sudo usermod -aG docker $USER
重新登录之后生效。或者用下面的命令直接生效:
newgrp docker
验证一下:
docker run hello-world
设置 docker 为系统服务
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
取消 apt source 更新
docker 安装之后,没有必要时刻保持更新,因此可以取消 apt source的设置,加速 apt update 的执行:
sudo vi /etc/apt/sources.list.d/docker.list
安装 docker compose
可以选择用 apt 安装:
sudo apt-get install docker-compose
但安装出来的不是最新版本:
$ docker-compose --version
docker-compose version 1.29.2, build 5becea4c
要安装最新的版本,可以手工下载:
https://github.com/docker/compose/releases
可以远程下载最新的版本:
wget https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-x86_64
也可以从开发服务器上下载:
wget http://192.168.3.193/downloads/docker-compose/docker-compose-linux-x86_64
安装:
sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
验证:
$ docker-compose --version
Docker Compose version v2.40.3
参考资料
1.2 - 离线安装 Docker
制作离线安装包
参考在线安装的方式, 同样需要先添加 docker 的 apt 仓库,然后找到需要安装的版本, 下载离线安装包。
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
注意:要在一个没有安装 docker 的机器上下载。比如从 debian 的 basic 模板 clone,不要从 dev 模板 clone.
# 创建临时目录
mkdir -p ~/temp/docker-offline && cd ~/temp/docker-offline
VERSION_STRING=5:29.1.1-1~debian.13~trixie
# 下载 Docker CE 的 .deb 包(替换版本号为最新版)
apt-get download docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
# 下载所有依赖(可能需要运行多次直到无新依赖)
apt-get download $(apt-cache depends docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin | grep -E 'Depends|Recommends' | cut -d ':' -f 2 | tr -d ' ' | grep -v "^docker" | sort -u)
# 下载 iptables 的几个依赖包
apt-get download libip4tc2 libip6tc2 libnetfilter-conntrack3 libnfnetlink0
参考下载安装文档,下载最新的 docker-compose 离线安装包:
wget https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-x86_64
完成后的离线安装包如下:
$ ls -lh
total 175M
-rw-r--r-- 1 sky sky 694K Apr 11 2025 apparmor_4.1.0-1_amd64.deb
-rw-r--r-- 1 sky sky 158K Apr 19 2025 ca-certificates_20250419_all.deb
-rw-r--r-- 1 sky sky 23M Nov 29 00:12 containerd.io_2.2.0-2~debian.13~trixie_amd64.deb
-rw-r--r-- 1 sky sky 16M Nov 29 00:08 docker-buildx-plugin_0.30.1-1~debian.13~trixie_amd64.deb
-rw-r--r-- 1 sky sky 21M Nov 29 00:08 docker-ce_5%3a29.1.1-1~debian.13~trixie_amd64.deb
-rw-r--r-- 1 sky sky 16M Nov 29 00:08 docker-ce-cli_5%3a29.1.1-1~debian.13~trixie_amd64.deb
-rw-rw-r-- 1 sky sky 74M Oct 30 17:20 docker-compose-linux-x86_64
-rw-r--r-- 1 sky sky 14M Nov 5 18:19 docker-compose-plugin_2.40.3-1~debian.13~trixie_amd64.deb
-rw-r--r-- 1 sky sky 8.5M Aug 23 05:05 git_1%3a2.47.3-0+deb13u1_amd64.deb
-rw-r--r-- 1 sky sky 39K Aug 23 05:05 init-system-helpers_1.69~deb13u1_all.deb
-rw-r--r-- 1 sky sky 353K Nov 20 2024 iptables_1.8.11-2_amd64.deb
-rw-r--r-- 1 sky sky 2.8M Aug 6 02:48 libc6_2.41-12_amd64.deb
-rw-r--r-- 1 sky sky 20K Nov 20 2024 libip4tc2_1.8.11-2_amd64.deb
-rw-r--r-- 1 sky sky 20K Nov 20 2024 libip6tc2_1.8.11-2_amd64.deb
-rw-r--r-- 1 sky sky 42K Sep 26 2024 libnetfilter-conntrack3_1.1.0-1_amd64.deb
-rw-r--r-- 1 sky sky 15K Mar 29 2024 libnfnetlink0_1.0.2-3_amd64.deb
-rw-r--r-- 1 sky sky 325K Jun 30 00:49 libnftables1_1.1.3-1_amd64.deb
-rw-r--r-- 1 sky sky 51K Mar 21 2025 libseccomp2_2.6.0-2_amd64.deb
-rw-r--r-- 1 sky sky 443K Oct 19 20:34 libsystemd0_257.9-1~deb13u1_amd64.deb
-rw-r--r-- 1 sky sky 75K Jun 30 00:49 nftables_1.1.3-1_amd64.deb
-rw-r--r-- 1 sky sky 62K Aug 23 2023 pigz_2.8-1_amd64.deb
-rw-r--r-- 1 sky sky 862K Jul 30 20:31 procps_2%3a4.0.4-9_amd64.deb
-rw-r--r-- 1 sky sky 645K Apr 4 2025 xz-utils_5.8.1-1_amd64.deb
将这个离线安装包压缩成一个 tar 包(注意要加入下面提到的安装脚本), 然后复制到 devserver 上以便后续使用:
cd ~/temp/
tar -czvf docker-offline-debian13-v29.1.1-1.tar.gz docker-offline
scp ./docker-offline-debian13-v29.1.1-1.tar.gz sky@192.168.3.193:/home/sky/temp
# 用 sky 帐号登录 192.168.3.193 机器后再执行:
# 安全期间不容许 root 帐号直接 ssh 登录
ssh sky@192.168.3.193
sudo mv ~/temp/docker-offline-debian13-v29.1.1-1.tar.gz /mnt/data/downloads/docker
用浏览器打开如下地址就可以看到离线安装包:
http://192.168.3.193/downloads/docker/
离线安装
获取离线安装文件
在某台没有安装 docker 的机器上,比如重新从 debian basic 模板 clone 一个新的虚拟机.
下载离线安装包到本地:
mkdir -p ~/temp/ && cd ~/temp/
wget http://192.168.3.193/downloads/docker/docker-offline-debian13-v29.1.1-1.tar.gz
解压离线安装包:
tar -xvf docker-offline-debian13-v29.1.1-1.tar.gz
手工安装 docker
备注: 这里的操作仅仅是用来为后面的离线安装包做验证。
备注2: 后面使用脚本安装,这里的版本信息就没有及时更新了。
cd ~/temp/docker-offline
# 安装各种依赖
sudo dpkg -i apparmor_4.1.0-1_amd64.deb
sudo dpkg -i ca-certificates_20250419_all.deb
sudo dpkg -i libc6_2.41-12_amd64.deb
sudo dpkg -i libseccomp2_2.6.0-2_amd64.deb
sudo dpkg -i libsystemd0_257.8-1\~deb13u2_amd64.deb
sudo dpkg -i pigz_2.8-1_amd64.deb
sudo dpkg -i git_1%3a2.47.3-0+deb13u1_amd64.deb
sudo dpkg -i procps_2%3a4.0.4-9_amd64.deb
sudo dpkg -i xz-utils_5.8.1-1_amd64.deb
# 安装 iptables 和它的依赖
sudo dpkg -i libnfnetlink0_1.0.2-3_amd64.deb
sudo dpkg -i libnetfilter-conntrack3_1.1.0-1_amd64.deb
sudo dpkg -i libip4tc2_1.8.11-2_amd64.deb
sudo dpkg -i libip6tc2_1.8.11-2_amd64.deb
sudo dpkg -i iptables_1.8.11-2_amd64.deb
# 安装 docker
sudo dpkg -i containerd.io_2.1.5-1\~debian.13\~trixie_amd64.deb
sudo dpkg -i docker-buildx-plugin_0.29.1-1\~debian.13\~trixie_amd64.deb
sudo dpkg -i docker-ce-cli_5%3a29.0.0-1\~debian.13\~trixie_amd64.deb
sudo dpkg -i docker-ce_5%3a29.0.0-1\~debian.13\~trixie_amd64.deb
sudo dpkg -i docker-compose-plugin_2.40.3-1\~debian.13\~trixie_amd64.deb
添加用户到 docker 组:
sudo usermod -aG docker $USER
newgrp docker
启动 docker 服务:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
设置 docker 的镜像源:
sudo mkdir -p /etc/docker && sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["http://192.168.3.193:5000/"],
"insecure-registries": ["192.168.3.193:5000"]
}
EOF
验证一下:
docker run hello-world
手工安装 docker-compose
sudo mv ./docker-compose-linux-x86_64 /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
验证一下:
docker-compose version
制作离线安装脚本
离线安装避免在线安装的网络问题,非常方便,考虑写一个离线安装脚本,方便以后使用。
cd ~/temp
vi install_docker_offline_debian13.zsh
内容为:
#!/usr/bin/env zsh
# ------------------------------------------------------------
# Docker & Docker Compose 离线安装脚本 (Debian 13)
# 前提条件:
# 1. 所有 .deb 文件和 docker-compose 二进制文件已放在 ~/docker-offline
# ------------------------------------------------------------
set -e # 遇到错误立即退出
DOCKER_OFFLINE_DIR="./docker-offline"
# 检查是否在 Debian 13 上运行
if ! grep -q "Debian GNU/Linux 13" /etc/os-release; then
echo "❌ 错误:此脚本仅适用于 Debian 13!"
exit 1
fi
# 检查是否已安装 Docker
if command -v docker &>/dev/null; then
echo "⚠️ Docker 已安装,跳过安装步骤。"
exit 0
fi
# 检查离线目录是否存在
if [[ ! -d "$DOCKER_OFFLINE_DIR" ]]; then
echo "❌ 错误:离线目录 $DOCKER_OFFLINE_DIR 不存在!"
exit 1
fi
echo "🔧 开始离线安装 Docker 和 Docker Compose..."
# ------------------------------------------------------------
# 1. 安装 Docker CE 及其依赖
# ------------------------------------------------------------
echo "📦 安装 Docker CE 的依赖包..."
cd "$DOCKER_OFFLINE_DIR"
# 按顺序安装依赖(防止 dpkg 报错)
for pkg in apparmor ca-certificates libc6 libseccomp2 libsystemd0 pigz git procps xz-utils libip6tc2 libnfnetlink0 libnetfilter-conntrack3 libip4tc2 iptables ; do
if ls "${pkg}"*.deb &>/dev/null; then
echo "➡️ 正在安装: ${pkg}"
sudo dpkg -i "${pkg}"*.deb || true # 忽略部分错误,后续用 apt-get -f 修复
fi
done
# 修复依赖关系
echo "🛠️ 修复依赖关系..."
sudo apt-get -f install -y
# 按顺序安装 docker 组件(防止 dpkg 报错)
echo "📦 安装 Docker CE 组件..."
for pkg in containerd.io docker-buildx-plugin docker-ce-cli docker-ce docker-compose-plugin; do
if ls "${pkg}"*.deb &>/dev/null; then
echo "➡️ 正在安装: ${pkg}"
sudo dpkg -i "${pkg}"*.deb || true # 忽略部分错误,后续用 apt-get -f 修复
fi
done
# 修复依赖关系
echo "🛠️ 修复依赖关系..."
sudo apt-get -f install -y
# ------------------------------------------------------------
# 2. 安装 Docker Compose
# ------------------------------------------------------------
echo "📦 安装 Docker Compose..."
if [[ -f "./docker-compose-linux-x86_64" ]]; then
sudo cp "./docker-compose-linux-x86_64" /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
else
echo "⚠️ 未找到 docker-compose 二进制文件,跳过安装。"
fi
# ------------------------------------------------------------
# 3. 配置 Docker 并启动服务
# ------------------------------------------------------------
echo "⚙️ 配置 Docker 使用本地镜像源..."
# 创建 daemon.json(优化配置)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["http://192.168.3.193:5000/"],
"insecure-registries": ["192.168.3.193:5000"]
}
EOF
echo "⚙️ 配置 Docker 使用代理..."
# 创建 http-proxy.conf
sudo mkdir -p /etc/systemd/system/docker.service.d/
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF
[Service]
Environment="HTTP_PROXY=http://192.168.3.1:7890"
Environment="HTTPS_PROXY=http://192.168.3.1:7890"
Environment="NO_PROXY=127.0.0.1,localhost,local,.local,.lan,192.168.0.0/16,10.0.0.0/16"
EOF
# 启动并启用 Docker 服务
echo "🚀 启动 Docker 服务..."
sudo systemctl enable --now docker.service
sudo systemctl enable --now containerd.service
sudo systemctl daemon-reload
sudo systemctl restart docker
# ------------------------------------------------------------
# 4. 验证安装
# ------------------------------------------------------------
echo "✅ 安装完成!验证版本:"
docker --version
docker-compose --version
echo "✨ docker 和 docker-compose 安装完成!"
# 添加当前用户到 docker 组(避免每次用 sudo)
echo "👥 为避免每次用 sudo ,将当前用户加入 docker 组..."
echo "👥 执行命令: sudo usermod -aG docker \$USER"
sudo usermod -aG docker $USER
echo "👥 为避免重新登录,即将执行命令 newgrp docker 以便立即生效"
echo "请在脚本执行结束后, 手工执行 docker run hello-world 以检验 docker 安装是否成功."
echo ""
echo "docker run hello-world"
cd ..
newgrp docker
这个离线安装脚本可以和 docker 离线安装文件一起打包,方便以后使用。
cd ~/temp
chmod +x docker-offline install_docker_offline_debian13.zsh
tar -czvf docker-offline-debian13-v29.1.1-1.tar.gz docker-offline install_docker_offline_debian13.zsh
然后将这个离线安装包拷贝备份到 devserver 机器下,以后就可以方便的重用了。
用脚本安装
从 devserver 机器获取离线安装包,解压离线安装包,执行离线安装脚本:
mkdir -p ~/temp/
cd ~/temp/
wget http://192.168.3.193/downloads/docker/docker-offline-debian13-v29.1.1-1.tar.gz
tar -xvf docker-offline-debian13-v29.1.1-1.tar.gz
./install_docker_offline_debian13.zsh
现在就非常方便了!
2 - 在 Debian12 上安装
2.1 - 在线安装 Docker
安装docker
参考 docker 官网的安装文档:
https://docs.docker.com/engine/install/debian/
卸载旧版本
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
用 apt 安装
添加 docker 的 apt 仓库:
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
如果要安装最新版本,可以直接:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
也可以选择要安装版本。查看可选的 docker 版本:
apt-cache madison docker-ce | awk '{ print $3 }'
列出的版本有:
$ apt-cache madison docker-ce | awk '{ print $3 }'
5:28.1.1-1~debian.12~bookworm
5:28.1.0-1~debian.12~bookworm
5:28.0.4-1~debian.12~bookworm
5:28.0.3-1~debian.12~bookworm
5:28.0.2-1~debian.12~bookworm
......
这里可以选择使用一个版本,我直接选了最新的 5:28.1.1-1 版本, 执行安装命令:
VERSION_STRING=5:28.1.1-1~debian.12~bookworm
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
安装完成后检验一下:
sudo docker run hello-world
查看安装的版本:
$ docker --version
Docker version 28.1.1, build 4eba377
安装后设置
参考 docker 官网的设置文档:
https://docs.docker.com/engine/install/linux-postinstall/
设置权限避免每次sudo
为了以非 root 用户使用 docker, 可以将用户加入 “docker” 组.
# sudo groupadd docker
sudo usermod -aG docker $USER
重新登录之后生效。或者用下面的命令直接生效:
newgrp docker
验证一下:
docker run hello-world
设置 docker 为系统服务
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
取消 apt source 更新
docker 安装之后,没有必要时刻保持更新,因此可以取消 apt source的设置,加速 apt update 的执行:
sudo vi /etc/apt/sources.list.d/docker.list
安装 docker compose
可以选择用 apt 安装:
sudo apt-get install docker-compose
但安装出来的不是最新版本:
$ docker-compose --version
docker-compose version 1.29.2, build 5becea4c
要安装最新的版本,可以手工下载:
https://github.com/docker/compose/releases
下载最新的版本:
wget https://github.com/docker/compose/releases/download/v2.36.0/docker-compose-linux-x86_64
安装:
sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
验证:
$ docker-compose --version
Docker Compose version v2.36.0
参考资料
2.2 - 离线安装 Docker
制作离线安装包
参考在线安装的方式, 同样需要先添加 docker 的 apt 仓库,然后找到需要安装的版本, 下载离线安装包。
# 创建临时目录
mkdir -p ~/temp/docker-offline && cd ~/temp/docker-offline
# 下载 Docker CE 的 .deb 包(替换版本号为最新版)
apt-get download docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 下载所有依赖(可能需要运行多次直到无新依赖)
apt-get download $(apt-cache depends docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin | grep -E 'Depends|Recommends' | cut -d ':' -f 2 | tr -d ' ' | grep -v "^docker" | sort -u)
# 下载 iptables 的几个依赖包
apt-get download libip6tc2 libnetfilter-conntrack3 libnfnetlink0
参考下载安装文档,下载最新的 docker-compose 离线安装包:
wget https://github.com/docker/compose/releases/download/v2.36.0/docker-compose-linux-x86_64
完成后的离线安装包如下:
ls -lh
total 192M
-rw-r--r-- 1 sky sky 602K Feb 14 2023 apparmor_3.0.8-3_amd64.deb
-rw-r--r-- 1 sky sky 150K Mar 11 2023 ca-certificates_20230311_all.deb
-rw-r--r-- 1 sky sky 30M Apr 2 18:54 containerd.io_1.7.27-1_amd64.deb
-rw-r--r-- 1 sky sky 34M Apr 25 21:06 docker-buildx-plugin_0.23.0-1~debian.12~bookworm_amd64.deb
-rw-r--r-- 1 sky sky 19M Apr 25 21:06 docker-ce_5%3a28.1.1-1~debian.12~bookworm_amd64.deb
-rw-r--r-- 1 sky sky 16M Apr 25 21:06 docker-ce-cli_5%3a28.1.1-1~debian.12~bookworm_amd64.deb
-rw-r--r-- 1 sky sky 71M May 7 19:24 docker-compose-linux-x86_64
-rw-r--r-- 1 sky sky 14M Apr 25 21:06 docker-compose-plugin_2.35.1-1~debian.12~bookworm_amd64.deb
-rw-r--r-- 1 sky sky 7.0M Jan 13 04:28 git_1%3a2.39.5-0+deb12u2_amd64.deb
-rw-r--r-- 1 sky sky 352K Jan 16 2023 iptables_1.8.9-2_amd64.deb
-rw-r--r-- 1 sky sky 2.7M Mar 8 05:26 libc6_2.36-9+deb12u10_amd64.deb
-rw-r--r-- 1 sky sky 19K Jan 16 2023 libip6tc2_1.8.9-2_amd64.deb
-rw-r--r-- 1 sky sky 384K Apr 23 2024 libltdl7_2.4.7-7~deb12u1_amd64.deb
-rw-r--r-- 1 sky sky 40K Jan 3 2023 libnetfilter-conntrack3_1.0.9-3_amd64.deb
-rw-r--r-- 1 sky sky 15K Apr 9 2022 libnfnetlink0_1.0.2-2_amd64.deb
-rw-r--r-- 1 sky sky 46K Jun 17 2024 libseccomp2_2.5.4-1+deb12u1_amd64.deb
-rw-r--r-- 1 sky sky 325K Mar 8 05:01 libsystemd0_252.36-1~deb12u1_amd64.deb
-rw-r--r-- 1 sky sky 63K Feb 6 2021 pigz_2.6-1_amd64.deb
-rw-r--r-- 1 sky sky 693K Dec 20 2022 procps_2%3a4.0.2-3_amd64.deb
-rw-r--r-- 1 sky sky 460K Apr 4 05:20 xz-utils_5.4.1-1_amd64.deb
将这个离线安装包压缩成一个 tar 包:
cd ~/temp/
tar -czvf docker-offline-v28.1.1-1.tar.gz docker-offline
离线安装
获取离线安装文件
下载离线安装包到本地:
mkdir -p ~/temp/ && cd ~/temp/
scp sky@192.168.3.179:/home/sky/temp/docker-offline-v28.1.1-1.tar.gz .
解压离线安装包:
tar -xvf docker-offline-v28.1.1-1.tar.gz
cd docker-offline
手工安装 docker
# 安装各种依赖
sudo dpkg -i apparmor_3.0.8-3_amd64.deb
sudo dpkg -i ca-certificates_20230311_all.deb
sudo dpkg -i libc6_2.36-9+deb12u10_amd64.deb
sudo dpkg -i libltdl7_2.4.7-7~deb12u1_amd64.deb
sudo dpkg -i libseccomp2_2.5.4-1+deb12u1_amd64.deb
sudo dpkg -i libsystemd0_252.36-1~deb12u1_amd64.deb
sudo dpkg -i pigz_2.6-1_amd64.deb
sudo dpkg -i git_1%3a2.39.5-0+deb12u2_amd64.deb
sudo dpkg -i procps_2%3a4.0.2-3_amd64.deb
sudo dpkg -i xz-utils_5.4.1-1_amd64.deb
# 安装 iptables 和它的依赖
sudo dpkg -i libip6tc2_1.8.9-2_amd64.deb
sudo dpkg -i libnetfilter-conntrack3_1.0.9-3_amd64.deb
sudo dpkg -i libnfnetlink0_1.0.2-2_amd64.deb
sudo dpkg -i iptables_1.8.9-2_amd64.deb
# 安装 docker
sudo dpkg -i containerd.io_1.7.27-1_amd64.deb
sudo dpkg -i docker-buildx-plugin_0.23.0-1~debian.12~bookworm_amd64.deb
sudo dpkg -i docker-ce_5%3a28.1.1-1~debian.12~bookworm_amd64.deb
sudo dpkg -i docker-ce-cli_5%3a28.1.1-1~debian.12~bookworm_amd64.deb
sudo dpkg -i docker-compose-plugin_2.35.1-1~debian.12~bookworm_amd64.deb
添加用户到 docker 组:
sudo usermod -aG docker $USER
newgrp docker
启动 docker 服务:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
设置 docker 的镜像源:
sudo mkdir -p /etc/docker && sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["http://192.168.3.91:5000/"],
"insecure-registries": ["192.168.3.91:5000"]
}
EOF
验证一下:
docker run hello-world
手工安装 docker-compose
sudo mv ./docker-compose-linux-x86_64 /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
制作离线安装脚本
离线安装避免在线安装的网络问题,非常方便,考虑写一个离线安装脚本,方便以后使用。
install_docker_offline.zsh
内容为:
#!/usr/bin/env zsh
# ------------------------------------------------------------
# Docker & Docker Compose 离线安装脚本 (Debian 12)
# 前提条件:
# 1. 所有 .deb 文件和 docker-compose 二进制文件已放在 ~/docker-offline
# ------------------------------------------------------------
set -e # 遇到错误立即退出
DOCKER_OFFLINE_DIR="./docker-offline"
# 检查是否在 Debian 12 上运行
if ! grep -q "Debian GNU/Linux 12" /etc/os-release; then
echo "❌ 错误:此脚本仅适用于 Debian 12!"
exit 1
fi
# 检查是否已安装 Docker
if command -v docker &>/dev/null; then
echo "⚠️ Docker 已安装,跳过安装步骤。"
exit 0
fi
# 检查离线目录是否存在
if [[ ! -d "$DOCKER_OFFLINE_DIR" ]]; then
echo "❌ 错误:离线目录 $DOCKER_OFFLINE_DIR 不存在!"
exit 1
fi
echo "🔧 开始离线安装 Docker 和 Docker Compose..."
# ------------------------------------------------------------
# 1. 安装 Docker CE 及其依赖
# ------------------------------------------------------------
echo "📦 安装 Docker CE 的依赖包..."
cd "$DOCKER_OFFLINE_DIR"
# 按顺序安装依赖(防止 dpkg 报错)
for pkg in apparmor ca-certificates libc6 libltdl7 libseccomp2 libsystemd0 pigz git procps xz-utils libip6tc2 libnetfilter-conntrack3 libnfnetlink0 iptables ; do
if ls "${pkg}"*.deb &>/dev/null; then
echo "➡️ 正在安装: ${pkg}"
sudo dpkg -i "${pkg}"*.deb || true # 忽略部分错误,后续用 apt-get -f 修复
fi
done
# 修复依赖关系
echo "🛠️ 修复依赖关系..."
sudo apt-get -f install -y
# 按顺序安装 docker 组件(防止 dpkg 报错)
echo "📦 安装 Docker CE 组件..."
for pkg in containerd.io docker-buildx-plugin docker-ce docker-ce-cli docker-compose-plugin; do
if ls "${pkg}"*.deb &>/dev/null; then
echo "➡️ 正在安装: ${pkg}"
sudo dpkg -i "${pkg}"*.deb || true # 忽略部分错误,后续用 apt-get -f 修复
fi
done
# 修复依赖关系
echo "🛠️ 修复依赖关系..."
sudo apt-get -f install -y
# ------------------------------------------------------------
# 2. 安装 Docker Compose
# ------------------------------------------------------------
echo "📦 安装 Docker Compose..."
if [[ -f "./docker-compose-linux-x86_64" ]]; then
sudo cp "./docker-compose-linux-x86_64" /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
else
echo "⚠️ 未找到 docker-compose 二进制文件,跳过安装。"
fi
# ------------------------------------------------------------
# 3. 配置 Docker 并启动服务
# ------------------------------------------------------------
echo "⚙️ 配置 Docker 使用本地镜像源..."
# 创建 daemon.json(优化配置)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["http://192.168.3.91:5000/"],
"insecure-registries": ["192.168.3.91:5000"]
}
EOF
echo "⚙️ 配置 Docker 使用代理..."
# 创建 http-proxy.conf
sudo mkdir -p /etc/systemd/system/docker.service.d/
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF
[Service]
Environment="HTTP_PROXY=http://192.168.3.1:7890"
Environment="HTTPS_PROXY=http://192.168.3.1:7890"
Environment="NO_PROXY=127.0.0.1,localhost,local,.local,.lan,192.168.0.0/16,10.0.0.0/16"
EOF
# 启动并启用 Docker 服务
echo "🚀 启动 Docker 服务..."
sudo systemctl enable --now docker.service
sudo systemctl enable --now containerd.service
# ------------------------------------------------------------
# 4. 验证安装
# ------------------------------------------------------------
echo "✅ 安装完成!验证版本:"
docker --version
docker-compose --version
echo "✨ docker 和 docker-compose 安装完成!"
# 添加当前用户到 docker 组(避免每次用 sudo)
echo "👥 为 避免每次用 sudo ,请将当前用户加入 docker 组..."
echo "👥 请执行命令: sudo usermod -aG docker \$USER"
echo "👥 然后重新登录,或者执行命令立即生效: newgrp docker"
echo "🟢 之后请运行测试容器: docker run hello-world"
这个离线安装脚本可以和 docker 离线安装文件一起打包,方便以后使用。
tar -czvf docker-offline-v28.1.1-1.tar.gz docker-offline install_docker_offline.zsh
然后将这个离线安装包拷贝备份到 devserver 机器下,以后就可以方便的重用了。
用脚本安装
从 devserver 机器获取离线安装包,解压离线安装包,执行离线安装脚本:
mkdir -p ~/temp/
scp sky@192.168.3.91:/mnt/data/backup/soft/docker/docker-offline/docker-offline-v28.1.1-1.tar.gz ~/temp/
cd ~/temp/
tar -xvf docker-offline-v28.1.1-1.tar.gz
./install_docker_offline.zsh
现在就非常方便了!
3 - linux mint 22
安装docker
参考 docker 官网的安装文档:
https://docs.docker.com/engine/install/ubuntu/
卸载旧版本
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
用 apt 安装
添加 docker 的 apt 仓库:
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
如果要安装最新版本,可以直接:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
也可以选择要安装版本。查看可选的 docker 版本:
apt-cache madison docker-ce | awk '{ print $3 }'
列出的版本有:
5:28.2.2-1~ubuntu.24.04~noble
5:28.2.1-1~ubuntu.24.04~noble
5:28.2.0-1~ubuntu.24.04~noble
5:28.1.1-1~ubuntu.24.04~noble
5:28.1.0-1~ubuntu.24.04~noble
......
这里可以选择使用一个版本,我直接选了最新的 5:28.2.2-1 版本, 执行安装命令:
VERSION_STRING=5:28.2.2-1~ubuntu.24.04~noble
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
安装完成后检验一下:
sudo docker run hello-world
查看安装的版本:
$ docker --version
Docker version 28.2.2, build e6534b4
安装后设置
参考 docker 官网的设置文档:
https://docs.docker.com/engine/install/linux-postinstall/
设置权限避免每次sudo
为了以非 root 用户使用 docker, 可以将用户加入 “docker” 组.
# sudo groupadd docker
sudo usermod -aG docker $USER
重新登录之后生效。或者用下面的命令直接生效:
newgrp docker
验证一下:
docker run hello-world
设置 docker 为系统服务
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
取消 apt source 更新
docker 安装之后,没有必要时刻保持更新,因此可以取消 apt source的设置,加速 apt update 的执行:
sudo vi /etc/apt/sources.list.d/docker.list
安装 docker compose
可以选择用 apt 安装:
sudo apt-get install docker-compose
但安装出来的不是最新版本:
$ docker-compose --version
docker-compose version 1.29.2, build 5becea4c
要安装最新的版本,可以手工下载:
https://github.com/docker/compose/releases
下载最新的版本:
wget https://github.com/docker/compose/releases/download/v2.36.0/docker-compose-linux-x86_64
安装:
sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
验证:
$ docker-compose --version
Docker Compose version v2.37.0
参考资料
4 - 安装后的镜像加速
国内镜像加速
备注:如果是我家里的机器,会采用私有镜像仓库进行加速。
如果遇到镜像无法下载下来,比如报错:
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
就需要考虑配置镜像地址。
可用的镜像地址
为了加速拉取 Docker ,需要配置镜像地址:
-
docker-cn:https://registry.docker-cn.com
-
网易镜像:http://hub-mirror.c.163.com
-
阿里云镜像:
打开地址 https://cr.console.aliyun.com/cn-hangzhou/mirrors 查看专属加速器地址
修改镜像地址
mac下修改
任务栏点击 Docker for mac 应用图标 -> Perferences… -> Daemon -> Registry mirrors。
linux下修改
通过修改 daemon 配置文件 /etc/docker/daemon.json 来使用加速器:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
私有镜像仓库加速
为了加速下载,避免重复下载,可以考虑使用私有镜像仓库进行加速。
5 - 安装 cri-dockerd
安装 cri-dockerd
cri-dockerd 的安装参考:
https://mirantis.github.io/cri-dockerd/usage/install/
从 release 页面下载:
https://github.com/Mirantis/cri-dockerd/releases
debian 13 选择下载文件并安装:
mkdir -p ~/temp/
cd ~/temp/
# 从官方下载
# wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.4.0/cri-dockerd_0.4.0.3-0.debian-bookworm_amd64.deb
# 可以使用 devserver 上准备好的文件
wget http://192.168.3.193/downloads/cri-dockerd/cri-dockerd_0.4.0.3-0.debian-bookworm_amd64.deb
sudo dpkg -i ./cri-dockerd_0.4.0.3-0.debian-bookworm_amd64.deb
安装后会提示:
Selecting previously unselected package cri-dockerd.
(Reading database ... 68005 files and directories currently installed.)
Preparing to unpack .../cri-dockerd_0.4.0.3-0.debian-bookworm_amd64.deb ...
Unpacking cri-dockerd (0.4.0~3-0~debian-bookworm) ...
Setting up cri-dockerd (0.4.0~3-0~debian-bookworm) ...
Created symlink /etc/systemd/system/multi-user.target.wants/cri-docker.service → /lib/systemd/system/cri-docker.service.
Created symlink /etc/systemd/system/sockets.target.wants/cri-docker.socket → /lib/systemd/system/cri-docker.socket.
安装后查看状态:
sudo systemctl status cri-docker.service
如果成功则状态为:
● cri-docker.service - CRI Interface for Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/cri-docker.service; enabled; preset: enabled)
Active: active (running) since Sat 2025-05-10 20:39:41 CST; 19s ago
TriggeredBy: ● cri-docker.socket
Docs: https://docs.mirantis.com
Main PID: 8294 (cri-dockerd)
Tasks: 9
Memory: 13.1M
CPU: 18ms
CGroup: /system.slice/cri-docker.service
└─8294 /usr/bin/cri-dockerd --container-runtime-endpoint fd://
May 10 20:39:41 debian12 cri-dockerd[8294]: time="2025-05-10T20:39:41+08:00" level=info msg="Hairpin mode is set to none"
May 10 20:39:41 debian12 cri-dockerd[8294]: time="2025-05-10T20:39:41+08:00" level=info msg="The binary conntrack is not installed, this can cau>
May 10 20:39:41 debian12 cri-dockerd[8294]: time="2025-05-10T20:39:41+08:00" level=info msg="The binary conntrack is not installed, this can cau>
May 10 20:39:41 debian12 cri-dockerd[8294]: time="2025-05-10T20:39:41+08:00" level=info msg="Loaded network plugin cni"
May 10 20:39:41 debian12 cri-dockerd[8294]: time="2025-05-10T20:39:41+08:00" level=info msg="Docker cri networking managed by network plugin cni"
May 10 20:39:41 debian12 cri-dockerd[8294]: time="2025-05-10T20:39:41+08:00" level=info msg="Setting cgroupDriver systemd"
May 10 20:39:41 debian12 cri-dockerd[8294]: time="2025-05-10T20:39:41+08:00" level=info msg="Docker cri received runtime config &RuntimeConfig{N>
May 10 20:39:41 debian12 cri-dockerd[8294]: time="2025-05-10T20:39:41+08:00" level=info msg="Starting the GRPC backend for the Docker CRI interf>
May 10 20:39:41 debian12 cri-dockerd[8294]: time="2025-05-10T20:39:41+08:00" level=info msg="Start cri-dockerd grpc backend"
May 10 20:39:41 debian12 systemd[1]: Started cri-docker.service - CRI Interface for Docker Application Container Engine.
pause 镜像的版本问题
后面执行 init 命令时遇到警告:
W1127 11:14:12.643662 17241 checks.go:827] detected that the sandbox image "registry.k8s.io/pause:3.10" of the container runtime is inconsistent with that used by kubeadm. It is recommended to use "192.168.3.193:5000/k8s-proxy/pause:3.10.1" as the CRI sandbox image.
这个警告的意思是:容器运行时(CRI)默认使用的 sandbox 镜像版本和 kubeadm 期望的不一致。
Kubernetes 在运行 Pod 时,会用一个特殊的“pause”容器作为 Pod 的基础(sandbox). 目前我安装的 CRI(cri-dockerd 或 containerd)默认拉的是:
registry.k8s.io/pause:3.10
而 kubeadm 在 v1.34.2 对应的版本期望的是:
registry.k8s.io/pause:3.10.1
因为版本号不一致,就出现了这个警告。
解决方法, 修改 CRI 默认 sandbox 镜像, 对于 cri-dockerd, 需要在 cri-dockerd 的 systemd 启动参数里指定
sudo vi /lib/systemd/system/cri-docker.service
找到这行:
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd://
在后面加入内容:
--pod-infra-container-image=pause:3.10.1
或者如果有代码仓库:
--pod-infra-container-image=192.168.3.193:5000/k8s-proxy/pause:3.10.1
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl restart cri-docker
验证:
ps -ef | grep cri-dockerd
root 19302 1 0 11:40 ? 00:00:00 /usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=192.168.3.193:5000/k8s-proxy/pause:3.10.1