linux 环境下Docker 安装
在线安装
参考 :https://juejin.cn/book/6844733746462064654/section/6844733746545950734#heading-0
Ubuntu 环境下安装
$ apt-get install apt-transport-https ca-certificates curl software-properties-common
$ install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | $ gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ echo "deb [arch=amd64 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
$ apt-get update
$ apt-get install docker-ce
$ apt-cache policy docker-ce # 查看可用版本
$ sudo systemctl enable docker
$ systemctl start docker
上述列出的命令是一套完整的在 Ubuntu 系统上安装 Docker Engine 的标准流程。下面我为你逐条解释这些命令的作用,并提供一些注意事项和最佳实践建议:
命令详解
安装 Docker 安装过程中所需的依赖包
apt-get install apt-transport-https ca-certificates curl software-properties-common
作用:安装 Docker 安装过程中所需的依赖包。
apt-transport-https:允许 APT 使用 HTTPS 源。
ca-certificates:用于处理 SSL/TLS 证书。
curl:用于下载远程文件(如 GPG 密钥)。
software-properties-common:提供 add-apt-repository 命令。
添加 Docker 官方的 GPG 公钥
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
下载并添加 Docker 官方的 GPG 公钥,用于验证软件包完整性
注意:apt-key 已被标记为过时(deprecated)。官方推荐将密钥保存为单独的 .gpg 文件放在 /etc/apt/trusted.gpg.d/ 目录中,所以推荐上述命令操作
添加 Docker 的官方 APT 软件源
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
作用:添加 Docker 的官方 APT 软件源。
作用:添加 Docker 的官方 APT 软件源。
$(lsb_release -cs):自动获取当前 Ubuntu 的代号(如 jammy、focal 等)。
⚠️ 注意:与上一条类似,add-apt-repository 可能不会设置密钥环路径。建议改用直接写入 sources.list.d 的方式。
echo \"deb [arch=amd64 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
刷新 APT 包索引,添加的 Docker 源
sudo apt-get update
作用:刷新 APT 包索引,使系统识别新添加的 Docker 源。
安装 Docker Community Edition(社区版)
apt-get install docker-ce
可选:安装特定版本:
apt-cache policy docker-ce # 查看可用版本
sudo apt-get install docker-ce=<VERSION> docker-ce-cli=<VERSION> containerd.io
设置 Docker 开机自启。
sudo systemctl enable docker
立即启动 Docker 服务
sudo systemctl start docker
验证安装是否成功:
sudo docker version
sudo docker run hello-world
检查 Docker 状态
systemctl status docker
将当前用户加入 docker 用户组:
避免每次使用 sudo(可选):
sudo usermod -aG docker $USER
最佳实践总结(2025 年推荐方式)
# 1. 安装依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-core# 2. 添加 GPG 密钥(现代方式)
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg# 3. 添加源
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 4. 更新并安装
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 5. 启动服务
sudo systemctl enable docker
sudo systemctl start docker# 6. 验证
docker version
docker run --rm hello-world
Docker 镜像加速器
网易云、腾讯云、阿里云、USTC(中科大)
科大镜像:https://docker.mirrors.ustc.edu.cn/
网易:https://hub-mirror.c.163.com/
阿里云:https://<你的ID>.mirror.aliyuncs.com
七牛云加速器:https://reg-mirror.qiniu.com
通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://cwd3by99.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
常见问题
登录镜像仓库登录不上
报错如下
Get “https://xxxxx/v2/”: net/http: request canceled while waiting for
connection (Client.Timeout exceeded while awaiting headers)
表明 Docker 守护进程在尝试访问某个镜像仓库时超时,具体是:
https://xxxxx/v2/
错误原因分析
- 网络不通或防火墙限制
- 你的机器无法访问 www-docker.pkg.devops.avic-digital.com
- 可能被防火墙、代理、DNS 或公司内网策略阻止。
- 检查是否需要使用 HTTP/HTTPS 代理 才能出网。
- DNS 解析失败
- 域名 www-docker.pkg.devops.avic-digital.com 无法解析为 IP 地址。
- 使用 nslookup 或 dig 检查。
- 目标服务不可达或宕机
- 私有 registry 服务可能暂时不可用。
- 联系 DevOps 团队确认服务状态。
- HTTPS 证书问题(中间人代理)
- 如果公司使用透明代理进行 HTTPS 拦截,Docker 可能因证书不信任而失败。
- 需要将企业根证书添加到 Docker 的信任链中。
- Docker 配置了错误的镜像仓库地址
- 可能你在 ~/.docker/config.json 或命令行中指定了这个私有仓库,但实际不需要。
- 超时时间过短(少见)
默认请求头等待时间约 30 秒。若网络极慢或服务器响应慢,可能超时。
排查与解决步骤
✅ 1. 检查域名是否能解析
bash
深色版本
nslookup xxxxxxxxxxxxxxxxxx
或
dig xxxxxxxxxxxxxxxxxxxxxxxx
👉 如果无返回结果 → DNS 问题。
✅ 2. 测试网络连通性
bash
深色版本
ping www-docker.pkg.devops.avic-digital.com
或
curl -v https://www-docker.pkg.devops.avic-digital.com/v2/
如果 curl 卡住或超时 → 网络不通或被拦截。
如果返回 401 Unauthorized 或 404 → 至少说明能通,服务在运行。
如果提示 SSL certificate problem → 证书问题。
✅ 3. 检查是否需要代理
如果你在公司内网,很可能需要设置代理才能访问外部服务。
临时测试(通过 curl 设置代理):
bash
深色版本
curl -x http://proxy.company.com:8080 -v https://www-docker.pkg.devops.avic-digital.com/v2/
如果这样能通 → 你需要为 Docker 配置代理。
为 Docker daemon 配置代理(Ubuntu systemd):
创建配置目录:
bash
sudo mkdir -p /etc/systemd/system/docker.service.d
创建代理配置文件:
bash
深色版本
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF
[Service]
Environment="HTTP_PROXY=http://proxy.company.com:8080"
Environment="HTTPS_PROXY=http://proxy.company.com:8080"
Environment="NO_PROXY=localhost,127.0.0.1,.company.com"
EOF
⚠️ 替换 http://proxy.company.com:8080 为你们公司的实际代理地址。
重启 Docker:
bash
深色版本
sudo systemctl daemon-reload
sudo systemctl restart docker
✅ 4. 检查 Docker 是否被配置了镜像仓库(mirror/registry-mirror)
查看是否有错误配置:
bash
cat /etc/docker/daemon.json
检查内容是否包含类似:
json
深色版本
{"registry-mirrors": ["https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"]
}
如果是 不必要的配置,请删除或注释掉,然后重启 Docker:
bash
深色版本
sudo systemctl restart docker
✅ 5. 检查 ~/.docker/config.json
bash
深色版本
cat ~/.docker/config.json
看是否配置了登录这个 registry:
json
深色版本
{"auths": {"xxxxxxxxxxxxxxxxx": {"auth": "xxx"}}
}
如果你没有权限或暂时不需要使用它,可以备份后删除该文件。