根据你的问题,以下是在中国大陆使用 Ubuntu 24.04 安装 Docker CE 并解决拉取容器镜像时出现的 `context deadline exceeded` 错误的详细步骤:
### 1. 安装 Docker CE
首先,确保你已经安装了 Docker CE。如果尚未安装,可以按照以下步骤进行安装:
1. **更新系统包**:
```bash
sudo apt-get update
```
2. **安装必要的包**:
```bash
sudo apt-get install -y ca-certificates curl gnupg-agent software-properties-common
```
3. **添加 Docker 的官方 GPG 密钥**:
```bash
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
```
4. **设置 Docker 的 apt 仓库**:
```bash
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 -a /etc/apt/sources.list.d/docker.list
```
5. **安装 Docker CE**:
```bash
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
```
6. **验证 Docker 是否安装成功**:
```bash
sudo docker run hello-world
```
### 2. 配置国内镜像源
由于国内网络环境的限制,直接从 Docker Hub 拉取镜像可能会遇到问题。建议使用国内的镜像源来加速镜像的拉取。
1. **编辑 Docker 配置文件**:
```bash
sudo vi /etc/docker/daemon.json
```
2. **添加国内镜像源**:
在文件中添加以下内容(以阿里云镜像源为例):
```json
{
"registry-mirrors": ["https://<你的阿里云加速器地址>.mirror.aliyuncs.com"]
}
```
如果你没有阿里云账号,可以使用其他公共镜像源,例如:
```json
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
```
3. **保存文件并重启 Docker 服务**:
```bash
sudo systemctl daemon-reload
sudo systemctl restart docker
```
### 3. 测试镜像拉取
配置完成后,尝试拉取一个镜像来验证配置是否生效:
```bash
sudo docker pull hello-world
```
如果一切正常,你应该能够成功拉取 `hello-world` 镜像并运行。
### 4. 检查网络连接
如果仍然遇到问题,可以尝试以下步骤来检查网络连接:
1. **测试网络连通性**:
```bash
ping registry-1.docker.io
```
2. **检查 DNS 设置**:
确保你的 DNS 设置正确。可以尝试更换为公共 DNS(如 8.8.8.8):
```bash
sudo vi /etc/resolv.conf
```
添加以下内容:
```plaintext
nameserver 8.8.8.8
nameserver 8.8.4.4
```
3. **检查防火墙设置**:
确保防火墙没有阻止 Docker 所需的端口(如 443):
```bash
sudo ufw status
```
### 5. 手动下载镜像
如果以上方法仍然无法解决问题,可以尝试手动下载镜像并导入到 Docker 中:
1. **使用 Docker 下载镜像**:
```bash
docker pull hello-world
```
2. **保存镜像为 tar 文件**:
```bash
docker save hello-world > hello-world.tar
```
3. **导入镜像到 Docker**:
```bash
docker load < hello-world.tar
```
4. **运行镜像**:
```bash
docker run hello-world
```
通过以上步骤,你应该能够解决在 Ubuntu 24.04 上安装 Docker CE 并拉取容器镜像时出现的 `context deadline exceeded` 错误。如果问题仍然存在,建议进一步检查网络配置或尝试其他网络环境。
浙公网安备 33010602011771号