Ubuntu 系统上安装 Docker 和 Docker Compose 的详细步骤

学习目标:

使用DockerCompose部署项目

学习内容:

以下是在 Ubuntu 系统上安装 Docker 和 Docker Compose 的详细步骤:

安装 Docker

步骤 1:更新系统软件包

在安装 Docker 之前,需要确保系统的软件包列表是最新的。打开终端,执行以下命令:

sudo apt update
sudo apt upgrade -y
步骤 2:安装必要的依赖包

安装允许 apt 使用 HTTPS 源的软件包:

sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
步骤 3:添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
步骤 4:添加 Docker 软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
步骤 5:更新软件包列表
sudo apt update
步骤 6:安装 Docker 引擎
sudo apt install docker-ce docker-ce-cli containerd.io -y
步骤 7:验证 Docker 安装

安装完成后,可以通过运行以下命令来验证 Docker 是否正确安装:

sudo docker run hello-world

如果看到一条消息表明 Docker 已成功运行,则说明安装成功。

步骤 8:将用户添加到 Docker 组(可选)

为了避免每次使用 Docker 命令时都需要输入 sudo,可以将当前用户添加到 docker 组:

sudo usermod -aG docker $USER

注销并重新登录后,新的组成员身份才会生效。

安装 Docker Compose

步骤 1:下载 Docker Compose

首先,需要确定要安装的 Docker Compose 版本。可以在 Docker Compose 发布页面 上查看最新版本号。然后执行以下命令下载指定版本的 Docker Compose:

sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
步骤 2:赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
步骤 3:验证 Docker Compose 安装
docker-compose --version

如果显示 Docker Compose 的版本信息,则说明安装成功。

常见错误:

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)

当你在运行 sudo docker run hello - world 时遇到 Unable to find image 'hello-world:latest' locally 和超时错误信息,这通常意味着 Docker 客户端在本地找不到 hello - world 镜像,并且在尝试从 Docker Hub 拉取该镜像时遇到了网络连接问题。以下是一些可能的解决办法:

1. 检查网络连接

首先要确保你的网络连接正常,你可以通过以下命令简单测试网络连通性:

ping www.baidu.com

如果无法 ping 通,可能是网络本身存在问题,需要检查网络设置、路由器等。

2. 配置 Docker 镜像加速器

由于 Docker Hub 位于国外,网络访问可能不稳定,你可以配置 Docker 镜像加速器来加速镜像的拉取。以阿里云镜像加速器为例,配置步骤如下:

步骤 1:获取华为云镜像加速器地址

你需要登录华为云控制台(https://console.huaweicloud.com/swr/?region=cn-north-4#/swr/mirror),右上角点击镜像加速器复制加速地址。

步骤 2:配置 Docker 守护进程

编辑或创建 /etc/docker/daemon.json 文件:

sudo nano /etc/docker/daemon.json

在文件中添加以下内容(将 your_aliyun_mirror 替换为你自己的华为云镜像加速器地址):

{
    
    
  "registry-mirrors": ["your_aliyun_mirror"]
}

例如:

{
    
    
  "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}
步骤 3:重启 Docker 服务
sudo systemctl restart docker

3. 检查防火墙设置

防火墙可能会阻止 Docker 与 Docker Hub 之间的通信,你可以临时关闭防火墙进行测试(不建议长期关闭):

sudo ufw disable

如果关闭防火墙后可以正常拉取镜像,说明防火墙规则需要调整。你可以允许 Docker 相关的网络流量通过防火墙,例如:

sudo ufw allow 443/tcp

4. 检查 DNS 设置

不正确的 DNS 设置可能会导致网络连接问题,你可以编辑 /etc/resolv.conf 文件,添加可靠的 DNS 服务器,例如 Google 的 DNS 服务器:

sudo nano /etc/resolv.conf

在文件中添加或修改以下内容:

nameserver 8.8.8.8
nameserver 8.8.4.4

5. 再次尝试拉取镜像

完成上述操作后,再次尝试运行以下命令拉取并运行 hello - world 镜像:

sudo docker run hello-world

通过以上步骤,你应该能够解决网络连接问题并成功拉取和运行 hello - world 镜像。