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

docker-compose容器单机编排

docker-compose容器单机编排

开篇前言

随着网站架构的升级,容器的使用也越来越频繁,应用服务和容器之间的关系也越发的复杂。

这个就要求研发人员能更好的方法去管理数量较多的服务器,而不能手动挨个管理。

例如一个LNMP 架构,就得部署web服务器,后台的程序,数据库,负载均衡等等都需要统一的部署在容器中,那么这个时候就需要统一的容器编排服务,docker-compose,通过单独的docker-compose.yml.模板文件定义一组相关联的应用服务器。

多看看官方文档

看看官方的资料
https://docs.docker.com/compose/compose-file/

第三方的资料也可以看看

https://yeasy.gitbook.io/docker_practice/compose/

在这里插入图片描述

为什么要学习docker-compose

当你去运行一组应用的容器,多组的应用,里面会有很多的容器。

应用1,crm系统,lnmp、8个容器之间,都有关系,如大家都是属于哪一个网段 192.168.15.0/24
8个容器之间的 网络用哪一个网桥
8个容器都要暴露出哪些端口
8个容器都要定义哪些数据卷

应用2 同上,12个容器
12个容器 docker run *  12定义好yaml文件【描述好,你要的】

命令化的一个部署

docker run 运行的时候,再临时传入参数,
–network
-v
–link


yaml 脚本化的部署方式

ansible all -m shell -a ‘xxxx’

install-lnmp.yaml 先描述好,脚本要部署的环境

定义好yaml文件,【描述好 你要】

  1. 用的网桥是谁
  2. 存储卷
  3. 容器和容器之间的依赖关系

自己写过那些yaml脚本

  • ansible playbook ,role 脚本
  • docker-compose.yaml 买哦书容器部署的脚本【描述好,你要部署什么,什么镜像,什么存储】
  • k8s的资源描述yaml【先描述好,你要部署什么,什么存储】

总结一句话,先想好要敲什么命令,再把命令转化成yaml的语法形式

机器上看到的一组运行的服务器

定义一组docker-compose 网站类的服务

web服务器 image : nginx

后台运行的程序服务 images : php-centos python-centos

在这里插入图片描述

compose 是基于定义和运行多个容器的一个docker内置工具

compose 需要你,自己去定义yaml文件来描述多个容器之间的关系

写好yaml之后,基于compose命令去读取yaml内容

如何用docker-compose

1.定义好你容器的关系
nginx
php
mysql
redis 
...yaml语法该怎么样去写,有哪些字段?该用什么语法?缩进关系是什么看看官方的资料
https://docs.docker.com/compose/compose-file/

在这里插入图片描述

所有的高级软件,最精准的资料都在这里找

下一步学习k8s官方的资料,没有这个官网完美

在这里插入图片描述

如何查看官网资料,理解字段如何写

在这里插入图片描述

如何查阅官网的docker-compose字段

在这里插入图片描述

LNMP 公司php后端的员工管理系统

nginx , php , mysql 他们都走互相的主机名

  1. –name mysql

  2. –name my-php --link mysql

  3. –name my-nginx --link my-php

# 比如部署wordpress 到容器里
docker run 挨个运行,每一个容器的环境# 服务1 nginx,web服务,代理服务
# 现有的宿主机nginx的运行环境,迁移到容器里面去 /etc/nginx/docker run -d --name mynginx -p 80:80\
-v /etc/nginx/:/etc/nginx \
-v /var/log/nginx:/var/log/nginx nginx:latest# 服务2 php服务,提供后端服务,wordpress , 官方镜像,php的运行环境。# 先基于dockerfile构建镜像,php+centos环境 , mysqldocker run -d -v 宿主机目录:容器内的目录 myphp 

1.要清楚启动容器的顺序,------- 你写的yaml脚本中各个服务的依赖关系

2.容器启动的参数,如网络,数据卷,端口暴露,这是每一个制定的服务,设置的参数。

安装docker-compose

[root@docker-110 ~]# file /usr/bin/docker-compose 
/usr/bin/docker-compose: cannot open (No such file or directory)# 有的化先删除或者优化curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose# 看看这个命令的信息
file /usr/local/bin/docker-compose 
/usr/local/bin/docker-compose: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 3.2.0, BuildID[sha1]=3507aa01d32c34dc8e8c6462b764adb90a82768d, stripped# 给他加上执行的权限
[root@docker-110 ~]# chmod +x /usr/local/bin/docker-compose 

docker-compose命令整理

# 默认使用docker-compose.yml构建镜像
$ docker-compose build
$ docker-compose build --no-cache # 不带缓存的构建# 指定不同yml文件模板用于构建镜像
$ docker-compose build -f docker-compose1.yml# 列出Compose文件构建的镜像
$ docker-compose images                          # 启动所有编排容器服务
$ docker-compose up -d# 查看正在运行中的容器
$ docker-compose ps # 查看所有编排容器,包括已停止的容器
$ docker-compose ps -a# 进入指定容器执行命令
$ docker-compose exec nginx bash 
$ docker-compose exec web python manage.py migrate --noinput# 查看web容器的实时日志
$ docker-compose logs -f web# 停止所有up命令启动的容器
$ docker-compose down # 停止所有up命令启动的容器,并移除数据卷
$ docker-compose down -v# 重新启动停止服务的容器
$ docker-compose restart web# 暂停web容器
$ docker-compose pause web# 恢复web容器
$ docker-compose unpause web# 删除web容器,删除前必需停止stop web容器服务
$ docker-compose rm web  # 查看各个服务容器内运行的进程 
$ docker-compose top     # 合集命令
build
config -q
create
down
events
exec
help
images
kill
logs
pause
restart
rm
run
scale
start
stop
top
unpause
up

docker-compose语法

1.官方文档
https://compose-spec.github.io/compose-spec/#use-cases2.菜鸟文档3.还有一个不错的教程,每一个参数不认识的可以来这里看看
https://yeasy.gitbook.io/docker_practice/compose/
这个网站也不错

在这里插入图片描述

如何理解yaml的元素关系以及作用

在这里插入图片描述

不可能一上来就从头开始写 yaml

shell 脚本

  1. 多看
  2. 多模仿
  3. 熟练看懂较多的脚本后,理解大部分的字段是什么作用,缩进关系,以及改写什么参数,以及遇见不认识的参数,从哪里找资料。
  4. 模仿改造为你自己的脚本,【如智能汽车运行系统】,跑起来,ubuntu里面。。
    【wordpres运行系统】
  5. #docker-compose v3 三代版本,能用最新的字段

docker-compose.yml

http://www.xdnf.cn/news/998497.html

相关文章:

  • el-select+el-tree实现树形下拉选择
  • tabs页签嵌套表格,切换表格保存数据不变并回勾
  • CSS 外边距合并(Margin Collapsing)问题研究
  • Karate 与Playwright的比较和融合
  • spring boot项目整合mybatis实现多数据源的配置
  • RAG Food Project
  • GAN+ECA注意力机制实现图像超分辨率重建
  • ESP32-C3FH4X—低功耗、高集成度的 MCU 系统级芯片 (SoC)
  • 基于数据库实现配置管理和定时任务启停
  • 强化学习:策略梯度概念
  • word用endnote插入国标参考文献
  • 在 Flutter 项目中iOS 的 App 图标和 App 名称 的设置
  • 探索 Excel-to-JSON:高效数据转换的利器
  • Linux Alias 魔法:命令行效率提升秘籍
  • R语言缓释制剂QBD解决方案之四
  • RK3588 + Ubuntu24.04 部署 rknn 模型——不用[特殊字符]版全流程教程
  • 管家婆软件下载中心-管家婆软件辉煌安装包下载、应用程序、最新版软件
  • STL难记忆却常用的用法集合(持续更新中)
  • 自动驾驶系统研发系列—AI大模型驱动的智能座舱:从概念到落地的工程解析
  • MonkeyOCR: 基于结构-识别-关系三元组范式的文档解析
  • 客户端登录not foud的问题解决
  • PostgreSQL 用户名大小写处理规则
  • 黑龙江亿林网络启盛裸金属服务器评测:24 核 32G + 联通千兆共享,高负载业务的新利器
  • ​​​​​​​《TCP/IP协议卷1》第9章 IP选路
  • 鸟类识别与分类相关数据集(猫脸码客第252期)
  • 医疗行业网络安全的综合防护策略
  • 大模型在关键社会领域的应用研究:金融、医疗和法律
  • 一种安全实用、准确率高的Text2Sql方案
  • element 跨页选中,回显el-table选中数据
  • 《linux2.4内存管理》第3章 页表管理