1 - 在 Debian12 上安装
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
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
参考资料
1.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
现在就非常方便了!
2 - 安装后的设置
镜像加速
如果遇到镜像无法下载下来,比如报错:
$ 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