这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

安装

Docker在各个操作系统下的安装

1 - 在 Debian12 上安装

在 Debian12 上安装 docker

1.1 - 在线安装 Docker

在 debian12 上在线安装 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

在 debian12 上离线安装 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 安装后的通用设置

镜像加速

如果遇到镜像无法下载下来,比如报错:

$ 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 ,需要配置镜像地址:

修改镜像地址

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