目录
- [一.Docker compose工具应用](#一.Docker compose工具应用)
- [Docker compose 工具简介](#Docker compose 工具简介)
-
- [1.什么是docker compose](#1.什么是docker compose)
- docker重启策略
- 退出的状态码
- 二.Docker-compose案例
- 三.harbor私有仓库
- harbor私有仓库概念
- Harbor简介
- 一.安装harbor(harbor节点)
- 安装nginx(主节点)
一.Docker compose工具应用
Docker compose 工具简介
1.什么是docker compose
Docker Compose 的前身是 Fig,它是一个定义及运行多个 Docker 容器的工具。使用 DockerCompose 时,只需要在一个配置文件中定义多个 Docker 容器,然后使用一条命令启 动这些容器Docker compose 会通过解析容器间的依赖关系按先后顺序启动所定义的容器。
docker重启策略
Docker 容器的重启策略是面向生产环境的一个启动策略,在开发过程中可以忽略该策略。Docker 容器的重启都是由 Docker 守护进程完成的,因此与守护进程息息相关。
Docker 容器的重启策略如下:
- no,默认策略,在容器退出时不重启容器
- on-failure,在容器非正常退出时(退出状态非0),才会重启容器
- on-failure:3,指定启动的次数,在容器非正常退出时重启容器,最多重启3次
- always,在容器退出时总是重启容器
- unless-stopped,在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器
#使--restart 指定重启策略
退出的状态码

二.Docker-compose案例
1.编写文件
services:是服务定义
webapp:是容器名称
image:是指的docker中使用的镜像"nginx"
ports:端口映射让互联网访问内网时用的端口号
volumes:本地与容器的中目录或文件进行同步实现数据持久化
2.修改nginx配置文件
将nginx配置文件上传到挂载目录中
杀死容器命令
三.harbor私有仓库
harbor私有仓库概念
什么时harbor
Harbor 是 Vware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。它以 Docker 公司开源的 Registry 为基础,提供了管理 UI、基于角色的访问控制(Role Based AccessContro1)、AD/LDAP 集成、以及审计日志(Auditlogging)等企业用户需求的功能。通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 DockerDistribution。作为一个企业级私有 Registry 服务器, Harbor 提供了更好的性能和安全,以提升用户使用registry构建和运行环境传输镜像效率
Harbor优势
具有如下优势:Harbor
- 基于角色控制:用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限。
- 基于镜像的复制策略:镜像可以在多个 Harbor 实例之间进行复制(同步),适用于负载平衡、高可用性、多数据中心、混合和多云场景。
- 支持 LDAP/AD:Harbor与现有的企业LDAP/AD 集成,用于用户认证和管理。
删除图像和收集垃圾:镜像可以被删除,也可以回收镜像占用的空间。 - 图形 UI:用户可以轻松浏览、搜索镜像仓库以及对项目进行管理。
- 审计:对存储库的所有操作都进行记录。
- RESTfu1 API:用于大多数管理操作的 RESTfu1 API,易于与外部系统集成。
Harbor简介
Docker容器应用的开发和运行离不开可靠的镜像管理,Docker官方提供了原生的Registry,但其功能比较简单,而且没有可视化界面,自然无法满足企业级的需求。虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署私有环境内的Registry也是非常必要的。
为了解决以上需求,VMware公司推出了Harbor,Harbor 是为企业用户设计的容器镜像仓库开源项目,包括了权限管理(RBAC)、LDAP、审计、安全漏洞扫描、镜像验真、管理界面、自我注册、HA 等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能
Harbor的GitHub仓库地址如下:
• https://github.com/goharbor/harbor
• Wiki:https://github.com/goharbor/harbor/wiki
Harbor高可用部署
官方的安装文档:
• https://goharbor.io/docs/2.0.2/install-config/
本文采用的高可用方案是Harbor的双主复制,该方案比较简单,需要搭建至少两个Harbor节点,并且节点之间能够互相复制,然后通过nginx代理Harbor节点提供外部访问。这里采用的高可用方案级别没那么高,因为主要是通过Nginx代理其中一个节点,该节点挂掉后需要手动修改Nginx配置文件去代理另一个可用节点。

所以此方案比较适合中小型公司,而且Harbor主要是给公司内部的开发人员使用的,通常只需要保证分钟级的高可用性就可以了。另外还有一点就是,云环境基本无法使用keepalived,因为云服务商一般不支持自定义外网可访问的虚拟IP,要么就是使用起来非常麻烦。这也是为什么没有采用keepalived的原因之一,当然,如果是部署在内网服务器上也是可以采用keepalived的
一.安装harbor(harbor节点)
下载完成后,将压缩包上传到两个worker节点:

配置harbor文件

填写自己的节点ip地址
登陆界面密码
将https相关的配置给注释掉,这里为了简单只使用http,而且也可以在nginx那一层去做https
运行harbor安装脚本

安装成功后使用浏览器访问一下harbor私有仓库
安装nginx(主节点)
在两台worker节点上安装好Harbor后,接着我们到master节点上使用docker搭建一个nginx
拉去镜像
启动脚本

创建harbor项目用户
项目为kubernetes
②用户管理创建用户
将该用户加入到项目中

所有docker主机上设置demon.json文件
回到命令行上测试一下push和pull。由于我们自己搭建的私有仓库默认是不受Docker信任的,所以需要先在配置文件中增加如下配置项让Docker信任该registry:
找一个docker主机登录harbor私有仓库

推送一个镜像文件上传到harbor私有仓库上
配置harbor节点互相复制(两个节点都设置,要连接对方的ip)
测试完Harbor的基本功能后,我们接下来配置一下Harbor节点之间的互相复制功能,让两个节点能够同步镜像数据。首先到第一个节点上的"仓库管理"界面中新建一个目标,这个目标就是另一台Harbor节点:
复制管理设置
复制成功后,到另一个节点上可以看到kubernetes这个项目及项目下的镜像都被复制过去了:
103指向102复制就互为复制了然后将nginx代理后端服务器 改成103也可以使用私有仓库