Docker Compse单机编排

一.Docker Compse 介绍

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,你可以使用 YAML 文件来配置应用程序的服务、网络和卷,然后使用单个命令创建和启动所有服务。这使得在开发、测试和部署过程中管理多容器应用程序变得更加简单。

github地址: GitHub - docker/compose: Define and run multi-container applications with Docker

官方地址: https://docs.docker.com/compose/

1.yml 语言

AML 文件格式及编写注意事项
YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。
类似于 json 数据描述语言,语法比 json 简单的很多。
YAML 数据结构通过缩进来表示,连续的项目通过减号来表示, 键值对用冒号分隔,数组用中括号 [] 括起来, hash 用花括号 {} 括起来

2.使用YAML时需要注意下面事项

  • 大小写敏感

  • 通过缩进表示层级关系

  • 不支持制表符 tab 键缩进,只能使用空格缩进

  • 缩进的空格数目不重要,只要相同层级左对齐,通常开头缩进2个空格

  • 用 # 号注释

  • 符号字符后缩进1个空格,如冒号 : 、逗号 , 、横杠 -

  • 如果包含特殊字符用单引号('')引起来会作为普通字符串处理,双引号(""): 特殊字符作为本身想表示的意思

指令作用演示
build指定构建上下文和可选的Dockerfile用于构建镜像。build: context: /opt/test dockerfile: Dockerfile
dockerfile指定Dockerfile的路径。通常在build部分中使用。dockerfile: Dockerfile.prod
context指定构建上下文的路径,即包含Dockerfile和构建上下文的目录路径context: /opt/test
image指定用于服务/容器的镜像名称。image: myapp:latest
command覆盖由镜像指定的默认命令command: ["python", "app.py"]
container_name为容器指定自定义名称。container_name: my_container
deploy指定部署选项,如副本和放置deploy: replicas: 3
environment为服务指定环境变量environment: - DEBUG=true
networks指定连接服务的网络networks: - frontend - backend
network_mode指定容器的网络模式network_mode: "host"
ports:将容器端口映射到主机端口ports: - "8080:80"
volumes挂载主机或其他容器的卷volumes: - "nginx-data:/usr/local/nginx/html
volumes_from从另一个服务/容器挂载卷volumes_from: - data-container
hostname:指定主机名hostname: my-container
sysctls为容器设置内核参数sysctls: - net.core.somaxconn=1024
restart重启策略restart: always
depends_on指定该服务依赖的其他服务depends_on: - mysql

3.常用指令

命令只能在docker-compose.yml的目录下执行

命令解释
build#构建镜像
bundle#从当前docker compose 文件生成一个以<当前目录>为名称的json格式的Docker Bundle 备份文件
config -q#查看当前配置,没有错误不输出任何信息
create#创建服务,较少使用
down#停止和删除所有容器、网络、镜像和卷
events#从容器接收实时事件,可以指定json 日志格式,较少使用
exec#进入指定容器进行操作
help#显示帮助细信息
images#显示镜像信息,较少使用
kill#强制终止运行中的容器
logs#查看容器的日志
pause#暂停服务
port#查看端口
ps#列出容器,较少使用
pull#重新拉取镜像,镜像发生变化后,需要重新拉取镜像,较少使用
push#上传镜像
restart#重启服务,较少使用
rm#删除已经停止的服务
run#一次性运行容器
scale#设置指定服务运行的容器个数
start#启动服务 ,较少使用
stop#停止服务,较少使用
top#显示容器运行状态
unpause#取消暂定
up#创建并启动容器 ,较少使用

二.安装和准备

1.安装Docker Compose

yum安装

yum install  epel-release.noarch  -y
yum -y install docker-compose

二进制安装

chmod +x /usr/local/bin/docker-compose
ln  -s   /usr/local/bin/docker-compose   /usr/bin

2.查看命令格式

官方文档: https://docs.docker.com/compose/reference/

docker-compose --help
Define and run multi-container applications with Docker.
Usage:docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]docker-compose -h|--help
#选项说明:  
-f,–file FILE #指定Compose 模板文件,默认为docker-compose.yml
-p,–project-name NAME #指定项目名称,默认将使用当前所在目录名称作为项目名。
--verbose   #显示更多输出信息
--log-level LEVEL    #定义日志级别 (DEBUG, INFO, WARNING, ERROR, CRITICAL) 
--no-ansi #不显示ANSI 控制字符
-v, --version #显示版本#以下为命令选项,需要在docker-compose.yml|yaml 文件所在在目录里执行
build  #构建镜像
bundle #从当前docker compose 文件生成一个以<当前目录>为名称的json格式的Docker Bundle 备份文件
config  -q #查看当前配置,没有错误不输出任何信息
create #创建服务,较少使用
down #停止和删除所有容器、网络、镜像和卷
events #从容器接收实时事件,可以指定json 日志格式,较少使用
exec #进入指定容器进行操作
help #显示帮助细信息
images #显示镜像信息,较少使用
kill #强制终止运行中的容器
logs #查看容器的日志
pause #暂停服务
port #查看端口
ps #列出容器,较少使用
pull #重新拉取镜像,镜像发生变化后,需要重新拉取镜像,较少使用
push #上传镜像
restart #重启服务,较少使用
rm #删除已经停止的服务
run #一次性运行容器
scale  #设置指定服务运行的容器个数
start #启动服务 ,较少使用
stop #停止服务,较少使用
top #显示容器运行状态
unpause #取消暂定
up #创建并启动容器 ,较少使用

显示 docker-compose 拉起的容器

3.docker compse 文件格式

官方文档: https://docs.docker.com/compose/compose-file/

docker compose 文件是一个yaml格式的文件,所以注意行首的缩进很严格默认docker-compose命令会调用当前目录下的docker-compose.yml的文件,因此一般执行docker-compose命令前先进入docker-compose.yml文件所在目录

docke- compose文件的格式很不同版本,版本不同,语法和格式有所不同,参看以下列表

三.演示

1.启动单台容器

docker compose 文件可在任意目录,创建文件名为docker-compose.yml 配置文件,要注意前后的缩进

[root@localhost harbor]#mkdir /mnt/docker-compose
[root@localhost harbor]#cd  /mnt/docker-compose/
[root@localhost docker-compose]#vim docker-compose.yml
#准备yml文件
server-nginx-web:image: nginxcontainer_name: web1expose:- 80- 443ports:- "8080:80"- "8443:443"

2.检测语法

docker-compose  config

3.启动

docker-compose up
#docker-compose start
#docker-compose up -d
后台启动
docker-compose  ps

4.关闭

4.1  使用docker-compose down 会将容器直接删除 镜像也会删除

docker-compose down
docker-compose  ps
docker ps -a

4.2  使用docker-compose kill 只是退出容器

docker-compose kill
docker ps -a
docker-compose  ps

4.3  只删除停止的容器

docker-compose rm

5.查看事件 docker-compose events

docker-compose  events
#json 格式
#docker-compose events --json

6.启动多个容器

server-nginx-web:image: nginxcontainer_name: web1expose:- 80- 443ports:- "8001:80"- "8443:443"
server-mysql:image: mysqlcontainer_name: mysql1[root@localhost docker-compose]#docker-compose config -q
# -q 静默不输出 
启动
docker-compose up -d
docker ps -a

7.调用dockerfile 文件执行编排

FROM  centos:centos7.9.2009
LABEL author="zhou cloud"  \version="1.0"       \description="test"
RUN   rm -rf  /etc/yum.repos.d/
ADD   qh.repo   /etc/yum.repos.d/
RUN   yum -y install gcc gcc-c++ make automake pcre pcre-devel zlib  zlib-devel openssl openssl-devel wget
ADD   nginx-1.18.0.tar.gz   /usr/local/src
RUN   cd  /usr/local/src/nginx-1.18.0  && ./configure  --prefix=/apps/nginx  && make   &&  make install
COPY  index.html    /apps/nginx/html
EXPOSE 80
CMD   ["-g","daemon off;"]
ENTRYPOINT   ["/apps/nginx/sbin/nginx"][root@localhost centos7]#docker  build   -t  c7:n3   .
[root@localhost centos7]#docker run  -d  -p 80:80 --name web1  c7:n1

编写compse 文件

vim /opt/compose_nginx/docker-compose.yml services:nginx:container_name: web1hostname: nginxbuild:context: /data/dockerfile/system/centos/centos7/dockerfile: Dockerfileports:- 1216:80- 1217:443networks:mynet:ipv4_address: 172.18.0.10volumes:- ./wwwroot:/usr/local/nginx/html
networks:mynet:driver: bridgeipam:config:- subnet: 172.18.0.0/16services: 定义了要运行的服务。nginx: Nginx 服务的配置。container_name: 指定容器的名称为 web1。hostname: 指定容器的主机名为 nginx。build: 指定了构建 Nginx 容器所需的上下文和 Dockerfile。ports: 将主机端口 1216 映射到容器的 80 端口,将主机端口 1217 映射到容器的 443 端口。networks: 将服务连接到名为 lnmp 的自定义网络。volumes: 将主机上的 ./wwwroot 目录挂载到容器中的 /usr/local/nginx/html 目录。networks: 定义了自定义网络。lnmp: 自定义网络的配置。driver: 网络驱动程序为 bridge。ipam: IP 地址管理配置。config: 子网配置,指定了 IP 地址范围。cd /opt/compose_nginx/
docker-compose -f docker-compose.yml up -d
----------------------------------------------------------------------------------------------------------
-f, --file FILE :使用特定的 compose 模板文件,默认为 docker-compose.yml
-p, --project-name NAME :指定项目名称,默认使用目录名称
-d :在后台运行
----------------------------------------------------------------------------------------------------------docker ps -a
CONTAINER ID   IMAGE                 COMMAND     CREATED              STATUS              PORTS                                         NAMES
b48dceee248f   compose_nginx_nginx   "/run.sh"   About a minute ago   Up About a minute   0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp   compose_nginx_nginx_1cd /opt/compose_nginx/
docker-compose ps					#必须在docker-compose.yml所在目录执行此命令docker-compose -f docker-compose.yml up -d

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

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

相关文章

鸿蒙(API 12 Beta3版)【AVCodec Kit简介】 音视频编码服务

AVCodec kit&#xff08;Audio & Video Codec Kit&#xff0c;音视频编解码&#xff0c;封装解封装原子能力&#xff09;是媒体系统中的音视频的编解码、媒体文件的解析、封装、媒体数据输入等原子能力。 能力范围 媒体数据输入&#xff1a;媒体应用可以传入文件fd、或者…

TM1652段码屏芯片全解析——概况,性能,MCU连接,样例代码

首先&#xff0c;作为四年前就有的LED段码控制芯片&#xff0c;相关的资料及样例程序少的可怜。硬件驱动 作为固定使用的 软件资源&#xff0c;其共享性远低于软件领域的驱动库。人的才智不应浪费在这种不具创造性的重复实验上。 要点总结&#xff1a; TM1652概述&#xff1a…

【网络层】IP报文解析和网段划分

文章目录 网络层的作用IP协议协议报头格式网段划分DHCPCIDR划分方案 IP地址的数量限制私有IP地址和公网IP地址LAN和WAN 路由 网络层的作用 前面学习了应用层和传输层&#xff0c;应用层的作用是为用户和应用程序提供网络服务&#xff0c;传输层的作用是提供端口到端口的通信服…

数据结构与算法--二叉树的遍历及应用

文章目录 回顾二叉树的五个重要性质 提要二叉树的遍历二叉树遍历流程图前序遍历流程图&#xff08;根左右&#xff09;中序遍历流程图&#xff08;左根右&#xff09;后序遍历流程图&#xff08;左右根&#xff09; 二叉树遍历的示例根据遍历序列确定二叉树的形态确定方法 二叉…

界面组件Kendo UI for Vue 2024 Q2亮点 - 发布一系列新组件

随着最新的2024年第二季度发布&#xff0c;Kendo UI for Vue为应用程序开发设定了标准&#xff0c;包括生成式AI集成、增强的设计系统功能和可访问的数据可视化。新的2024年第二季度版本为应用程序界面提供了人工智能(AI)提示&#xff0c;从设计到代码的生产力增强、可访问性改…

arXiv2024.8.6 | LLaVA-OneVision:Easy Visual Task Transfer

Comment: Project Homepage: https://llava-vl.github.io/blog/2024-08-05-llava-onevision/ 论文标题&#xff1a;LLaVA-OneVision&#xff1a;Easy Visual Task Transfer 论文地址&#xff1a;https://arxiv.org/abs/2408.03326 GitHub&#xff1a;https://llava-vl.githu…

MTK Android12 SystemUI 手势导航 隐藏导航栏底部布局

问题:android12 平台手势导航情况下,app页面未设置全屏情况下,底部导航栏会有一个高度的颜色,底部导航会有一个手势导航提示条 需求:去掉手势导航情况下底部的导航栏和手势提示条 文章目录 相关资源修改问题描述解决方案代码跟踪中间提醒小方块代码查找底部手势导航条跟踪…

【实战】MFC客户端Python后端之仿造QQ聊天

项目概述 这里介绍一个很多年以前做的一个小项目&#xff0c;新手小白可以参考学习。本项目旨在开发一个功能丰富的即时通讯及聊天室系统&#xff0c;类似于QQ&#xff0c;具备客户端与服务端通讯、多人聊天室、界面友好度、一对一聊天、通讯内容加密、服务端与数据库交互等功能…

【学习笔记】Matlab和python双语言的学习(非线性规划法)

文章目录 前言一、非线性规划法二、例题&#xff1a;选址问题1.确定决策变量2.确定约束条件3.确定目标函数4.建立模型5.求解 三、代码实现----Matlab1.Matlab 的 fmincon 函数&#xff08;1&#xff09;基本用法&#xff08;2&#xff09;简单示例 2.Matlab 代码第一问&#xf…

数字货币市场历史数据获取API(含源代码)

加密数字货币市场历史数据获取API&#xff08;含源代码&#xff09; 数字货币市场历史数据获取API&#xff08;含源代码&#xff09;1. Binance API运行结果BTCUSDT.csv 文件截图 2. CoinGecko API3. CryptoCompare API总结 数字货币市场历史数据获取API&#xff08;含源代码&a…

关闭Windows安全中心

打开Windows安全中心的病毒和威胁防护。 打开该选项的管理设置。 关闭实时保护。

【Scene Transformer】scene transformer论文阅读笔记

文章目录 序言(Abstract)(Introduction)(Related Work)(Methods)(Scene-centric Representation for Agents and Road Graphs)(Encoding Transformer)(Predicting Probabilities for Each Futures)(Joint and Marginal Loss Formulation) (Results)(Discussion)(Questions) sce…

【网络基础一】几乎不讲任何网络协议细节,搭建网络基本结构

文章目录 问题认识“协议”计算机通信问题技术问题应用问题 协议分层那么网络分层应该怎么分层呢&#xff1f; 统编程帮助我们处理数据&#xff0c;网络编程帮助我们获取数据&#xff0c;网络配上我们写的线程池模块很快就搭建起来了。 问题 网卡是文件吗&#xff1f; 是的&am…

24暑假算法刷题 | Day30 | 贪心算法 IV | 452. 用最少数量的箭引爆气球,435. 无重叠区间,763. 划分字母区间

目录 452. 用最少数量的箭引爆气球题目描述题解 435. 无重叠区间题目描述题解 763. 划分字母区间题目描述题解 452. 用最少数量的箭引爆气球 点此跳转题目链接 题目描述 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中…

《系统架构设计师教程(第2版)》第13章-层次式架构设计理论与实践-04-数据访问层设计

文章目录 1. 五种数据访问模式1.1 在线访问1.2 DAO1.3 DTO1.4 离线数据模式1.5 对象/关系映射 (O/R Mapping) 2. 工厂方法模式在数据访问层应用3 ORM、Hibernate与CMP2.0设计思想3.1 ORM3.2 Hibernate1&#xff09;概述2&#xff09; Hibernate的架构&#xff08;2023年的考题&…

【Web开发手礼】探索Web开发的秘密(十八)-Vue2(4)部门管理页面、路由、打包部署

主要介绍了部门管理页面、路由、打包部署&#xff01;&#xff01;&#xff01; 文章目录 前言 部门管理页面 Vue路由 打包部署 打包 部署 总结 前言 主要介绍了部门管理页面、路由、打包部署&#xff01;&#xff01;&#xff01; 部门管理页面 <template><div>&…

云手机在海外社交媒体运营中的作用

随着社交媒体的全球普及&#xff0c;海外社交媒体运营成为众多企业与个人提升品牌影响力和扩大市场份额的重要策略。在这一进程中&#xff0c;海外云手机以其独特的功能&#xff0c;为海外社交媒体运营提供了强大的支持。 那么&#xff0c;海外云手机在海外社交媒体运营中究竟扮…

展馆室内导航系统:增强现实技术与数据可视化分析在展馆中的应用

随着科技的飞速发展&#xff0c;展览行业正经历着前所未有的变革。作为信息交流与文化传播的重要场所&#xff0c;展馆在吸引访客、展示展品方面扮演着至关重要的角色。然而&#xff0c;在信息爆炸、时间宝贵以及访客需求日益多样化的今天&#xff0c;传统展馆在导览、管理和服…

【学习方法】高效学习因素 ① ( 开始学习 | 高效学习因素五大因素 | 高效学习公式 - 学习效果 = 时间 x 注意力 x 精力 x 目标 x 策略 )

文章目录 一、高效学习因素1、开始学习2、高效学习因素五大因素3、高效学习公式 - 学习效果 时间 x 注意力 x 精力 x 目标 x 策略 一、高效学习因素 1、开始学习 对于 学习差 , 调皮捣蛋 的学生 , 不要把 学习成绩差 的 原因 归因为 不爱学习 / 没有学习方法 , 可能是 还没有 …

从通用到定制:营销Agent如何跨越数据鸿沟,实现对话SOP的个性化飞跃

从通用到定制:营销Agent如何跨越数据鸿沟,实现对话SOP的个性化飞跃 1.背景 营销 Agent 指的是在营销过程中洞察客户并作出决策以及行动的 AI 智能体,包括感知、理解、决策、交互、反馈多个模块。对话 SOP 是交互模块中非常重要的部分,如何在缺少数据的情况下快速实现千人…