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环境 , mysql

docker 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-cases

2.菜鸟文档

3.还有一个不错的教程,每一个参数不认识的可以来这里看看
https://yeasy.gitbook.io/docker_practice/compose/
这个网站也不错

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

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

shell 脚本

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

docker-compose.yml

相关推荐
功德+n2 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
小敬爱吃饭3 小时前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘
木子欢儿3 小时前
Docker Hub 镜像发布指南
java·spring cloud·docker·容器·eureka
coppher5 小时前
Ubuntu 22.04 amd64 离线安装 Docker 完整教程
linux·docker
虚伪的空想家6 小时前
k8s集群configmap和secrets备份脚本
linux·容器·kubernetes
SXJR6 小时前
k8s中的Pod
云原生·容器·kubernetes
文静小土豆6 小时前
K8s 滚动更新在 Java 应用中的实践与优化
java·容器·kubernetes
w6100104667 小时前
CKA-2026-Ingress
云原生·容器·kubernetes·cka
bloglin999997 小时前
docker logs 如何一直监听日志输出
运维·docker·容器
说实话起个名字真难啊8 小时前
Docker 入门之网络基础
网络·docker·php