第一周第三天任务

入职了新公司,电脑限制了公网访问,为了补上打卡进度,后面的打卡内容纯手敲文本,没有图片,不便之处请谅解,如果错误,请帮忙指正,谢谢。

11 使用docker-compose

使用一个工具,得先了解这个工具是什么,为什么要用它。

11.1 docker-compose

Docker Compose 是一个用于定义和运行多容器 Docker(容器有多种,本文统一使用docker) 应用的工具。也可以说它是一个微型的容器编排工具,配置文件使用yaml格式,用来管理、调度和协调大量容器的部署和运行。

容器为什么要编排呢?用shell脚本直接批量docker run不就完成了吗?
是的,也可以那样弄,但是不方便,shell脚本有很多弊端,如果有能力可以尝试一下ansible, 非常强大有趣的一个工具,那是另一个课程。

聊回docker-compose, 通过使用 Docker Compose,用户可以使用一个 YAML 文件来配置应用所需的所有服务,并通过一个命令来启动和管理这些服务。Docker Compose 主要适用于开发、测试和小规模的生产环境。如果规模再大就不适用了,得用真正的容器编排工具,容器编排工具包括Kubernetes、Docker Swarm、Apache Mesos等。

11.2 为什么要使用docker-compose

使用 Docker Compose 有以下几个主要原因:

1)简化多容器应用的管理

Docker Compose 允许你通过一个简单的 YAML 文件来定义和管理多容器应用。你可以在一个文件中配置所有服务,想想一个yaml文件能干几十个dockerfile的活,工作量大大降低了,并通过一个命令来启动或停止这些服务。这大大简化了多容器应用的管理。

2) 提高开发效率

Docker Compose 可以帮助开发人员快速搭建与生产环境一致的开发环境。通过 docker-compose.yml 文件,开发人员可以轻松地启动所需的所有服务,而不必手动配置每个容器。这有助于减少环境配置问题,提高开发效率。

3) 一致性和可移植性

使用 Docker Compose,可以确保在不同环境(如开发、测试和生产)中的配置一致性。只需要一个 docker-compose.yml 文件,就可以在任何支持 Docker 的平台上运行相同的应用。这提高了应用的可移植性。

4) 支持复杂应用场景

Docker Compose 支持定义复杂的多容器应用,包括服务之间的依赖关系、网络配置、卷挂载等。你可以轻松地定义和管理微服务架构中的各个组件及其相互关系。

5) 自动化部署和扩展

Docker Compose 支持自动化部署和扩展。你可以使docker-compose up 命令来自动部署所有服务,并通过修改 docker-compose.yml 文件来轻松扩展或更新服务。

6) 数据持久化和共享

Docker Compose 支持卷(Volume)的定义和管理,方便数据持久化和共享。你可以在 docker-compose.yml 文件中定义卷,并将其挂载到不同的容器中,以便实现数据持久化和共享。

7) 易于调试和监控

Docker Compose 提供了丰富的命令行工具,方便调试和监控。例如,你可以使用 docker-compose logs 查看容器日志,使用docker-compose ps 查看运行中的容器状态,使用 docker-compose exec 在运行中的容器中执行命令等。

总结:使用 Docker Compose 可以显著提高多容器应用的管理效率、开发效率以及环境的一致性和可移植性。它是一个非常强大且灵活的工具,特别适合用于开发、测试以及小规模生产环境。

示例:快速启动多容器应用
假设你有一个简单的 Web 应用,需要 Nginx 和 MySQL 两个服务,你可以通过如下的 docker-compose.yml(不保证能用,复制过程中可能缩进有误) 文件快速启动这个应用:

version: 'v0.1'
services:
    web:
        image: nginx:latest
        ports:
           - "80:80"
  database:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: 123456

然后,只需运行以下命令即可启动整个应用:

docker-compose up

12 搭建harbor私有镜像仓库

Harbor 是一个用于存储和分发 Docker 镜像的企业级私有镜像仓库。它提供了用户管理、访问控制、安全扫描等功能,适合企业级应用的需求。

容器不是有一个Docker Registry,为什么要用harbor?
Docker Registry 是 Docker 官方提供的一个基础容器镜像仓库解决方案,它功能简单,适合小规模、低复杂度的场景。然而,在企业级应用中,通常需要更强大的功能和更高的安全性,这就是为什么要使用 Harbor 的原因。

那docker-compose也是小规模的,应该和registry对等,怎么学完compose,就来学企业级harbor了?
docker registry 仅有基础镜像存储和分发功能,而harbor有用户管理和访问控制、镜像签名和验证、镜像扫描(安全漏洞)、Web 管理界面、审计日志、多租户支持(项目隔离)、LDAP/AD 集成、镜像复制(跨数据中心)等功能,两者差距大了去了。

在掌握了基本的容器编排之后,学习 Harbor 可以帮助你了解如何在企业级环境中进行镜像管理,这是一种更高级、更复杂的需求。在进入生产环境时,你需要考虑镜像的安全性、可控性和高效分发,这时候就需要使用像 Harbor 这样的企业级解决方案。

搭建 Harbor 私有镜像仓库的详细步骤:(后补)

13 将镜像推送到私有仓库harbor

将镜像推送到私有仓库 Harbor 需要以下几个步骤:

前提条件

确保已经安装并配置好 Harbor。
确保 Docker 客户端能够访问 Harbor 服务器。
确保已经在 Harbor 中创建了一个项目。
步骤一:登录到 Harbor
首先,使用 Docker CLI 登录到 Harbor。假设你的 Harbor 服务器的地址是 harbor.xxx.com。

复制代码复制代码

docker login harbor.xxx.com  

系统会提示输入用户名和密码。输入你在 Harbor 上的用户名和密码即可。

步骤二:打标签(Tag)镜像
假设你有一个本地镜像 my-image:latest,需要将其推送到 Harbor 的 myproject 项目中。在推送之前,需要给镜像打上目标仓库的标签。

复制代码复制代码

docker tag my-image:latest harbor.xxx.com/myproject/my-image:latest

这里的格式为:

复制代码复制代码
docker tag [源镜像]:[标签] [Harbor地址]/[项目名]/[目标镜像名]:[标签]
步骤三:推送镜像到 Harbor
使用 docker push 命令将打好标签的镜像推送到 Harbor 仓库。

复制代码复制代码

docker push harbor.xxx.com/myproject/my-image:latest

推送成功后,你可以在 Harbor 的 Web 界面上看到刚刚上传的镜像。

示例完整流程
假设你有一个本地镜像 my-app:1.0,需要将其推送到 harbor.xxx.com 的 dev-project 项目中,完整流程如下:

登录到 Harbor:

docker login harbor.xxx.com

打标签:

docker tag my-app:1.0 harbor.xxx.com/dev-project/my-app:1.0

推送镜像:

docker push harbor.xxx.com/dev-project/my-app:1.0

注意事项
HTTPS 配置:

如果你的 Harbor 使用 HTTPS 并且是自签名证书,你可能需要在 Docker Daemon 配置中添加信任该证书。

编辑或创建 /etc/docker/daemon.json 文件,添加以下内容:

{
  "insecure-registries": ["harbor.xxx.com"]
}

然后重启 Docker 服务:

sudo systemctl restart docker

访问控制:

确保你有权限向指定项目推送镜像。在 Harbor 的 Web 界面上,你可以设置用户和项目的访问权限。
命名规范:

遵循命名规范,确保项目名称、镜像名称和标签都符合约定,以便于管理和查找。
通过以上步骤,你可以将本地 Docker 镜像成功推送到私有仓库 Harbor 中,从而实现企业级的容器镜像管理。
(完)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值