Docker Compose 的前身是 Fig,它是一个定义及运行多个 Docker 容器的工具
使用Docker compose不在需要使用shell脚本来启动容器
使用Docker Compose 时,只需要在docker-compose.yml配置文件中定义多个 Docker 容器,然后使用一条命令启动这些容器
Docker Compose 非常适合组合使用多个容器进行开发的场景
Compose 是 Docker 的服务编排工具,主要用来构建基于 Docker 的复杂应用 Compose 通过一个配置文件管理多个 Docker 容器
YAML是一种标记语言很直观的数据序列化格式,可读性高
不支持制表符 tab 键缩进,需要使用空格缩进
通常开头缩进两个空格
字符后缩进一个空格,如冒号、逗号、横杆
用#号注释
如果包含特殊字符,要使用单引号('')引起来
布尔值(true、 false、 yes、 no、 on、 off)必须用引号("")括起来,这样分析器会将它们解释为字符串
字段 | 描述 |
---|---|
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 | 容器主机名 |
字段 | 描述 |
---|---|
build | 重新构建服务 |
ps | 列出容器 |
up | 创建和启动容器 |
exec | 在容器里面执行命令 |
scale | 指定一个服务容器启动数量 |
top | 显示容器进程 |
logs | 查看容器输出 |
down | 删除容器、网络、数据卷和镜像 |
stop/start/restart | 停止/启动/重启服务 |
# 下载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
# 编写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 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。它以 Docker 公司开源的 Registry 为基础,提供了管理 UI、基于角色的访问控制(Role Based AccessControl) 、AD/LDAP 集成、以及审计日志(Auditlogging) 等企业用户需求的功能。通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 Docker Distribution。作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全,以提升用户使用 Registry 构建和运行环境传输镜像的效率。
基于角色控制
用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限
基于镜像的复制策略
镜像可以在多个 Harbor 实例之间进行复制(同步),适用于负载平衡、高可用性、多数据中心、混合和多云场景
支持LDAP/AD
Harbor 与现有的企业 LDAP/AD 集成,用于用户认证和管理
图像删除和垃圾收集
镜像可以被删除,也可以回收镜像占用的空间
图形UI
用户可以轻松浏览、搜索镜像仓库以及对项目进行管理
审计
对存储库的所有操作都进行记录
RESTful API
用于大多数管理操作的 RESTful API,易于与外部系统集成
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,供日后进行分析
# 安装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
# 下载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
# 安装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
默认用户admin,密码Harbor12345
创建项目
查看推送命令
# 安装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
# 配置文件需要手动创建 vim /etc/docker/daemon.json ##添加以下内容 { "insecure-registries": ["172.16.10.10"] ##添加私有仓库服务端ip地址 } # 重载 systemctl daemon-reload # 重启docker systemctl restart docker
# 登录连接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
# 向仓库推送上传镜像(必须要登录连接私有仓库) ##在项目中标记镜像(设置在项目中的名称): ##语法: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
# 语法:docker pull 仓库服务端ip/项目名称/镜像名:标签 docker pull 172.16.10.10/kgc/kgc:nginx
也可以从仓库web页面复制pull链接进行下载
将命令粘贴到命令行即可