当前位置: 首页 > news >正文

docker的核心概念整理:docker-compose

docker-compose

理解一个服务,我们尝试将自己代入,开发者的角色去思考

这个服务,为什么叫这个名字?

docker是什么意思?

英文的意思是码头工人

码头工人的主要工作之一

是把货物搬至集装箱,

进而货轮将集装箱运转至目的地

达成经济学上物流的目的,

实现了货物从提供方到需求方的运输。

我们可以理解为,

docker容器管理工具,

将镜像文件push推进镜像仓库

镜像仓库可以为镜像的需求方提供下载服务。

而docker在这里起到了

将只读文件搬进镜像仓库的作用。

与码头工人将货物搬进集装箱的工作类似。

docker pull从镜像仓库拉镜像的动作

也类似于码头工人从集装箱把货物搬下来的动作。

docker run

可以运行容器,

让镜像文件发挥作用

码头工人对本地的货物也会进行一些操作,

比如拆箱,

分发给不同客户等动作

让这些货物到达终端消费者的手中,实现服务的本地化。

所以

docker对于镜像和容器的管理,

就类似于码头工人对集装箱和货物的管理。

那么计算机领域的docker

就是将服务运行需要的环境代码进行打包。

方便需求方进行消费。

计算机领域的搬运工,

需要一些物理资源就可以运行,

比如电、计算、存储、网络资源

对于人类来讲,消耗一些这些,比人们体力劳动要简单一些

所以docker服务发布之后,受到很大的欢迎。

消耗较小,作用较大。

那么我们知道

docker主要是管理镜像和容器的

单机管理容器docker很擅长

但是市场对于服务的需求是综合化的

单一的容器提供的服务比较有限

如何让多个容器一起提供服务呢?

也就是实现架构的容器化

比如nginx+php动静分离

这个时候就是

docker-compose出场了

既然难搞

那就一起搞

什么是compose?

com+pos

什么是com?

company       一起干活,叫公司

compare       一起看看哪个树更高,叫比较

computer      一起思考,一起计算,叫计算机

所以

com

就是一起的意思

什么是pos?

来自于希腊语,是to put,  to place

就是放置的意思

那么

什么是compose?

就是放一起

那么

什么是docker-compose?

就是

码头工人-放一起

把什么放一起?

把多个容器放一起

放在哪里?

放在同一个文件里

这叫什么?

叫项目

大家常说的项目

往往指的是

需要多个服务协作的工程。

而docker-compose

就是把多个容器服务,放在同一个文件里,协作关系写好

运行项目,实现项目

所以

docker-compose是干什么的?

就是做项目的

~]# vim docker-compose.yaml 
name: forweb
version: "3"
services:nginxabc:container_name: nginximage: myos:nginxrestart: alwaysvolumes:- type: bindsource: /root/conf/nginx.conftarget: /usr/local/nginx/conf/nginx.conf- type: bindsource: /var/webroottarget: /usr/local/nginx/htmlnetwork_mode: bridgeports:- 80:80environment:- "TZ=Asia/Shanghai"php-fpmabc:container_name: php-fpmimage: myos:php-fpmrestart: alwaysvolumes:- type: bindsource: /var/webroottarget: /usr/local/nginx/htmldepends_on:- nginxsvcnetwork_mode: "container:nginx"

这个项目

名字叫forweb

这个项目

里面有两个服务

一个叫nginxabc

一个叫php-fpmabc

两个服务合作

实现web服务的动静分离

项目里面

说了

这两个容器

网络怎么通信

容器叫什么名字

启动容器用什么镜像

和主机怎么卷绑定

容器端口和主机端口怎么绑定

环境变量时区用哪个

两个容器谁先启动

第二个容器用不用第一个容器的网卡

两个容器的重启策略是怎样的

是no

还是onfailure

还是always

是不重启

还是退出码是错误的时候重启

还是只要掉线就重启

所以

什么是docker-compose?

是码头工人一起工作

让多个容器放在同一个文件

组成一个项目

让这个多容器的项目启动起来

对这个多容器的项目进行管理

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Skyvern:基于LLM和CV的开源RPA
  • sudo 命令:掌握系统权限控制,实现安全高效管理
  • 安卓中有main函数吗?
  • Qwen2-VL论文阅读笔记
  • 智慧安防监控EasyCVR视频汇聚管理平台如何修改视频流分辨率?
  • 从零开始之AI面试小程序
  • 网站建设中,JavaScript为什么现在可以做后台了?
  • 【JavaEE】数据链路层协议和DNS
  • Qemu开发ARM篇-5、buildroot制作根文件系统并挂载启动
  • 【后端】【语言】【python】python常见操作
  • 【计网】从零开始掌握序列化 --- 基础知识储备与程序重构
  • Elasticsearch黑窗口启动乱码问题解决方案
  • Eigen之SelfAdjointEigenSolver
  • 【TS】TypeScript内置条件类型-ReturnType
  • 实时监控,动态调整 —— 淘宝商品详情API助力商家实现灵活经营
  • 《Java编程思想》读书笔记-对象导论
  • 0x05 Python数据分析,Anaconda八斩刀
  • CAP理论的例子讲解
  • EOS是什么
  • ES10 特性的完整指南
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • MobX
  • QQ浏览器x5内核的兼容性问题
  • SpringBoot 实战 (三) | 配置文件详解
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • Web标准制定过程
  • windows下如何用phpstorm同步测试服务器
  • WinRAR存在严重的安全漏洞影响5亿用户
  • XForms - 更强大的Form
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 从0实现一个tiny react(三)生命周期
  • 基于HAProxy的高性能缓存服务器nuster
  • 那些被忽略的 JavaScript 数组方法细节
  • 如何胜任知名企业的商业数据分析师?
  • 移动端 h5开发相关内容总结(三)
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • !!java web学习笔记(一到五)
  • ######## golang各章节终篇索引 ########
  • #100天计划# 2013年9月29日
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • #每天一道面试题# 什么是MySQL的回表查询
  • ${factoryList }后面有空格不影响
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (九)One-Wire总线-DS18B20
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (四)事件系统
  • (算法二)滑动窗口
  • (循环依赖问题)学习spring的第九天
  • (转)setTimeout 和 setInterval 的区别
  • ***测试-HTTP方法
  • .net 7和core版 SignalR
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务