Ubuntu 22.04 上安装 Docker并使用国内源(20250108测试有效)

Ubuntu 22.04 上安装 Docker 需要几个步骤。以下是一个详细的指南,包括所有必要的命令和解释:

1. 更新软件包索引:

这是安装任何新软件包前的最佳实践,确保你拥有最新的软件包信息。

sudo apt update
2. 安装必要的软件包以允许 apt 通过 HTTPS 使用仓库:

这些软件包允许你的系统安全地连接到 Docker 的仓库并下载软件包。

sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
apt-transport-https: 允许 apt 使用 HTTPS 协议。

ca-certificates: 包含信任的证书颁发机构 (CA) 的证书。

curl: 一个用于传输数据的命令行工具。

gnupg: GNU Privacy Guard,用于安全地导入 Docker 的 GPG 密钥。

lsb-release: 提供关于 Linux 发行版的信息。
3. 添加 Docker 的官方 GPG 密钥:

GPG 密钥用于验证下载的 Docker 软件包的完整性和真实性。

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo mkdir -p /etc/apt/keyrings: 如果 /etc/apt/keyrings 目录不存在,则创建它。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg: 从 Docker 官方网站下载 GPG 密钥。

    -f: 如果服务器报告错误则退出。

    -s: 静默模式 (不显示进度条和错误消息)。

    -S: 显示错误消息。

    -L: 如果服务器返回重定向,则跟随重定向。

sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg: 将下载的 ASCII 格式的 GPG 密钥转换为二进制格式并保存到 /etc/apt/keyrings/docker.gpg。
4. 设置 Docker 仓库:

你需要将 Docker 的仓库添加到你的 apt 源列表中,这样 apt 才能找到 Docker 软件包。

echo \
  "deb [arch=(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
echo "...": 生成包含 Docker 仓库信息的字符串。

    deb: 指示这是一个 Debian 软件包仓库。

    [arch=(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg]: 指定架构 (例如 amd64) 和用于验证软件包的 GPG 密钥的位置。

    https://download.docker.com/linux/ubuntu: Docker 的 Ubuntu 仓库地址。(lsb_release -cs): 获取你的 Ubuntu 版本代号 (例如 jammy)。

    stable: 指定要使用的 Docker 版本通道 (稳定版)。

sudo tee /etc/apt/sources.list.d/docker.list > /dev/null: 将生成的字符串写入到 /etc/apt/sources.list.d/docker.list 文件中。

    tee 命令会将输入同时输出到屏幕和文件。

    > /dev/null 用于丢弃屏幕输出。
5. 再次更新软件包索引:

现在你的 apt 源列表中包含了 Docker 的仓库,需要更新软件包索引来获取新的软件包信息。

sudo apt update
6. 安装 Docker Engine:

现在你可以安装 Docker Engine、Containerd 和 Docker Compose 插件。

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
docker-ce: Docker Community Edition,即 Docker Engine。

docker-ce-cli: 用于与 Docker Engine 交互的命令行工具。

containerd.io: 一个行业标准的容器运行时。

docker-compose-plugin: 用于定义和运行多容器 Docker 应用程序的工具 (作为 Docker CLI 的插件存在)。
6.5 修改为国内可用源(20250107测试可用)
# cat /etc/docker/daemon.json 
{
   "registry-mirrors": [
  "https://docker.m.daocloud.io",
  "http://mirrors.ustc.edu.cn",
  "http://mirror.azure.cn"
   ]
 }

sudo systemctl daemon-reload
sudo systemctl restart docker

7. 验证 Docker 是否安装成功:

安装完成后,可以运行以下命令来检查 Docker 是否已正确安装并正在运行。

sudo systemctl status docker

你应该看到类似以下的输出,表明 Docker 服务正在运行 (active (running)):

● docker.service – Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2023-10-24 10:00:00 UTC; 1min 30s ago
Docs: https://docs.docker.com
Main PID: 1234 (dockerd)
Tasks: 50
Memory: 100.0M
CPU: 1.500s
CGroup: /system.slice/docker.service
└─1234 /usr/bin/dockerd -H fd://

Use code with caution.

你也可以运行一个简单的 Docker 镜像来验证安装:

sudo docker run hello-world

如果一切正常,你应该看到一条欢迎消息,表明 Docker 已经正确安装并正在运行。

8. (可选)将你的用户添加到 docker 组,以便无需 sudo 运行 Docker 命令:

默认情况下,你需要使用 sudo 来运行 Docker 命令。为了避免这种情况,你可以将你的用户添加到 docker 组。

sudo usermod -aG docker $USER
newgrp docker
sudo usermod -aG docker USER: 将当前用户 (USER) 添加到 docker 组。

newgrp docker: 使组更改立即生效,无需注销并重新登录。

重要提示: 将用户添加到 docker 组会赋予该用户 root 权限,因为他们可以控制 Docker 守护进程。请谨慎操作。

9. Docker Compose (如果需要):

你已经安装了 Docker Compose 插件,它可以通过 docker compose 命令来使用。 你可以创建一个 docker-compose.yml 文件来定义你的多容器应用程序。

例如,创建一个简单的 docker-compose.yml 文件:

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

Use code with caution.Yaml

然后,在该文件所在的目录中运行:

docker compose up -d

这将启动一个运行 Nginx 的容器。

常用 Docker 命令:

docker ps: 列出正在运行的容器。

docker images: 列出本地可用的镜像。

docker pull <image_name>: 从 Docker Hub 下载镜像。

docker stop <container_id>: 停止一个正在运行的容器。

docker rm <container_id>: 删除一个已停止的容器。

总结:

以上就是在 Ubuntu 22.04 上安装 Docker 的详细步骤。按照这些步骤操作,你应该能够成功安装并运行 Docker。记得阅读 Docker 的官方文档以了解更多关于 Docker 的功能和用法。