了解Docker-compose及私有仓库Harbor部署管理

一、了解docker-compose

1.1 什么是docker-compose

  • Docker Compose 的前身是 Fig,它是一个定义及运行多个 Docker 容器的工具

  • 使用Docker compose不在需要使用shell脚本来启动容器

  • 使用Docker Compose 时,只需要在docker-compose.yml配置文件中定义多个 Docker 容器,然后使用一条命令启动这些容器

  • Docker Compose 非常适合组合使用多个容器进行开发的场景

了解Docker-compose及私有仓库Harbor部署管理_第1张图片

 

1.2 Docker Compose 容器编排

  • Compose 是 Docker 的服务编排工具,主要用来构建基于 Docker 的复杂应用 Compose 通过一个配置文件管理多个 Docker 容器

  • YAML是一种标记语言很直观的数据序列化格式,可读性高

1.2.1 使用 YAML 时注意事项

  1. 不支持制表符 tab 键缩进,需要使用空格缩进

  2. 通常开头缩进两个空格

  3. 字符后缩进一个空格,如冒号、逗号、横杆

  4. 用#号注释

  5. 如果包含特殊字符,要使用单引号('')引起来

  6. 布尔值(true、 false、 yes、 no、 on、 off)必须用引号("")括起来,这样分析器会将它们解释为字符串

1.2.2 docker compose配置文件常用字段描述

字段 描述
build 指定 Dockerfile 文件名
dockerfile 构建镜像上下文路径
context 可以是 dockerfile 的路径,或者是指向 git 仓库的 url 地址
image 指定镜像
command 执行命令,覆盖默认命令
container name 指定容器名称,由于容器名称是唯一的,如果指定自定义名称, 则无法 scale
deploy 指定部署和运行服务相关配置,只能在 Swarm 模式使用
environment 添加环境变量
networks 加入网络
ports 暴露容器端口,与-p 相同,但端口不能低于 60
volumes 挂载宿主机路径或命令卷
restart 重启策略,默认 no,always,no-failure,unless-stoped
hostname 容器主机名

1.2.3 Docker Compose 常用命令

字段 描述
build 重新构建服务
ps 列出容器
up 创建和启动容器
exec 在容器里面执行命令
scale 指定一个服务容器启动数量
top 显示容器进程
logs 查看容器输出
down 删除容器、网络、数据卷和镜像
stop/start/restart 停止/启动/重启服务

1.2.4 docker-compose环境安装

 # 下载docker-compose
 curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 
 # 添加执行权限
 chmod +x /usr/local/bin/docker-compose
 # 查看版本
 docker-compose -v
 docker-compose version 1.21.1, build 5a3f1a3

1.2.5 docke-compose创建容器示例

 # 编写docker-compose配置文件
 vim docker-compose.yml 
 #版本
 version: "3"
 #服务
 services:
   redis:
     #主机名
     hostname: redis
     #容器名
     container_name: redis
     #镜像
     image: redis:latest
     #端口
     ports:
       - "6379:6379"
 ​
 # 创建容器并开启
 docker-compose up  ##前台执行
 docker-compose up -d  ##后台执行
 -d 后台执行
 # 查看
 docker-compose ps  ##使用时必须在docker-compose.yml配置文件同一目录
 docker ps

二、了解Harbor

2.1 什么是 Harbor

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

了解Docker-compose及私有仓库Harbor部署管理_第2张图片

 

2.2 Harbor的优势

  • 基于角色控制

    用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限

  • 基于镜像的复制策略

    镜像可以在多个 Harbor 实例之间进行复制(同步),适用于负载平衡、高可用性、多数据中心、混合和多云场景

  • 支持LDAP/AD

    Harbor 与现有的企业 LDAP/AD 集成,用于用户认证和管理

  • 图像删除和垃圾收集

    镜像可以被删除,也可以回收镜像占用的空间

  • 图形UI

    用户可以轻松浏览、搜索镜像仓库以及对项目进行管理

  • 审计

    对存储库的所有操作都进行记录

  • RESTful API

    用于大多数管理操作的 RESTful API,易于与外部系统集成

2.3 Harbor 的构成

Harbor 在架构上主要有 Proxy、Registry、Core services、Database( Harbor-db )、Log collector(Harbor-log)五个组件。

  • Proxy 通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务

  • Registry 负责储存Docker镜像,并处理docker push/pul命令

  • Core services Harbor的核心功能,包括UI、webhook、token服务

  • Database 为core services提供数据库服务

  • Log collector 负责收集其他组件的log,供日后进行分析

三、部署Harbor私有仓库

3.1 部署docker仓库服务端

3.1.1 安装docker

 # 安装docker
 yum install -y yum-utils device-mapper-persistent-data lvm2 
 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
 yum -y install docker-ce docker-ce-cli containerd.io
 # 启动服务
 systemctl start docker
 systemctl enable docker

3.1.2 安装docker-compose

 # 下载docker-compose
 curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 
 # 添加执行权限
 chmod +x /usr/local/bin/docker-compose
 # 查看版本
 docker-compose -v
 docker-compose version 1.21.1, build 5a3f1a3

3.1.3 安装harbor

 # 安装harbor
 tar zxf harbor-offline-installer-v2.2.1.tgz -C /usr/local/
 # 配置harbor
 ##复制harbor配置文件
 cp harbor.yml.tmpl harbor.yml
 ##修改harbor配置文件
 vim harbor.yml
 #将hostname ip改为 harbor服务端ip地址
 #将https的内容加#注释
 hostname: 172.16.10.10
 ​
 # 预检查,执行/usr/local/harbor下的prepare脚本
 ./prepare 
 ​
 # 安装harbor,执行/usr/local/harbor下的install.sh脚本
 ./install.sh 

3.1.4 浏览器登录harbor私有仓库web页面

  • 默认用户admin,密码Harbor12345

了解Docker-compose及私有仓库Harbor部署管理_第3张图片 

  • 创建项目

了解Docker-compose及私有仓库Harbor部署管理_第4张图片

了解Docker-compose及私有仓库Harbor部署管理_第5张图片

  • 查看推送命令

了解Docker-compose及私有仓库Harbor部署管理_第6张图片

3.2 客户机配置私有仓库

3.2.1 安装docker

 # 安装docker
 yum install -y yum-utils device-mapper-persistent-data lvm2 
 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
 yum -y install docker-ce docker-ce-cli containerd.io
 # 启动服务
 systemctl start docker
 systemctl enable docker

3.2.2 修改docker配置文件

 # 配置文件需要手动创建
 vim /etc/docker/daemon.json
 ##添加以下内容
 {
   "insecure-registries": ["172.16.10.10"]   ##添加私有仓库服务端ip地址
 }
 ​
 # 重载
 systemctl daemon-reload 
 # 重启docker
 systemctl restart docker

3.2.3 客户机登录私有仓库

 # 登录连接docker私有仓库方式
 ##语法一:dockerlogin http://docker服务端ip地址
 docker login http://172.16.10.10
 ##语法二:dockerlogin -u用户名 -p密码 http://docker服务端ip地址
 docker login -uadmin -pHarbor12345 http://172.16.10.10
 ​

3.2.4 私有仓库上传镜像

 # 向仓库推送上传镜像(必须要登录连接私有仓库)
 ##在项目中标记镜像(设置在项目中的名称):
 ##语法:docker tag  原镜像名:原标签 仓库服务端ip/项目名称/定义镜像名:定义标签
 docker tag centos:7.6.1810 172.16.10.10/kgc/kgc:nginx
 ​
 # 推送镜像到当前项目
 ##语法:docker push 仓库服务端ip/项目名称/定义后的镜像名:定义后的标签
 docker push 172.16.10.10/kgc/kgc:nginx
 ​

3.2.5 从私有仓库下载镜像

 # 语法:docker pull 仓库服务端ip/项目名称/镜像名:标签
 docker pull 172.16.10.10/kgc/kgc:nginx
  • 也可以从仓库web页面复制pull链接进行下载

了解Docker-compose及私有仓库Harbor部署管理_第7张图片

了解Docker-compose及私有仓库Harbor部署管理_第8张图片 

  • 将命令粘贴到命令行即可

了解Docker-compose及私有仓库Harbor部署管理_第9张图片

 

你可能感兴趣的:(Docker,docker,私有仓库,docker-compose)