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

容器编排工具Docker Copmose

Docker Compose 概述

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。

其是官方的一个开源项目,托管到github上

https://github.com/docker/compose

主要功能


1. 定义服务:
使用 YAML 格式的配置文件来定义一组相关的容器服务。每个服务可以指定镜像、端口映射、
环境变量、存储卷等参数。
例如,可以在配置文件中定义一个 Web 服务和一个数据库服务,以及它们之间的连接关系。
2. 一键启动和停止:
通过一个简单的命令,可以启动或停止整个应用程序所包含的所有容器。这大大简化了多容器
应用的部署和管理过程。
例如,使用 docker-compose up 命令可以启动配置文件中定义的所有服务,使用 docker compose
down
命令可以停止并删除这些服务。
3. 服务编排:
可以定义容器之间的依赖关系,确保服务按照正确的顺序启动和停止。例如,可以指定数据库
服务必须在 Web 服务之前启动。
支持网络配置,使不同服务的容器可以相互通信。可以定义一个自定义的网络,将所有相关的
容器连接到这个网络上。
4. 环境变量管理:
可以在配置文件中定义环境变量,并在容器启动时传递给容器。这使得在不同环境(如开发、
测试和生产环境)中使用不同的配置变得更加容易。
例如,可以定义一个数据库连接字符串的环境变量,在不同环境中可以设置不同的值。

工作原理

1. 读取配置文件
Docker Compose 读取 YAML 配置文件,解析其中定义的服务和参数。

2. 创建容器
根据配置文件中的定义,Docker Compose 调用 Docker 引擎创建相应的容器。它会下载所需
的镜像(如果本地没有),并设置容器的各种参数。

3. 管理容器生命周期
Docker Compose 监控容器的状态,并在需要时启动、停止、重启容器。
它还可以处理容器的故障恢复,例如自动重启失败的容器。

Docker Compose 中的管理层
1. 服务 (service) 一个应用的容器,实际上可以包括若干运行相同镜像的容器实例
2. 项目 (project) 由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中
定义
3. 容器(container)容器是服务的具体实例,每个服务可以有一个或多个容器。容器是基于服务定义的镜像创建的运行实例


[root@ens160 ~]# vim ~/.vimrc

set ts=2 sw=2 ai et

[root@ens160 test]# vim docker-compose.yml

查询docker compose ps得在yaml文件所在的目录查询

停止不会删除容器

down会把容器删掉

运行的不会默认的docker-compose.yml

[root@ens160 test]# docker compose -f lilee.yml up -d

不用加version ,rhel7要加

查看日志

[root@ens160 test]# docker compose logs -f lilee.yml logs web

构建镜像

[root@ens160 test]# cat docker-compose.yml
services:
test1:
image: test1
build:
context: /root/docker
dockerfile: Dockerfile
command: ["/bin/sh",-c,"sleep 100000"]
container_name: lee1
test2:
image: test2
build:
context: /root/docker
dockerfile: lee
command: ["/bin/sh",-c,"sleep 100000"]
container_name: lee2

[root@ens160 docker]# cd test/
[root@ens160 test]# docker compose up -d

[root@ens160 test]# pwd
/root/docker/test


warning


[root@ens160 test]# docker compose build

[root@ens160 test]# docker compose up -d

[root@ens160 test]# docker compose exec -it test1 /bin/sh

检查语法

[root@ens160 test]# docker compose  config
没有问题则打印

[root@ens160 test]# docker compose  config -q

未开端口

mysql


[root@ens160 test]# docker inspect test-test1-1

网络

默认网络

利用网络自带的网络

默认是docker0上的网络

none同样的设定 network_mode: none

自定义

会报错

services:test1:image: busybox:latestcontainer_name: testcommand: ["/bin/sh","-c","sleep 100000"]network_mode: defaulttest2:image: busybox:latestcontainer_name: test2command: ["/bin/sh","-c","sleep 100000"]networks:- mynet1- mynet2
networks:default:external: truename: bridgemynet1:driver: bridgemynet2:ipam:driver: defaultconfig:- subnet: 172.26.0.0/24gateway: 172.26.0.254

数据卷

services:test1:image: busybox:latestcontainer_name: testcommand: ["/bin/sh","-c","sleep 100000"]network_mode: defaulttest2:image: busybox:latestcontainer_name: test2command: ["/bin/sh","-c","sleep 100000"]networks:- mynet1- mynet2volumes:- data:/data
networks:default:external: truename: bridgemynet1:driver: bridgemynet2:ipam:driver: defaultconfig:- subnet: 172.26.0.0/24gateway: 172.26.0.254volumes:data:name: lee

compose企业示例

[root@ens160 test]# dnf install haproxy -y --downloadonly --downloaddir=/mnt

[root@ens160 conf]# vi haproxy.cfg

services:web1:image: nginx:1.23container_name: web1expose:- 80volumes:- web1_data:/usr/share/nginx/htmlnetworks:- mynet1web2:image: nginx:1.23container_name: web2expose:- 80volumes:- web2_data:/usr/share/nginx/htmlnetworks:- mynet1haproxy:image: haproxy:2.3container_name: haproxyexpose:- 80ports:- "80:80"volumes:- /mnt/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfgnetworks:- mynet1networks:mynet1:driver: bridgevolumes:web1_data:name: web1_dataweb2_data:name: web2_data

[root@ens160 haproxy]# mv haproxy.cfg /mnt
[root@ens160 haproxy]# cd /mnt/


文章转载自:

http://l5T43pl5.qpwbz.cn
http://1nXi58KM.qpwbz.cn
http://LUR1lFZL.qpwbz.cn
http://dDEYWrrn.qpwbz.cn
http://TOMJKCXv.qpwbz.cn
http://vFdAHQZe.qpwbz.cn
http://nG1HFGwa.qpwbz.cn
http://QTGiK1QD.qpwbz.cn
http://pyxXHtio.qpwbz.cn
http://fVNya81v.qpwbz.cn
http://oeeCdvnh.qpwbz.cn
http://EJAlo0Qq.qpwbz.cn
http://jhJlvl3t.qpwbz.cn
http://1uSaP2Iy.qpwbz.cn
http://XLh9SVwd.qpwbz.cn
http://wIbq3nyr.qpwbz.cn
http://jeliMPFg.qpwbz.cn
http://13oF3apu.qpwbz.cn
http://vhYSqX9h.qpwbz.cn
http://ScGlxZdJ.qpwbz.cn
http://0VMbwtPd.qpwbz.cn
http://IWpesWBW.qpwbz.cn
http://VkNGoQci.qpwbz.cn
http://jpNRcEad.qpwbz.cn
http://NHmHXK21.qpwbz.cn
http://xQQgamcR.qpwbz.cn
http://UbcP3UzZ.qpwbz.cn
http://00tAJvzl.qpwbz.cn
http://xfuN3uod.qpwbz.cn
http://5x7CLSnj.qpwbz.cn
http://www.dtcms.com/a/377337.html

相关文章:

  • 黑马点评高级篇第7节课 输入INFO replication 显示0个从节点,但是在7002节点又显示它已经是7001节点的从节点了
  • 单例模式(C++)详解(1)
  • 回声消除AEC初探
  • 9 如何评估 AI 产品的效果
  • C6.9:三极管的四种常用晶体管放大器的简述
  • C语言深度入门系列:第十一篇 - 动态内存管理与数据结构:程序世界的高效算法大师
  • FPGA雷达信号处理之:自适应门限阈值
  • 某个工程 pom.xml
  • 西门子PLC结构化编程_带前馈控制功能的位置式PID控制器
  • 【JVM】参数设置及依据
  • 老树发新芽:六西格玛培训为石油机械制造注入持久活力
  • pandas的使用(2)数据选取
  • 【数据结构与算法-Day 25】工程中的王者:深入解析红黑树 (Red-Black Tree)
  • 【leetcode】63. 不同路径 II
  • 低压电工作业操作证的考试难度如何?
  • 【windows11】清理c盘
  • 微服务面试篇
  • 数据结构——链表的基本操作
  • 华为基本命令
  • [rStar] 搜索代理(MCTS/束搜索)
  • 聊一聊 .NET 某跨境物流系统 内存暴涨分析
  • langchain+通义千问,实现简单地RAG应用
  • 【Spring】原理解析:Spring Boot 自动配置
  • 象形柱状图(Vue3)
  • RESTful API:@RequestParam与@PathVariable实战对比
  • 【ESP系列】ESP32S3
  • kafka集群部署与使用
  • Linux-Shell编程之sed和awk
  • 无人设备遥控器之状态反馈技术篇
  • 4.远程控制网络编程的设计下