Docker Compose与私有仓库部署

发布于:2025-06-26 ⋅ 阅读:(19) ⋅ 点赞:(0)

目录

一. Docker 重启策略

二. Docker Compose工具的应用

1. 什么是 Docker compose

2. Docker compose 的安装

3. 编辑文件格式及编写注意事项

4. docker-compose的基本用法

三. Harbor私有仓库

1. 什么是Harbor

2. Harbor 的优势

3. Harbor 的构成

四. 部署Harbor私有仓库

1. 下载安装包

2. 上传服务器进行解压 拷贝harbor

3. 运行Harbor的安装脚本

4. 安装完成用浏览器访问

五. Harbor客户端

1. 所有的docker主机设置daemon.json

2. 找一个 docker 主机,登录到我们的 Harbor 仓库

3. 然后尝试使用命令行 push 一个镜像到 Harbor 上

4. 浏览器查看


随着 Docker 技术的广泛应用,容器化部署已成为现代软件开发与运维的重要趋势。本章将深入探讨Docker compose 与私有仓库部署的关键技术,旨在帮助读者更好地理解和实践 Docker 的高级应用。Docker Compose 作为定义及运行多个 Docker 容器的工具,能够极大地简化多容器应用的部署与管理。而私有仓库的搭建,则是确保镜像安全、高效传输与存储的关键。

一. Docker 重启策略

Docker 容器的重启策略是面向生产环境的一个启动策略,在开发过程中可以忽略该策略。Docker 容器的重启都是由 Docker 守护进程完成的,因此与守护进程息息相关。

Docker 容器的重启策略如下:

  • no,默认策略,在容器退出时不重启容器
  • on-failure,在容器非正常退出时(退出状态非0),才会重启容器
  • on-failure:3,指定启动的次数,在容器非正常退出时重启容器,最多重启3次
  • always,在容器退出时总是重启容器
  • unless-stopped,在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器

使--restart 指定重启策略

docker run -itd --restart=always--name host1 busybox sh

容器常见的退出状态码

状态码 说明
0 正常退出
125 Docker守护进程本身错误
126 容器启动后,要执行的默认命令无法调用
127 容器启动后,要执行的默认命令不存在
其他 容器启动后正常执行的命令返回的状态码

二. Docker Compose工具的应用

1. 什么是 Docker compose

Docker compose 的前身是 Fig,它是一个定义及运行多个 Docker 容器的工具。使用 DockerCompose 时,只需要在一个配置文件中定义多个 Docker 容器,然后使用一条命令启 动这些容器。Dockercompose 会通过解析容器间的依赖关系按先后顺序启动所定义的容器。

2. Docker compose 的安装

3. 编辑文件格式及编写注意事项

YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。类似于 XML 数据描述语言,语法比 XML 简单的很多。YAML 数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号([])括起来,hash用花括号({})括起来

  • (1)不支持制表符 tab 键缩进,需要使用空格缩进
  • (2)通常开头缩进两个空格。
  • (3)字符后缩进一个空格,如冒号、逗号、横杆。
  • (4)用#号注释。
  • (5)如果包含特殊字符,要使用单引号(')引起来。
  • (6)布尔值(true、false、yes、 no、 on、 off)必须用引号("")括起来,这样分析器会将它们解释为字符串。

4. docker-compose的基本用法

docker-compose的运行

(1)前台运行

docker-compose up

(2)后台运行

docker-compose up -d

(3)重新构建运行

docker-compose up --build -d

docker-compose的关闭

(1)关闭指定容器

docker-compose stop 《容器名称》

(2)全部关闭

docker-compose stop

docker-compose的启动

(1)启动指定容器

docker-compose start 《容器名字》

(2)全部启动

docker-compose start

docker-compose的重启

(1)重启指定容器

docker-compose restart 《容器名称》

(2)全部重启

docker-compose restart

删除

docker-compose down

三. Harbor私有仓库

1. 什么是Harbor

Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。它以 Docker 公司开源的 Registry 为基础,提供了管理 UI、基于角色的访问控制(Role Based Accesscontro1)、AD/LDAP 集成、以及审计日志(Audit1ogging)等企业用户需求的功能。通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 DockerDistribution。作为一个企业级私有 Registry 服务器, Harbor 提供了更好的性能和安全,以提升用户使用 Registry 构建和运行环境传输镜像的效率。

2. Harbor 的优势

  • 基于角色控制:用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限。
  • 基于镜像的复制策略:镜像可以在多个 Harbor 实例之间进行复制(同步),适用于负载平衡、高可用性、多数据中心、混合和多云场景。
  • 支持 LDAP/AD:Harbor 与现有的企业LDAP/AD 集成,用于用户认证和管理。
  • 删除图像和收集垃圾:镜像可以被删除,也可以回收镜像占用的空间。
  • 图形 UI:用户可以轻松浏览、搜索镜像仓库以及对项目进行管理。
  • 审计:对存储库的所有操作都进行记录。
  • RESTfu1 API:用于大多数管理操作的 RESTfu1 API,易于与外部系统集成。

3. Harbor 的构成

Harbor 在架构上主要有 Proxy、Registry、core services、Database(Harbor-db)、Logcollector(Harbor-log)五个组件:

(1)Proxy

Harbor 的 Registry、UI、Token 等服务通过一个前置的反向代理统一接收浏览器和 Docker 客户端的请求,并将请求转发给后端不同的服务。

(2)Registry

负责储存 Docker 镜像,并处理 Docker push/pu1l 命令。由于要对用户进行访问控制,即 不同用户对 Docker image 有不同的读写权限,Registry 会指向一个 Token 服务,强制用户的 每次Docker pull/push 请求都要携带一个合法的 Token,Registry 会通过公钥对 Token 进行解 密验证。

(3)Core service

这是 Harbor 的核心功能,主要提供以下服务:

  • UI(Harbor-ui):提供图形化界面,帮助用户管理 Registry 上的镜像(image),并对 用户进行授权。
  • Webhook:为了及时获取Registry上image 状态变化的情况,在 Registry上 配 置 webhook,  把状态变化传递给 UI 模块。

(4)Token 服务

负责根据用户权限给每个 Docker push/pu1l 命令签发 Token。Docker 客 户端向Registry 服务发起的请求,如果不包含 Token,会被重定向,获得 Token 后再 重新向 Registry 进行请求

(5)Database(Harbor-db

为 coreservices 提供数据库服务,负责储存用户权限、审计日志、Docker image 分组信 息等数
据。

(6)Log collector(Harbor-log)

为了帮助监控 Harbor 运行,负责收集其他组件的 log,供日后进行分析

Harbor 的每个组件都是以 Docker 容器的形式构建的,因此,使用 Docker compose 来 对它进行
部署。

四. 部署Harbor私有仓库

操作系统 服务 IP
OpenEuler harbor 192.168.10.101
OpenEuler 客户端 192.168.10.102

1. 下载安装包

https://github.com/goharbor/harbor/releases/tag/v2.4.3

https://github.com/goharbor/releases/download/v2.4.3/harbor-offline-installer-v2.4.3.tgz

2. 上传服务器进行解压 拷贝harbor

标橙色的地方注释掉 修改当前所在的节点ip 

3. 运行Harbor的安装脚本

...

4. 安装完成用浏览器访问

默认用户名为admin,密码为配置文件中定义的密码(Harbor12345)

登录进去新建一个账号名为zhangsan 创建一个项目名为kubernetes

五. Harbor客户端

1. 所有的docker主机设置daemon.json

回到命令行上测试一下 push 和 pu11。由于我们自己搭建的私有仓库默认是不受 Docker 信任的,所以需要先在配置文件中增加如下配置项让 Docker 信任该 registry:

2. 找一个 docker 主机,登录到我们的 Harbor 仓库

3. 然后尝试使用命令行 push 一个镜像到 Harbor 上

4. 浏览器查看

5. 退出


网站公告

今日签到

点亮在社区的每一天
去签到