背景

本文安装环境:ubuntu

安装 docker


[可选] 卸载非官方的 Docker 包

安装 Docker Engine 之前,需要卸载所有冲突包。

Linux 发行版可能提供非官方的 Docker 包,这可能会与 Docker 官方包发生冲突。在安装官方版本的 Docker Engine 之前,必须先卸载这些包

需要卸载非官方的包可能有:

  • docker.io

  • docker-compose

  • docker-compose-v2

  • docker-doc

  • podman-docker

执行以下命令卸载所有冲突包:

sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1)

通过 apt 安装

配置 Docker 的 apt 仓库

# Add Docker's official GPG key:
sudo apt update
sudo apt 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:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update

apt 安装 docker

# 安装最新版本
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin






# 安装指定版本
apt list --all-versions docker-ce

Listing... Done
docker-ce/noble 5:29.1.2-1~ubuntu.24.04~noble amd64
docker-ce/noble 5:29.1.1-1~ubuntu.24.04~noble amd64
docker-ce/noble 5:29.1.0-1~ubuntu.24.04~noble amd64
...

# 选择所需版本并安装
VERSION_STRING=5:29.1.2-1~ubuntu.24.04~noble amd64
sudo apt install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin

验证 docker 服务是否正常启动:sudo systemctl status docker

docker 配置

执行命令:vim /etc/docker/daemon.json

参考下面内容填入

{
    "data-root": "/mnt/data/docker/docker-data",
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "100m",
        "max-file": "3"
    },
    "registry-mirrors": [
    ],
    "insecure-registries": [
    ],
    "dns": [
        "8.8.8.8",
        "114.114.114.114"
    ]
}

配置解释:

字段 说明
data-root docker 服务默认会将数据保存到系统盘。
而一般来说会将 docker 数据存放到数据盘,不占用系统盘空间/方便迁移数据/不受重装系统影响。
log-driver 定容器日志的存储格式为 JSON 文件(默认值)
log-opts 日志选项
log-opts.max-size 限制单个容器日志文件的最大大小,防止容器日志无限增长占用磁盘空间
max-file.max-size 日志轮转,最大暴露文件个数
registry-mirrors 配置 Docker 镜像仓库的加速地址,加快国内拉取镜像的速度
insecure-registries 允许 Docker 与未使用 HTTPS(仅用 HTTP)或证书无效的私有镜像仓库通信
dns 指定 Docker 容器使用的 DNS 服务器,解决容器内域名解析问题

安装 docker compose

sudo apt update
sudo apt install docker-compose-plugin

执行命令验证是否安装成功:docker compose version

docker compose 启用命令行补全

bash

要获取 Docker CLI 的 Bash 自动补全功能,首先需要安装包含多个 Bash 函数的 bash-completion 包,用于 shell 自动补全。

# Install using APT:
sudo apt install bash-completion

# Install using Homebrew (Bash version 4 or later):
brew install bash-completion@2
# Homebrew install for older versions of Bash:
brew install bash-completion

# With pacman:
sudo pacman -S bash-completion

安装 bash-completion 后,在您的 shell 配置文件中(例如, .bashrc )源脚本

# On Linux:
cat <<EOT >> ~/.bashrc
if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi
EOT

# On macOS / with Homebrew:
cat <<EOT >> ~/.bash_profile
[[ -r "$(brew --prefix)/etc/profile.d/bash_completion.sh" ]] && . "$(brew --prefix)/etc/profile.d/bash_completion.sh"
EOT

重新加载 shell 配置:

source ~/.bashrc

现在您可以使用 docker completion 命令生成 Bash 完成脚本:

mkdir -p ~/.local/share/bash-completion/completions
docker completion bash > ~/.local/share/bash-completion/completions/docker

Zsh

详见参考文档:docker completion

Fish

详见参考文档:docker completion

参考文档