文章目录
- 前言
- [一、Docker Compose 编排](#一、Docker Compose 编排)
-
- [1.1 概念](#1.1 概念)
- [1.2 YAML 基本语法](#1.2 YAML 基本语法)
- [1.3 Docker Compose配置常用字段和命令](#1.3 Docker Compose配置常用字段和命令)
- [1.4 文件结构与配置](#1.4 文件结构与配置)
-
- [1.4.1 文件结构](#1.4.1 文件结构)
- [1.4.2 文件配置(nginx的Dockerfile文件)](#1.4.2 文件配置(nginx的Dockerfile文件))
- [1.4.3 文件配置(tomcat的Dockerfile文件)](#1.4.3 文件配置(tomcat的Dockerfile文件))
- [1.4.4 配置docker-compose.yml文件](#1.4.4 配置docker-compose.yml文件)
- [1.4.5 启动docker-compose.yml文件](#1.4.5 启动docker-compose.yml文件)
- [二、 Docker-Harbor 私有仓库部署与管理](#二、 Docker-Harbor 私有仓库部署与管理)
-
- [2.1 Harbor 架构](#2.1 Harbor 架构)
- [2.2 搭建本地私有仓库](#2.2 搭建本地私有仓库)
- [2.3 部署 Harbor 服务](#2.3 部署 Harbor 服务)
- [2.4 客户端](#2.4 客户端)
- 总结
前言
本文继续为大家讲解docker知识,本文主要为compose编排内容与harbor知识点。
一、Docker Compose 编排
1.1 概念
通过 Docker Compose,我们可以在一个 YAML 配置文件中定义多个服务,并实现容器之间的联动,简化了应用的部署和管理。
Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。
Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。一个服务当中可包括多个容器实例,DockerCompose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如Consul。
Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。
使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
LNMP docker-comes 搭建lnmp 并且 做论坛 wordpress。
Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API, 就可以在其上利用Compose来进行编排管理在 Web 应用中,常常需要将前端的请求通过反向代理转发到后端应用服务器。在这里,我们将使用Docker Compose 来编排 Nginx 和 Tomcat 两个服务。Nginx 将作为前端的反向代理服务器,接收客
户端请求并将其转发到后端的 Tomcat 容器。Tomcat 则负责处理 Web 应用的请求。
1.2 YAML 基本语法
在上文我们提到过docker-compose.yml模板文件要用YAML格式书写,那么我们有必要知道YAML的基本语法应该怎么书写。
概念:YAML(YAML Ain't Markup Language)是一种简洁的数据序列化格式,常用于配置文件。它比 JSON加简洁易读,并且支持更复杂的数据结构。
大小写敏感:YAML 是大小写敏感的,所以一定要注意区分大小写。
缩进:YAML 使用空格进行缩进,不支持 TAB 缩进。通常推荐使用两个空格作为一个层级的缩进。
列表:列表项使用 - (短横线)表示。
字典:字典使用 : (冒号)连接键值对,冒号后面需要加一个空格。
注释:使用 # 来添加注释。
字符串:如果字符串包含特殊字符,可以使用单引号 ' 或双引号 " 来包裹。
(特别注意:缩进会影响组的编排)
举例:(拿nginx与tomcat举例)

1.3 Docker Compose配置常用字段和命令

1.4 文件结构与配置
1.4.1 文件结构
opt目录下:
compose(装所有文件与目录)
compose目录下:(compose文件与要创建的各个容器目录)
nginx文件、tomcat文件、docker-compoes.yml文件

nginx:(nginx的Dockerfiel中所有需要的文件或压缩包)
CentOS-Base.repo(配置yum) 、Dockerfile(构建镜像文件) 、nginx-1.20.2.tar.gz(nginx压缩包)

tomcat:(tomcat的Dockerfiel中所有需要的文件或压缩包)
apache-tomcat-8.5.16.tar.gz(tomcat压缩包)、CentOS-Base.repo(yum源)、Dockerfile(镜像创建文件)、java(压缩包,配置java环境)

1.4.2 文件配置(nginx的Dockerfile文件)
FROM centos:7------------------------------------基本镜像为centos:7
MAINTAINER this is nginx images ---------------------------------维护镜像的用户信息(非必要)
ADD CentOS-Base.repo /etc/yum.repos.d/ ------------------------------将当前目录下的CentOS-Base.repo文件传输并解压到此容器的/etc/yum.repos.d目录中
RUN yum clean all && yum makecache ------------------------------------清理缓存,生成新缓存
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make ------------------安装nginx所需的依赖包
RUN useradd -M -s /sbin/nologin nginx ------------------------------创建nginx的系统用户
ADD nginx-1.20.2.tar.gz /usr/local/src ------------------------------------发送并解压nginx安装包
WORKDIR /usr/local/src/nginx-1.20.2 ------------------------------切换到nginx目录
RUN ./configure \
--prefix=/usr/local/nginx
--user=nginx
--group=nginx
--with-http_stub_status_module
RUN make && make install ------------------------------编译安装
ENV PATH /usr/local/nginx/sbin:$PATH ------------------------------------设置变量(全局)
EXPOSE 80 ------------------------定义端口(httpd)
EXPOSE 443 ------------------------定义端口 (httpds)
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"] ------------------------------容器启动命令

1.4.3 文件配置(tomcat的Dockerfile文件)

1.4.4 配置docker-compose.yml文件
前文有过很详细的解释,这里就不解释了

1.4.5 启动docker-compose.yml文件
docker-compose -f docker-compose.yml up -d ------------------------------在后台启动docker-compose.yml文件

访问 10.0.0.10:7777 ------------------------------------访问tomcat页面
访问 10.0.0.10:888 ------------------------------------访问nginx页面
二、 Docker-Harbor 私有仓库部署与管理
2.1 Harbor 架构
Harbor 在架构上主要有 Proxy、Registry、Core services、Database(Harbor-db)、Log
collector(Harbor-log)、Job services 六个组件
Proxy:反向代理,用于处理客户端请求。
Registry:存储 Docker 镜像的核心组件,支持 Docker 的 push 和 pull 操作。
Core Services:包含 Web 界面、API 和 Webhook 等服务。
Database:保存 Harbor 的配置和镜像的元数据。
Job Services:处理镜像复制等异步任务。
Log Collector:收集 Harbor 各组件的日志。
数据流向分析:
1.Docker客户端 / 浏览器:
用户通过 Docker 客户端或者浏览器进行交互。
2.Proxy(代理):
客户端的请求会通过代理转发,可能是为了负载均衡或处理一些中间层逻辑。
3.Core services(核心服务):
包含 UI、token 和 webhook。这些服务处理用户请求的业务逻辑,比如 UI 提供用户界面,token 服务管理认证,webhook 可能用于触发外部通知或事件。
4.Registry(注册表):
这是容器镜像的存储地方,核心服务会与 Registry 交互来存储或获取镜像。
5.Database(数据库):
Core services 还与数据库交互,用来存储与 Harbor 相关的元数据、配置、用户信息等。
6.Job services(作业服务):
处理后台任务和作业,可能包括镜像同步、清理任务等。
7.Log Collector(日志收集器):
系统会收集日志以便后期分析和排查。
8.Replication to remote Harbor instances(同步到远程 Harbor 实例):
可能用于在多个 Harbor 实例之间同步镜像,保证镜像的高可用和分布式存储。
2.2 搭建本地私有仓库
私有镜像仓库的核心是 Docker Registry ,我们通过以下命令下载官方的 registry 镜像:
第一步 拉取私有仓库镜像
docker pull registry ------------------------------------下载私有仓库镜像

第二步 编辑 Docker 配置文件 /etc/docker/daemon.json ,并添加私有仓库地址
vim /etc/docker/daemon.json ------------------------------------------配置docker守护进程

在修改完配置文件后,要重启服务
systemctl daemeo-relaod ------------------------------------ 重新加载服务
systemctl restart docker.service ------------------------------------ 重启docker服务
第三步 开启镜像仓库
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest ------------------------------后端开启镜像仓库,端口映射到宿主机的5000端口

2.3 部署 Harbor 服务
环境配置(前置)
10.0.0.100 harbor私有仓库服务端
10.0.0.10 客户端
关闭防火墙与网络增强服务
第一步 安装harbor服务
tar zxvf harbor-offline-installer-v2.4.0.tgz -C /usr/local/

(这里已经安装完成)
第二步 修改harbor配置文件
关于 Harbor.yml 配置文件中有两类参数:所需参数和可选参数
1、所需参数:这些参数需要在配置文件 Harbor.yml 中设置。如果用户更新它们并运行 install.sh 脚
本重新安装 Harbor, 参数将生效。
2、可选参数:这些参数对于更新是可选的,即用户可以将其保留为默认值,并在启动 Harbor 后在
Web UI 上进行更新。如果进入 Harbor.yml,只会在第一次启动 Harbor 时生效,随后对这些参数的
更新,Harbor.yml 将被忽略。
vim /usr/local/harbor/harbor.yml ------------------------------编辑harbor配置文件(定义harbor私有仓库的ip和私有仓库的管理员用户和密码)

第三步 启动harbor
cd /usr/local/harbor ------------------------------切换到harbor目录
./prepare ------------------------------------------为 harbor 启动的容器生成一些必要的文件

./install.sh ------------------------------------启动harbor

harbor容器启动成功


(到现在为止,私有仓库搭建完毕,接下来测试客户端登录)
2.4 客户端
第一步 尝试登录私有仓库
docker -u admin -p Harbor12345 10.0.0.100

这里会显示https拒绝连接,因为Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜像默认使用的是 HTTP 服务,所以与私有镜像交互时出现错误。
所以为了让 Docker 客户端能够访问私有仓库,配置文件需要添加 --insecure-registry 参数。


第二步 在harbor仓库中创建一个新项目便于放数据库


第三步 上传一个镜像,并查看harbor仓库
在上传镜像之前需要将镜像打标签,格式为ip/harbor项目名/镜像
docker tag centos:7 10.0.0.100/yjs/centos:7 ------------------------------打标签


第四步 验证harbor是否有镜像

上传成功
总结
本文继续为大家讲解docker知识,本文主要为compose编排内容与harbor知识点,希望本文对大家有所帮助,谢谢大家😜