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"}}
}
如果你没有权限或暂时不需要使用它,可以备份后删除该文件。
Docker 离线安装
安装 Docker Compose
Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排
使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等
Compose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件来定义一组相关联的应用容器为一个项目
Compose 中有两个重要的概念:
服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例
项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义
在线安装 Docker Compose
Harbor 使用 Docker Compose 来管理容器,因此需要安装 Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
安装好后使用
docker-compose -v 查看安装的docker-compose 版本
docker-compose -v
docker-compose version 1.29.2, build 5becea4c
Harbor 镜像仓库安装
Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器,它包括了诸如安全、身份认证、管理等功能。Harbor 支持多种操作系统,包括 Linux。如果你想在基于 CentOS 的系统中安装 Harbor,
Harbor 需要提前安装docker、Docker Compose
下载 Harbor 安装包
访问 Harbor 官方网站 或 GitHub 仓库 获取最新的 Harbor 安装包。选择适合你操作系统的版本下载。例如,对于 Linux,你可以下载 harbor-offline-installer-xxx.tgz 文件。
wget https://github.com/goharbor/harbor/releases/download/v2.5.1/harbor-offline-installer-v2.5.1.tgz
tar xzvf harbor-offline-installer-v2.5.1.tgz
cd harbor
- 配置 Harbor
在 harbor.yml 文件中配置你的 Harbor 设置。你可以根据需要修改配置文件,例如设置管理员密码、HTTPS、Harbor 的主机名等。例如,要设置管理员密码:
# 默认管理员密码,强烈建议修改此密码。
harbor_admin_password: StrongPassword01
- 安装 Harbor
使用 ./install.sh 脚本安装 Harbor:
./install.sh
- 启动 Harbor
安装完成后,启动 Harbor:
./start.sh
- 检查 Harbor 状态
检查 Harbor 是否正常运行:
./check.sh
- 访问 Harbor UI
在浏览器中访问 http://your-hostname(替换为你的服务器地址),使用你在 harbor.yml 中设置的用户名(默认为 admin)和密码登录。
以上步骤应该可以帮助你在 CentOS 系统上成功安装 Harbor。如果你使用的是其他 Linux 发行版(如 Ubuntu、Debian),安装过程类似,只需确保 Docker 和 Docker Compose 的安装命令与你的发行版兼容即可。对于其他特定需求(如使用 HTTPS、配置网络等),请参考 Harbor 的官方文档进行详细配置