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

相关推荐
hqxstudying2 小时前
J2EE模式---前端控制器模式
java·前端·设计模式·java-ee·状态模式·代码规范·前端控制器模式
ZeroToOneDev4 小时前
Java(LinkedList和ArrayList底层分析)
java·开发语言
没有bug.的程序员5 小时前
JAVA面试宝典 -《 架构演进:从单体到 Service Mesh》
java·面试·架构
典学长编程6 小时前
Java从入门到精通!第十一天(Java常见的数据结构)
java·开发语言·数据结构
皮皮林5516 小时前
设计一个多租户 SaaS 系统,如何实现租户数据隔离与资源配额控制?
java·saas
霍格沃兹软件测试开发6 小时前
Playwright 自动化测试系列(6)| 第三阶段:测试框架集成指南:参数化测试 + 多浏览器并行执行
java·数据库·mysql·自动化
allanGold6 小时前
【docker】如何设置以及修改共享卷(挂载路径)
docker
Bonnie_12157 小时前
02-netty基础-java四种IO模型
java·开发语言·nio·jetty
我不是星海7 小时前
建造者设计模式
java·开发语言
JIngJaneIL7 小时前
健身管理小程序|基于微信开发健身管理小程序的系统设计与实现(源码+数据库+文档)
java·数据库·小程序·论文·课程设计·毕设·健身管理小程序