Docker Compose与私有仓库部署

目录

一.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也可以使用私有仓库

相关推荐
数据知道38 分钟前
容器化部署:用Docker封装机器翻译模型与服务详解
docker·容器·机器翻译
桦说编程3 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
lifallen3 小时前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研3 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
没有bug.的程序员4 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
甄超锋5 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
阿华的代码王国5 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Zyy~5 小时前
《设计模式》装饰模式
java·设计模式
A尘埃5 小时前
企业级Java项目和大模型结合场景(智能客服系统:电商、金融、政务、企业)
java·金融·政务·智能客服系统
青云交5 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵治理与出行效率提升中的应用(398)
java·大数据·flink·大数据可视化·拥堵预测·城市交通治理·实时热力图