第一周第三天任务

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

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:latestports:- "80:80"database:image: mysql:5.7environment: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 中,从而实现企业级的容器镜像管理。
(完)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/50617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多通道音频解决方案

多通道音频解决方案在现代音频应用中具有广泛的应用,特别是在需要处理多个音频信号、实现复杂声音场景和提升用户体验的场合。比如音乐录制和影视和游戏音效设计等等。 音乐录制与制作音乐录制 需求: 音乐录制工作室需要能够同时录制和处理多个音轨,以便…

百度地图埋点动态插入到页面不生效, 定位发现是 document.write 缘故,不能异步引入该埋点 js

背景: 为提高页面加载速度, 根据地址的不同加载不同的 script (Vue 项目, 一份代码放到多个地址, 根据地址不同显示不同登录页), 结果引用的百度地图 api 失效 定位: 发现埋点 js 引入成功, 该 js 生成的内容是 document.write 再引入 js , css 文件, 这些文件没有加载出来 …

MathType 7.8中文直装版2024年最新图文安装破解教程

MathType公式编辑器 v7.8中文破解版是一款适用于Windows和Macintosh的便捷交互式公式编辑器,可帮助您进行文字处理、网页、桌面设计、演示文稿制作、学习TeX、LaTeX和MathML文档创建。 MathType 7.8这个工具允许用户创建、修改公式和插入多个文档。有了这个软件&…

​CSS技巧专栏:一日一例 13 -纯CSS实现晃晃悠悠背景不停滚动的按钮特效​

CSS技巧专栏:一日一例 13 -纯CSS实现晃晃悠悠背景不停滚动的按钮特效​ 大家好,本篇文章给大家带来一个可爱的按钮,像个小宠物等待你抚摸和奖励,不知道它会不会引起你的关注呢?页面上这样的一个按钮,会不会让你忍不住把鼠标移动过去点一下呢? 本例图片 案例分析 这个…

机械学习—零基础学习日志(高数12——反三角函数)

零基础为了学人工智能,真的开始复习高数 反三角函数很困难,但是当建立了逻辑链条,还是能快速理解的。这个办法就是笛卡尔坐标系。 三角函数与反三角函数的个人理解 sinx与cosx,tanx,secx,其实都可以放在…

白嫖游戏指南,Epic喜加一:《暗影火炬城》

前言 Epic喜加一:《暗影火炬城》《暗影火炬城》简介: 前言 接下来有时间会分享一些游戏相关可以白嫖的资源,包括游戏本体、游戏素材资源等等。 有需要的小伙伴可以关注这个专栏,不定期更新哦! 专栏:白嫖…

数据库系统概述

文章目录 数据库基本概念内容重点数据库定义计算机三大主要应用领域 数据管理基础数据与信息数据处理与数据管理 数据库技术的产生、发展数据库系统的组成优势组成部分 数据模型概念类型 数据库三级模式和二级映射目的组成部分 数据库系统设计步骤小结 数据库基本概念 内容 信…

羊大师:夏夜贪凉,但为啥肚子还要‘保暖计划’?

在这个夏夜,当空调与风扇齐飞,冰镇西瓜与凉面共舞之时,你是否也曾有过这样的疑惑:明明热得汗流浃背,为啥老一辈总念叨着“睡觉再热也要给肚子盖被子”?这背后,藏着的可不仅仅是老一辈的固执&…

链路聚合加单臂路由

一、实验目的及拓扑 实验目的:在路由器及交换机之间建立链接聚合,交换机接入两台主机并通过路由器子接口自动分配IP地址,通过单臂路由实现两台主机互联 二、基本配置 1、交换机配置 [S1]vlan batch 10 20 [S1-Eth-Trunk1]dis th # interf…

小型内衣裤洗衣机哪个牌子好?五款万分翘楚机型任你挑选!

在日常生活中,内衣洗衣机已成为现代家庭必备的重要家电之一。选择一款耐用、质量优秀的内衣洗衣机,不仅可以减少洗衣负担,还能提供高效的洗涤效果。然而,市场上众多内衣洗衣机品牌琳琅满目,让我们往往难以选择。那么&a…

AI复活,让老照片动起来【数字永生】

✅ 适宜人群:关注 AI 复活缅怀逝者或以此变现的人群 内容出品人:领航猿1号 更多AI知识分享:https://www.yuque.com/lhyyh/ai/readme?singleDoc 1、前言 AI“复活”实质上是利用人工智能技术,通过对人物已有“形象、声音、语言、…

echarts多stack的legend点选

echarts支持点击legend,实现显示和隐藏legend对应的数据,具体就是option里series里,name为legend值的数据。 如果配置了多个stack,那么可能你可能设置了多组legend,你点选的是多个legend组中的某组中的一个,那么如果不…

用Python实现Cmpp协议的教程

引言&协议概述 (CMPP)是中国移动为实现短信业务而制定的一种通信协议,用于在客户端(SP,Service Provider)和中国移动短信网关之间传输短消息,有时也叫做移动梦网短信业务。CMPP3.0是该协议…

通过iframe碎片实现web局部打印

通过iframe碎片实现web局部打印 创建打印模板 首先,创建一个出货单的 HTML 模板,并用 CSS 进行样式设计。 tips: 1、直接通过iframe碎片拉起打印,会导致样式丢失,所以需要获取当前界面的样式。 ${Array.from(document.querySel…

嵌入式Linux学习: 设备树实验

设备树(DeviceTree)是一种硬件描述机制,用于在嵌入式系统和操作系统中描述硬件设备的特性、连接关系和配置信息。它提供了一种与平台无关的方式来描述硬件,使得内核与硬件之间的耦合度降低,提高了系统的可移植性和可维…

立创梁山派--移植开源的SFUD和FATFS实现SPI-FLASH文件系统

本文主要是在sfud的基础上进行fatfs文件系统的移植,并不对sfud的移植再进行过多的讲解了哦,所以如果想了解sfud的移植过程,请参考我的另外一篇文章:传送门 正文开始咯 首先我们需要先准备资料准备好,这里对于fatfs的…

第五节shell脚本中的运行流程控制(5.3)

六, 流程中断控制器 在程序运行时因为需求我们需要在某个位置中断 常用的流程控制器有一下几个 控制器名称功能return退出函数contune终止档次循环, 提前进入下一个循环break终止所在循环exit退出脚本 示例: func() { for i in {1..10} do[ "$i" -eq "4&qu…

【ESP32 IDF 软件模拟SPI驱动 W25Q64存储与读取数组】

目录 SPISPI介绍SPI时序代码编写(spi&w25q64) 代码调试 SPI SPI介绍 SPI(Serial Peripheral Interface,串行外围设备接口)是一种高速、全双工、同步的串行通信总线,常用于微控制器与各种外围设备&…

苍穹外卖浏览器前端界面修改

背景: 客户原始方案是期望做一个Spring Boot Vue的饿了么系统,但时间上太仓促,所以建议选择开源的苍穹外码目作为作业提交。 客户接受了建议的方案后,期望对前端页面做一些个性化的定制修改。 过程: 苍穹外卖简单介…

【HTML+CSS】HTML超链接:构建网页导航的基石

目录 什么是HTML超链接? 基本语法 示例 链接到另一个网页 链接到同一页面内的不同部分 常用属性 在Web开发的广阔世界中,HTML(HyperText Markup Language)作为网页内容的标准标记语言,扮演着至关重要的角色。而在…