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
  1. 配置 Harbor
    在 harbor.yml 文件中配置你的 Harbor 设置。你可以根据需要修改配置文件,例如设置管理员密码、HTTPS、Harbor 的主机名等。例如,要设置管理员密码:
# 默认管理员密码,强烈建议修改此密码。
harbor_admin_password: StrongPassword01
  1. 安装 Harbor
    使用 ./install.sh 脚本安装 Harbor:
./install.sh
  1. 启动 Harbor
    安装完成后,启动 Harbor:
./start.sh
  1. 检查 Harbor 状态
    检查 Harbor 是否正常运行:
./check.sh
  1. 访问 Harbor UI
    在浏览器中访问 http://your-hostname(替换为你的服务器地址),使用你在 harbor.yml 中设置的用户名(默认为 admin)和密码登录。

以上步骤应该可以帮助你在 CentOS 系统上成功安装 Harbor。如果你使用的是其他 Linux 发行版(如 Ubuntu、Debian),安装过程类似,只需确保 Docker 和 Docker Compose 的安装命令与你的发行版兼容即可。对于其他特定需求(如使用 HTTPS、配置网络等),请参考 Harbor 的官方文档进行详细配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/922247.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/922247.shtml
英文地址,请注明出处:http://en.pswp.cn/news/922247.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Netty从0到1系列之Netty启动细节分析

文章目录一、Netty服务器端启动细节分析1.1 实现一个简单的http服务器1.2 服务器端启动细节分析1.3 创建与初始化 NioServerSocketChannel1.3.1 **通过反射工厂创建 Channel**&#xff1a;1.3.2 **初始化 Channel**1.4 注册到 Boss EventLoopGroup1.4.1 **异步提交注册任务**1.…

一个海康相机OCR的程序

这是一个极其复杂和庞大的​​机器视觉检测程序​​&#xff0c;其核心特点是​​多重冗余、条件判断和流程分支​​。它并非一个简单的线性流程&#xff0c;而是一个为应对各种复杂工业场景&#xff08;如光照变化、产品位置偏移、识别难度高等&#xff09;而设计的​​决策网…

深入解析:preload与prefetch的区别及最佳实践

在前端性能优化领域&#xff0c;资源加载策略直接影响页面的加载速度和用户体验。<link>标签的preload和prefetch属性是浏览器提供的两种关键资源预加载机制&#xff0c;它们都能提前加载资源&#xff0c;但适用场景和行为逻辑却大不相同。本文将从定义、触发时机、优先级…

[论文阅读] 人工智能 + 软件工程(漏洞检测)| 工业场景漏洞检测新突破:CodeBERT跨领域泛化能力评估与AI-DO工具开发

工业场景漏洞检测新突破&#xff1a;CodeBERT跨领域泛化能力评估与AI-DO工具开发 论文信息 论文原标题&#xff1a;Cross-Domain Evaluation of Transformer-Based Vulnerability Detection: Open-Source vs. Industrial Data引文格式&#xff08;APA&#xff09;&#xff1a;[…

【层面一】C#语言基础和核心语法-01(类型系统/面向对象/异常处理)

文章目录1 类型系统1.1 为什么需要类型&#xff1f;1.2 .NET 类型系统的两大支柱&#xff1a;CTS 和 CLS1.3 最根本的分类&#xff1a;值类型 vs 引用类型1.4 内置类型 vs. 自定义类型1.5 类型转换1.6 通用基类&#xff1a;System.Object2 面向对象编程2.1 类和对象2.2 接口和类…

Deepseek构建本地知识库

一.本地部署Deepseek Ollama 介绍 目前市面上主流的&#xff0c;成本最低的部署本地大模型的方法就是通过 Ollama 了&#xff1a; Ollama 是一个开源的本地大语言模型运行框架&#xff0c;专为在本地机器上便捷部署和运行大型语言模型&#xff08;LLM&#xff09;而设计。 核心…

idea自动编译,idea不重启项目,加载修改的内容

idea自动编译&#xff0c;idea不重启项目&#xff0c;加载修改的内容

幸运盒项目—测试报告

幸运盒测试报告 目录幸运盒测试报告一. 概要二. 测试环境三. 测试用例脑图四. 测试用例1. 功能测试1. 注册功能2. 密码登录功能3. 验证码登录功能4. 注册用户功能5. 创建奖品功能6. 新建抽奖活动功能8. 奖品列表9. 活动列表2. 界面测试1. 注册界面2. 密码登录界面3. 验证码登录…

Estimator and Confidence interval

Coefficient of determination and sample correlation coefficient R2SSRSSTR^2 \frac{SSR}{SST}R2SSTSSR​ SSR∑i1n((yi^−yˉ)2)SSR\sum_{i1}^n((\hat{y_{i}}-\bar{y})^2)SSR∑i1n​((yi​^​−yˉ​)2) SST∑i1n((yi−yˉ)2)SST\sum_{i1}^n((y_{i}-\bar{y})^2)SST∑i1n​…

【网络编程】TCP 服务器并发编程:多进程、线程池与守护进程实践

半桔&#xff1a;个人主页&#x1f525; 个人专栏: 《Linux手册》《手撕面试算法》《网络编程》&#x1f516;很多人在喧嚣声中登场&#xff0c;也有少数人在静默中退出。 -张方宇- 文章目录前言套接字接口TCP服务器TCP 多进程TCP 线程池重写Task任务放函数对象客户端重连进程…

还停留在批处理时代吗?增量计算架构详解

在当今的数字化环境中&#xff0c;企业不再只是一味地囤积数据——他们痴迷于尽快把数据转化为可付诸行动的洞察。真正的优势来自于实时发现变化并立即做出反应&#xff0c;无论是调整推荐策略还是规避危机。 十年前&#xff0c;硬件与平台技术的进步让我们能够从容应对海量数…

DataSet-深度学习中的常见类

深度学习中Dataset类通用的架构思路 Dataset 类设计的必备部分 1. 初始化 __init__ 配置和路径管理&#xff1a;保存 config&#xff0c;区分 train/val/test 路径。加载原始数据&#xff1a;CSV、JSON、Numpy、Parquet 等。预处理器/归一化器&#xff1a;如 StandardScaler&am…

【VC】 error MSB8041: 此项目需要 MFC 库

▒ 目录 ▒&#x1f6eb; 导读问题背景环境1️⃣ 核心原因&#xff1a;MFC 组件缺失或配置不当2️⃣ 解决方案&#xff1a;安装 MFC 组件并验证配置2.1 步骤1&#xff1a;检查并安装 MFC 组件2.2 步骤2&#xff1a;检查并修正项目配置2.3 步骤3&#xff1a;针对特定场景的补充方…

Java零基础学习Day10——面向对象高级

一.认识final1.含义final关键字是最终的意思&#xff0c;可以修饰&#xff1a;类&#xff0c;方法&#xff0c;变量修饰类&#xff1a;该类被称为最终类&#xff0c;特点是不能被继承修饰方法&#xff1a;该方法被称为最终方法&#xff0c;特点是不能被重写了修饰变量&#xff…

Qt中解析JSON文件

Qt中解析JSON文件 在Qt中解析JSON字符串主要有两种方式&#xff1a;使用QJsonDocument类或使用QJsonDocument结合QVariant。以下是详细的解析方法&#xff1a; 使用QJsonDocument&#xff08;推荐&#xff09; 这种方式的主要相关类如下&#xff1a; QJsonDocument: QJsonDocum…

深度解析HTTPS:从加密原理到SSL/TLS的演进之路

在互联网时代,数据安全已成为不可忽视的基石。当我们在浏览器地址栏看到"https://"前缀和那把小小的绿色锁图标时,意味着正在进行一场受保护的通信。但这层保护究竟是如何实现的?HTTPS、SSL和TLS之间又存在着怎样的联系与区别?本文将深入剖析这些技术细节,带你全…

Flutter 官方 LLM 动态 UI 库 flutter_genui 发布,让 App UI 自己生成 UI

今日&#xff0c;Flutter 官方正式发布了它们关于 AI 大模型的 package 项目&#xff1a; genui &#xff0c;它是一个非常有趣和前沿的探索类型的项目&#xff0c;它的目标是帮助开发者构建由生成式 AI 模型驱动的动态、对话式用户界面&#xff1a; 也就是它与传统 App 中“写…

Redis常用数据结构及其底层实现

Redis常用数据结构主要有String List Set Zset Hash BitMap Hyperloglog Stream GeoString:Redis最常用的一种数据结构,Sting类型的数据存储结构有三种int、embstr、raw1.int:用来存储long以下的整形embstr raw 都是用来存字符串&#xff0c;其中小于44字节的字符串用embstr存 …

O3.4 opencv图形拼接+答题卡识别

一图形拼接逻辑导入必要的库pythonimport cv2 import numpy as np import sys导入cv2库用于图像处理&#xff0c;numpy库用于数值计算&#xff0c;sys库用于与 Python 解释器进行交互&#xff0c;例如退出程序。定义图像显示函数def cv_show(name, img):cv2.imshow(name, img)c…

SQL注入常见攻击点与防御详解

SQL注入是一种非常常见且危险的Web安全漏洞。攻击者通过将恶意的SQL代码插入到应用程序的输入参数中&#xff0c;欺骗后端数据库执行这些非预期的命令&#xff0c;从而可能窃取、篡改、删除数据或获得更高的系统权限。以下是详细、准确的SQL注入点分类、说明及举例&#xff1a;…