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

news2024/12/26 10:38:45

唠唠闲话

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

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

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

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

  3. Harbor 注册表:对于需要更高级别管理和安全功能的企业,Harbor 是一个理想的选择。我们将详细介绍如何安装和配置 Harbor,利用其丰富的功能,提升容器镜像管理的安全性和效率。

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

容器代理

在使用 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,docker-registry.somecorporation.com"
    
  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:2
    ports:
      - "5000:5000"
    volumes:
      - ./data:/var/lib/registry
    restart: 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

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

Web 页面提供了更多功能,可以通过探索界面进一步了解。

20240608074101


以上。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Transformer动画讲解:注意力计算Q、K、V

暑期实习基本结束了&#xff0c;校招即将开启。 不同以往的是&#xff0c;当前职场环境已不再是那个双向奔赴时代了。求职者在变多&#xff0c;HC 在变少&#xff0c;岗位要求还更高了。提前准备才是完全之策。 最近&#xff0c;我们又陆续整理了很多大厂的面试题&#xff0c…

自动化Reddit图片收集:Python爬虫技巧

引言 Reddit&#xff0c;作为一个全球性的社交平台&#xff0c;拥有海量的用户生成内容&#xff0c;其中包括大量的图片资源。对于数据科学家、市场研究人员或任何需要大量图片资源的人来说&#xff0c;自动化地从Reddit收集图片是一个极具价值的技能。本文将详细介绍如何使用…

GCB | 全球草地和森林土壤呼吸对降水量变化的不对称响应

全球变化导致地球水文循环的强化放大了降水的年际变化&#xff0c;这将显著影响陆地碳&#xff08;C&#xff09;循环。然而&#xff0c;在极端降水变化情况下&#xff0c;先前观测到的土壤呼吸&#xff08;Rs&#xff09;和降水之间的关系是否仍然适用&#xff0c;目前仍不清楚…

thinkphp6.0版本下子查询sql处理

目录 一&#xff1a;背景 二&#xff1a;查询实例 三&#xff1a;总结 一&#xff1a;背景 我们在实际业务的开发过程中&#xff0c;经常会碰到这样的场景&#xff0c;查询某些部门的客户信息&#xff0c;查询下过订单的客户信息。这里查询客户信息实际上就用到了子查询&…

PS的stable diffusion插件安装指南

PS的stable diffusion插件安装指南 1.首先要安装stable diffusion&#xff0c;具体安装方法&#xff0c;参考https://blog.csdn.net/sheji888/article/details/139196688 stable diffusion要求要启用API功能 2.安装ps2023以上版本&#xff0c;低于这个版本不能使用stable diff…

TCP攻击是怎么实现的,如何防御?

TCP&#xff08;Transmission Control Protocol&#xff09;是互联网协议族中的重要组成部分&#xff0c;用于在不可靠的网络上提供可靠的数据传输服务。然而&#xff0c;TCP协议的一些特性也使其成为攻击者的目标&#xff0c;尤其是DDoS&#xff08;Distributed Denial of Ser…

马斯克五步流程法在产品创新中的实践与应用

引言&#xff1a; 在科技创新的浪潮中&#xff0c;埃隆马斯克以其独到的思维方式和创新实践&#xff0c;引领着多个行业的前沿。他提出的“第一性原理”下的五步流程法&#xff0c;不仅是对创新过程的深刻洞见&#xff0c;也为产品经理和工程师们提供了一套行之有效的工作方法。…

【Redis】Redis经典问题:缓存穿透、缓存击穿、缓存雪崩

目录 缓存的处理流程缓存穿透解释产生原因解决方案1.针对不存在的数据也进行缓存2.设置合适的缓存过期时间3. 对缓存访问进行限流和降级4. 接口层增加校验5. 布隆过滤器原理优点缺点关于扩容其他使用场景SpringBoot 整合 布隆过滤器 缓存击穿产生原因解决方案1.设置热点数据永不…

强国机械制造有限公司引入先进制造技术,提升产品质量和生产效率

强国机械制造有限公司2024年6月3日宣布引入了一系列先进制造技术,包括机器学习、人工智能和物联网等,旨在提升其产品的质量和生产效率。这些前沿技术的应用,使得公司的制造过程更加智能化和数据驱动,显著提高了产品的精度和稳定性。 通过机器学习算法,强国机械能够分析和预测生…

【Mybatis】动态SQL标签3

foreach标签是使用举例 在实际应用中&#xff0c;我常常需要根据多个id批量的操作&#xff1a; 查询指定id的记录&#xff1a; 这时就可以用foreach标签&#xff1a; collection"ids" &#xff1a; 接口上传过来的数值或list集合或者map集合都可以 item"id&…

区块链技术:供应链金融的革新者与引领者

一、引言 在供应链金融领域,区块链技术以其独特的去中心化、不可篡改、透明公开等特性,正在逐步成为该领域的革新者与引领者。本文将深入探讨区块链技术在供应链金融中的应用特点、功能、使用场景,并结合具体案例和技术方案,展现其巨大的潜力和价值。 二、区块链在供应链金…

【动态规划-BM71 最长上升子序列(一)】

题目 BM71 最长上升子序列(一) 分析 dp[i] 考虑到下标i&#xff0c;其组成的最长上升子序列长度 可以用动态规划的原因&#xff1a; 到i的结果可以由到j &#xff08;j<i) 的结果推出&#xff0c;只需要判断下标j对应的数字是否比下标i 对应的字母小即可 注意&#xf…

Three.js——粒子效果、粒子水波、粒子组成立方体

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…

blazehttp下载安装和自动化测试防护效果

blazehttp下载安装和自动化测试防护效果 说明测试环境的准备网站和waf配置blazehttp下载安装和测试测试效果waf安全日志查看 说明 需要docker环境和1panel面板 本测试使用blazehttp南墙waf进行测试&#xff0c;有兴趣的同学推荐使用雷池waf 测试环境的准备 使用1panel面板&am…

JavaSE--【类和对象】

本篇目标 1. 掌握类的定义方式以及对象的实例化 2. 掌握类中的成员变量和成员方法的使用 3. 掌握对象的整个初始化过程 一、面向对象的初步认知 1.1 面向对象的初步认知 Java是一门纯面向对象的语言(Object Oriented Program&#xff0c;简称OOP)&#xff0c;在面向对象的世界里…

【免费Web系列】大家好 ,今天是Web课程的第十七天点赞收藏关注,持续更新作品 !

这是Web第一天的课程大家可以传送过去学习 http://t.csdnimg.cn/K547r SpingBoot原理 在前面十多天的课程当中&#xff0c;我们学习的都是web开发的技术使用&#xff0c;都是面向应用层面的&#xff0c;我们学会了怎么样去用。而我们今天所要学习的是web后端开发的最后一个篇…

Fort Firewall防火墙工具v3.12.13

软件介绍 Fort Firewall是一款开源系统的免费防火墙&#xff0c;体积小巧、占用空间不大&#xff0c;可以为用户的电脑起到保护作用&#xff0c;该软件可以控制程序访问网络&#xff0c;控制用户的电脑网速&#xff0c;用户可以更轻松便捷的进行网络安全防护&#xff0c;保护系…

COM722-S浙大中控卡件

COM722-S浙大中控卡件。过程控制级 过程控制级功能 生产过程的数据采集、反馈控制、顺序控制、批量控制等。COM722-S浙大中控卡件。在其内部完成&#xff1a;A/D转换&#xff0c;各种控制算法的运算&#xff0c;对模拟量进行滤波及工程单位转换&#xff0c;COM722-S浙大中控卡件…

新手教程之使用LLaMa-Factory微调LLaMa3

文章目录 为什么要用LLaMa-Factory什么是LLaMa-FactoryLLaMa-Factory环境搭建微调LLaMA3参考博文 为什么要用LLaMa-Factory 如果你尝试过微调大模型&#xff0c;你就会知道&#xff0c;大模型的环境配置是非常繁琐的&#xff0c;需要安装大量的第三方库和依赖&#xff0c;甚至…

揭秘抖音矩阵号低成本高效运作批量账号的秘诀!

在当今互联网时代,抖音矩阵号搭建已经成为了许多企业和个人追求高效率媒介管理的重要方式,但是高效、低成本地运作这些账号却是一个相当具有挑战性的任务。 在这篇文章中,我将从抖音矩阵账号准备,如何低成本制作视频以及在进行内容制作时,如何高效运作批量账号等大家比较…