Docker 管理 | 代理配置、内网共享和 Harbor 部署

唠唠闲话

在现代软件开发和运维中,容器技术已经成为构建、部署和管理应用程序的标准工具。然而,在实际操作中,我们常常需要面对一些常见的挑战,如容器访问外部资源的代理配置内网环境下的镜像共享以及企业级镜像管理

本教程将详细介绍三大关键内容,以便更高效地使用容器技术:

  1. 容器代理:在很多网络环境中,直接访问外部资源可能受到限制。我们将介绍如何进行配置,确保顺利访问互联网和外部镜像仓库。

  2. 默认注册表:为了在内网环境中共享镜像,我们可以搭建一个无需登录验证的简单注册表。通过这种方式,可以在团队内部方便地推送和拉取镜像,提高开发效率。

  3. Harbor 注册表:对于需要更高级别管理和安全功能,Harbor 是一个理想的选择。我们将详细介绍如何安装和配置 Harbor,提升容器镜像管理的安全性和效率,以及演示如何同步 Docker 镜像站点的镜像。

废话不多说,下边开始吧!

容器代理

在使用 Docker 时,有时需要配置代理以便访问互联网或镜像仓库。以下是配置 Docker 代理的方法:

Linux

  1. 创建或编辑 /etc/systemd/system/docker.service.d/http-proxy.conf 文件:

    sudo mkdir -p /etc/systemd/system/docker.service.d
    sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
    
  2. 在文件中添加以下内容,替换 http://proxy.example.com:8080http://proxy.example.com:8080 为代理地址:

    [Service]
    Environment="HTTP_PROXY=http://proxy.example.com:8080"
    Environment="HTTPS_PROXY=http://proxy.example.com:8080"
    Environment="NO_PROXY=localhost,127.0.0.1"
    
  3. 重新加载系统守护进程并重启 Docker:

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

Windows

  1. 在 PowerShell 中创建或编辑 C:\ProgramData\Docker\config\daemon.json 文件:

    notepad C:\ProgramData\Docker\config\daemon.json
    
  2. 在文件中添加代理配置:

    {"proxies": {"default": {"httpProxy": "http://proxy.example.com:8080","httpsProxy": "http://proxy.example.com:8080","noProxy": "localhost,127.0.0.1,docker-registry.somecorporation.com"}}
    }
    
  3. 重启 Docker 服务:

    Restart-Service docker
    

Dockerfile

如果是在构建阶段需要,可以直接在 Dockerfile 中添加环境变量,并在结尾 unset

ENV http_proxy http://proxy.example.com:8080
ENV https_proxy http://proxy.example.com:8080...RUN unset http_proxy https_proxy

默认注册表

在内网环境中共享镜像,可以搭建一个无需登录验证的简单注册表,并使用 HTTP 协议进行通信。

搭建方法

创建一个 docker-compose.yml 文件,并定义以下内容:

version: '3'services:registry:image: registry:2ports:- "5000:5000"volumes:- ./data:/var/lib/registryrestart: always

在这个配置中,我们定义了一个名为 registry 的服务,使用 Docker 官方提供的 registry:2 镜像。配置将本机的 5000 端口映射到容器的 5000 端口,通过数据卷 ./data 将注册表的数据保存到本地。restart: always 确保在容器意外停止后自动重启。

docker-compose.yml 文件所在的目录下,运行以下命令来启动服务:

docker-compose up -d

常用命令

启动服务后,可以通过以下命令管理和使用注册表。

给本地镜像添加标签

首先,需要给本地镜像添加标签,使其指向我们的注册表:

docker tag alpine localhost:5000/alpine
推送镜像

将标记的镜像推送到注册表:

docker push localhost:5000/alpine
拉取镜像

从注册表中拉取镜像:

docker pull localhost:5000/alpine
查看 Registry 中的镜像

使用 curl 命令查看注册表中已存储的镜像列表:

curl http://localhost:5000/v2/_catalog

镜像导入导出

除了通过注册表共享容器镜像,还可以选择直接传输镜像文件,这在某些情况下可能更为便捷。

导出镜像

使用 docker save 命令将镜像导出为一个 tar 文件:

docker save -o <filename>.tar <image>

例如,将 alpine 镜像导出到 alpine.tar 文件:

docker save -o alpine.tar alpine
传输文件

使用 SCP、FTP 或其他网络文件传输方法将导出的 tar 文件从一台服务器传输到另一台服务器。例如,使用 SCP 命令:

scp alpine.tar user@destination_host:/path/to/destination
导入镜像

在目标服务器上使用 docker load 命令从 tar 文件中导入镜像:

docker load -i <filename>.tar

例如,从 alpine.tar 文件导入镜像:

docker load -i alpine.tar

这种方法可以有效地在不同服务器之间传输和共享 Docker 镜像,尤其适用于没有设置注册表或者网络条件不支持直接推送和拉取镜像的场景。

Harbor 注册表

方法概述

在选择容器注册表时,有多种选项可供选择,从简单到复杂的三种方案包括:

  1. Portus:一个轻量级的 Docker 镜像仓库管理工具,适合小型团队和简单的需求。它提供了基本的镜像管理功能和用户权限控制。

  2. Harbor:由 VMware 开发的开源企业级容器镜像仓库,提供了高级功能,如镜像复制、漏洞扫描、身份认证和角色管理,非常适合大中型企业的需求。

  3. Nexus:一个功能强大的仓库管理工具,支持多种格式的包管理(如 Maven、NPM 等),包括 Docker 镜像。它提供了丰富的企业级功能,但配置较为复杂。

教程选择 Harbor,其有以下优点:

  • 功能丰富:Harbor 提供了企业级所需的各类功能,包括镜像复制、漏洞扫描、内容签名和策略管理等。
  • 易于使用:相较于 Nexus,Harbor 的配置和管理更为简便,且有详细的文档支持。
  • 开源社区支持:Harbor 拥有活跃的开源社区和持续的更新维护,确保了其稳定性和安全性。

更多关于 Harbor 的信息和文档请参考 Harbor 官方文档。

下载安装包

从 Harbor 发行页 下载安装包,可以选择在线版或离线版。这里以 offline-installer 为例:

wget -c https://github.com/goharbor/harbor/releases/download/v2.11.0/harbor-offline-installer-v2.11.0.tgz
tar xvf harbor-offline-installer-v2.11.0.tgz

仓库还有一个 *.asc 签名文件,用于验证下载文件的完整性。

解压后的目录结构如下:

harbor
├── common.sh
├── harbor.v2.11.0.tar.gz
├── harbor.yml.tmpl
├── install.sh
├── LICENSE
└── prepare

在开始安装前,我们需要编辑 harbor.yml 文件以配置必要的参数。

编辑配置文件

Harbor 提供了模板文件 harbor.yml.tmpl。复制并修改该文件:

cp harbor.yml.tmpl harbor.yml

如果需要启用 HTTPS,需使用 certbot 生成域名证书, 具体可以参考:Let‘s Encrypt 域名证书增强网站安全。这里也可以选择注释掉 HTTPS 配置,在外部通过 Nginx 配置 SSL。

详细的参数说明请参考 Harbor 官方文档。

安装

Harbor 默认安装选项不包括 Trivy,这是由 Aqua Security 开发的开源漏洞扫描器。可通过以下命令安装 Harbor 并包含 Trivy:

sudo ./install.sh --with-trivy

安装完成后,会提示:

✔ ----Harbor has been installed and started successfully.----

此时目录下会生成一个 docker-compose.yml 文件,可以通过 docker-compose down/up -d 来停止或启动服务。

安装完成后,可以通过配置文件中指定的端口访问 Harbor。首次登录页面如下,默认用户名为 admin,密码参考 harbor.yml 配置。

20240608072647

更新配置

如果要修改 harbor.yml 对 Harbor 进行重新配置,先使用 docker-compose 停止服务,修改好文件后,运行 prepare 脚本:

# cd harbor 安装目录
docker-compose down
# vim harbor.yml
sudo ./prepare

Nginx 反向代理

为了更好地管理和访问 Harbor,可以使用 Nginx 作为反向代理。以下是一个参考配置,基于 Github Issue:

server{listen 80;server_name your.domain.com;rewrite ^.*$ https://$host$request_uri?;
}upstream harbor {server localhost:8041;
}server {listen 443 ssl;server_name your.domain.com;ssl_certificate /etc/letsencrypt/live/your.domain.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/your.domain.com/privkey.pem;location / {proxy_pass http://harbor/;proxy_set_header  Host              $http_host;proxy_set_header  X-Real-IP         $remote_addr;proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;proxy_set_header  X-Forwarded-Proto $scheme;proxy_buffering off;proxy_request_buffering off;}
}

基本使用

登录 Harbor 后,你可以创建自己的账号以便日常使用。

使用方式与 DockerHub 类似:

# 登录账号
docker login your.domain.com
# 推送镜像
docker tag myapp:latest your.domain.com/yourproject/myapp:latest
docker push your.domain.com/yourproject/myapp:latest
# 拉取镜像
docker pull your.domain.com/yourproject/myapp:latest

镜像复制

管理员页面提供了更多功能,包括用户管理,项目管理,镜像复制,漏洞扫描,垃圾回收,审计日志等。

20240608074101

以镜像复制为例,在 Harbor 和非 Harbor 注册表之间复制资源。

创建复制端点

使用拥有 Harbor 系统管理员权限的账号登录到 Harbor 界面。

在仓库管理中,点击新建目标:

20240609151831

选择镜像源,如果目标不在列表中,可以选 harbor 然后填写对应的地址。

20240609151856

如果需要登录鉴权,可以填写 Access IDAccess Secret 字段。如果目标是 http 资源,可以把 Verify Remote Cert 勾选去掉。

新建复制规则

点击复制管理,新建规则:
20240609162758

以 OneAPI 为例,如下进行配置:

20240609163216

参数说明:

  • 名称:规则名称,必填,小写数字下划线组成
  • 描述:规则描述
  • 复制模式:拉取或推送,这里选拉取
  • 源资源过滤器:可以使用通配符匹配需要拉取的资源
  • 目标仓库:上一步设置的端点,这里选 dockerhub
  • 目标: 名称空间:目标命名空间,默认放置在与源注册表中相同的命名空间中。
  • 触发模式:手动或定时或事件驱动,这里选手动
  • 带宽:复制带宽限制,默认无限制
  • 覆盖:如果目标已有镜像,是否覆盖

如果选择了手动触发,添加规则后,在复制管理中点击复制按钮,进行复制操作,下方会显示任务及进展。

20240609163124

此外,名称和标签过滤器支持以下模式:

  • *:匹配任何非分隔符字符序列 /
  • **:匹配任何字符序列,包括路径分隔符 /。注意双星号必须作为独立路径组件出现,如 /path*/**
  • ?:匹配任何单个非分隔符字符 /
  • {alt1,…}:匹配逗号分隔的任何一个替代项。

举个例子:

模式匹配不匹配
*library/hello-worldlibrary/my/hello-world
**library/hello-world, library/my/hello-world
{library,goharbor}/**library/hello-world, goharbor/harbor-coregoogle/hello-world
1.?1.01.01

此外,触发模式支持三种类型,可根据需求选择配置:

  • 手动:在需要时手动复制资源
  • 计划:通过定义 cron 作业定期复制资源
  • 基于事件:当新资源推送到项目或工件被重新标记时,它会立即复制到远程注册表。如果您选择“在本地删除时删除远程资源”,则当删除工件时,它会自动从复制目标中删除。

以上。

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

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

相关文章

Chrome/Edge浏览器视频画中画可拉动进度条插件

目录 前言 一、Separate Window 忽略插件安装&#xff0c;直接使用 注意事项 插件缺点 1 .无置顶功能 2.保留原网页&#xff0c;但会刷新原网页 3.窗口不够美观 二、弹幕画中画播放器 三、失败的尝试 三、Potplayer播放器 总结 前言 平时看一些视频的时候&#xff…

vivado HW_SIO_RX

HW_SIO_RX 描述 在硬件设备上&#xff0c;每个GT包括一个独立的接收器hw_sio_rx 由一个PCS和一个PMA组成。高速串行数据从板上的迹线流入 GTX/GTH收发器RX的PMA&#xff0c;进入PCS&#xff0c;最后进入FPGA逻辑。 相关对象 HW_SIO_RX对象与HW_server、HW_target、HW_device、H…

迅狐跨境商城系统|全平台兼容|前端采用uni-app跨端框架,后端采用ThinkPHP5框架

高效实现全平台兼容的迅狐跨境商城系统 迅狐跨境商城系统是一款专为跨境电商企业设计的全平台兼容系统。其前端采用uni-app跨端框架&#xff0c;后端采用ThinkPHP5框架&#xff0c;旨在实现高效的开发和运营管理。 1. 全平台兼容的前端设计 迅狐跨境商城系统的前端采用uni-a…

LeetCode | 27.移除元素

这道题的思路和26题一模一样&#xff0c;由于要在元素组中修改&#xff0c;我们可以设置一个index表示目前要修改原数组的第几位&#xff0c;由于遍历&#xff0c;访问原数组永远会在我们修改数组之前&#xff0c;所以不用担心数据丢失的问题&#xff0c;一次遍历数组&#xff…

晨持绪科技:抖音网店怎么做有前景

在数字时代的浪潮中&#xff0c;抖音平台以其独特的魅力和庞大的用户基础成为电商的新阵地。开设一家有前景的抖音网店&#xff0c;不仅需要对市场脉搏有敏锐的洞察力&#xff0c;还需融合创新思维与数据驱动的营销策略。 明确定位是成功的先声。深入分析目标消费群体的需求与偏…

函数递归(C语言)(详细过程!)

函数递归 一. 递归是什么1.1 递归的思想1.2 递归的限制条件 二. 递归举例2.1 求n的阶乘2.2 按顺序打印一个整数的每一位 三. 递归与迭代3.1 求第n个斐波那契数 一. 递归是什么 递归是学习C语言很重要的一个知识&#xff0c;递归就是函数自己调用自己&#xff0c;是一种解决问题…

为什么电容两端电压不能突变

我们先从RC延时电路说起吧&#xff0c;图1是最简单的RC延时电路&#xff0c;给一个阶跃的电压信号&#xff0c;电压会变成黄色曲线这个样子&#xff0c;这是为什么呢&#xff1f; 图1 电压跳变后&#xff0c;电源负极电子移动到电容下极板&#xff0c;排斥上极板电子流动到电源…

string经典题目(C++)

文章目录 前言一、最长回文子串1.题目解析2.算法原理3.代码编写 二、字符串相乘1.题目解析2.算法原理3.代码编写 总结 前言 一、最长回文子串 1.题目解析 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 示例 1&#xff1a; 输入&#xff1a;s “babad” 输出&am…

机器学习笔记 - 用于3D数据分类、分割的Point Net简述

一、简述 在本文中,我们将了解Point Net,目前,处理图像数据的方法有很多。从传统的计算机视觉方法到使用卷积神经网络到Transformer方法,几乎任何 2D 图像应用都会有某种现有的方法。然而,当涉及到 3D 数据时,现成的工具和方法并不那么丰富。3D 空间中一个工具就是Point …

HTML静态网页成品作业(HTML+CSS)—— 非遗皮影戏介绍网页(6个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有6个页面。 二、作品演示 三、代…

C++day5

思维导图 搭建一个货币的场景&#xff0c;创建一个名为 RMB 的类&#xff0c;该类具有整型私有成员变量 yuan&#xff08;元&#xff09;、jiao&#xff08;角&#xff09;和 fen&#xff08;分&#xff09;&#xff0c;并且具有以下功能&#xff1a; (1)重载算术运算符 和 -…

SQL 窗口函数

1.窗口函数之排序函数 RANK, DENSE_RANK, ROW_NUMBER RANK函数 计算排序时,如果存在相同位次的记录,则会跳过之后的位次 有 3 条记录排在第 1 位时: 1 位、1 位、1 位、4 位…DENSE_RANK函数 同样是计算排序,即使存在相同位次的记录,也不会跳过之后的位次 有 3 条记录排在…

bfs+枚举,CF666B - World Tour

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 666B - Codeforces 二、解题报告 1、思路分析 数据量允许跑N次bfs预处理所有点的最短路&#xff0c;以及预处理到达每个点距离最远的3个点&#xff0c;以及每个点能够到达的最远的3个点 我们枚举…

独立游戏《星尘异变》UE5 C++程序开发日志4——实现任务系统

本游戏作为工厂游戏&#xff0c;任务系统的主要功能就是给玩家生产的目标和动力&#xff0c;也就是给玩家发布一个需要一定数量某星尘的订单&#xff0c;玩家提交需要的星尘后会获得奖励&#xff0c;游戏中实际的奖励机制略微有点复杂&#xff0c;这里直接简化为完成任务后就能…

【StableDiffusion】Lora 底层原理,低秩适配,Lora 如何与 checkpoint 联合发挥作用

鸣谢UP主&#xff1a;是花子呀 本篇博客参考视频&#xff1a;https://www.bilibili.com/video/BV17i421X7q7/?spm_id_from333.880.my_history.page.click&vd_source38d6ea3466db371e6c07c24eed03219b Lora 是个啥&#xff1f;Lora 的 缩写 Lora&#xff1a;Low Rank Ada…

day35| 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球

文章目录 前言860.柠檬水找零思路方法一 406.根据身高重建队列思路方法一 452. 用最少数量的箭引爆气球思路方法一 总结 前言 860.柠檬水找零 思路 很简单&#xff0c;贪心只有一个&#xff0c;如果20优先用105找零&#xff0c;因为5更加万能一些 方法一 class Solution(ob…

R语言统计分析——图形文本、自定义坐标轴和图例

参考资料&#xff1a;R语言实战【第2版】 我们可以在图形上添加标题&#xff08;main&#xff09;、副标题&#xff08;sub&#xff09;、坐标轴标签&#xff08;xlab、ylab&#xff09;并指定标轴范围&#xff08;xlim、ylim&#xff09;。 # 录入数据 dose<-c(20,30,40,4…

快捷键专栏 IDEA、Navicat、电脑、Excle、Word等

标题 电脑篇windowsR 配合以下常用命令连上公司网线WiFi速度变慢问题解决Windows10 设置鼠标右键在此处打开cmd和Powershell窗口、关机打开电脑诊断工具系统设置常用设置查看电脑出场日期 systeminfo删除文件显示已在另一个程序打开&#xff1f;找回回收站删除的文件WindowsR输…

从sub-VP SDE形式推导出扰动核(高斯分布)的均值和方差【论文精读】

从sub-VP SDE形式推导出扰动核&#xff08;高斯分布&#xff09;的均值和方差【论文精读】 讲解视频 B站视频&#xff1a;sub-VP SDE形式推导出扰动核&#xff08;高斯分布&#xff09;的均值和方差 讲解目录 &#xff08;0&#xff09;sub-VP SDE形式由来&#xff1a;有良…

桌面应用开发框架比较:Electron、Flutter、Tauri、React Native 与 Qt

在当今快速发展的技术环境中&#xff0c;对跨平台桌面应用程序的需求正在不断激增。 开发人员面临着选择正确框架之挑战&#xff0c;以便可以高效构建可在 Windows、macOS 和 Linux 上无缝运行的应用程序。 在本文中&#xff0c;我们将比较五种流行的桌面应用程序开发框架&…