Docker Compse单机编排

news2024/9/20 14:43:05

一.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: nginx
  container_name: web1
  expose:
   - 80
   - 443
  ports:
    - "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: nginx
  container_name: web1
  expose:
   - 80
   - 443
  ports:
    - "8001:80"
    - "8443:443"
server-mysql:
  image: mysql
  container_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: web1
    hostname: nginx
    build:
      context: /data/dockerfile/system/centos/centos7/
      dockerfile: Dockerfile
    ports:
      - 1216:80
      - 1217:443
    networks:
      mynet:
        ipv4_address: 172.18.0.10
    volumes:
      - ./wwwroot:/usr/local/nginx/html
networks:
  mynet:
    driver: bridge
    ipam:
      config:
        - subnet: 172.18.0.0/16
        
    

services: 定义了要运行的服务。

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_1

cd /opt/compose_nginx/
docker-compose ps					#必须在docker-compose.yml所在目录执行此命令


docker-compose -f docker-compose.yml up -d

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

精彩分享|暴雨亮相第二十届智能计算国际会议(ICIC 2024)

8月6日至8日&#xff0c;第二十届智能计算国际会议&#xff08;ICIC 2024&#xff09;在天津盛大召开&#xff0c;这场由宁波东方理工大学&#xff08;暂名&#xff09;主办&#xff0c;天津科技大学承办&#xff0c;中国矿业大学&#xff08;北京&#xff09;、中国矿业大学和…

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

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

RegNet 图像识别网络,手写阿拉伯数字的图像分类

1、RegNet 网络介绍 regnet 是一个深度学习模型架构&#xff0c;用于图像分类任务。它是由 Facebook AI Research&#xff08;FAIR&#xff09;提出的&#xff0c;旨在实现高效的网络设计。regnet 通过在不同的网络层级上增加网络宽度和深度来提高模型性能。 regnet 的设计思…

如何使用 AWS CLI 创建和运行 EMR 集群

为初学者提供清晰易懂的教程 为初学者提供清晰易懂的教程 Apache Spark 和 AWS EMR 上的 Spark 集群 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 欢迎来到雲闪世界。Spark 被认为是“大数据丛林之王”&#xff0c;在数据分析、机器学习、流媒体和图形…

DataWhale AI夏令营第四期-魔搭生图task1学习笔记

根据教程提供的链接&#xff0c;进入相应文章了解魔搭生图的主要工作是通过对大量图片的训练&#xff0c;生成自己的模型&#xff0c;然后使用不同的正向、反向提示词使模型输出对应的图片 1.官方跑baseline教程链接:Task 1 从零入门AI生图原理&实践 2.简单列举一下赛事的…

【K8S】K8S架构及相关组件

文章目录 1 K8S总体架构2 相关组件2.1 控制面板组件2.2 节点组件2.3 附加组件 写在最后 1 K8S总体架构 K8S&#xff0c;全称Kubernetes&#xff0c;是一个开源的容器部署和管理平台&#xff0c;由Google开发&#xff0c;后捐献给云原生计算基金会&#xff08;CNCF&#xff09;…

algorithm算法库学习之——修改序列的操作2

algorithm此头文件是算法库的一部分。本篇介绍修改序列的操作函数。&#xff08;2&#xff09; 修改序列的操作 fill 将一个给定值复制赋值给一个范围内的每个元素 (函数模板) fill_n 将一个给定值复制赋值给一个范围内的 N 个元素 (函数模板) generate 将相继的函数调用结果赋…

Debezium日常分享系列之:Debezium UI 的状态

Debezium日常分享系列之&#xff1a;Debezium UI 的状态 一、下一阶段工作二、设计新的UI三、目前阶段四、更多内容 虽然Debezium的UI是我们愿景的重要组成部分&#xff0c;但开发与Kafka Connect紧密绑定的UI并不是正确的方向。因此&#xff0c;决定冻结当前Web UI项目的开发。…

红酒与高尔夫:球场上的优雅选择

在绿茵茵的高尔夫球场上&#xff0c;每一次挥杆都充满了力量与优雅。而当这优雅的运动与洒派红酒&#xff08;Bold & Generous&#xff09;的醇厚邂逅&#xff0c;一场视觉与感官的盛宴便悄然上演。今天&#xff0c;就让我们一起走进这个充满魅力的世界&#xff0c;感受红酒…

【动态规划】1、不同路径II+2、三角形最小路径和

1、不同路径II&#xff08;难度中等&#xff09; 该题对应力扣网址 AC代码 只会写简单的if-else class Solution { public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {//1、定义子问题//2、子问题递推关系//3、确定dp数组的计算顺序…

快速入手mybits(xml配置文件版本)

目录 Blue的留声机 1、快速入手 第一步&#xff1a;导依赖 第二步&#xff1a;配置mybits-config.xml文件 第三步&#xff1a;编写sql映射文件BlogMapper.xml 第四步&#xff1a;编写运行文件&#xff0c;执行sql 2、Mapper代理开发&#xff08;企业中最常用&#xff09;…

GraphRAG

GraphRAG 与基线 RAG RAG 检索增强生成 &#xff08;RAG&#xff09; 是一种使用真实世界信息改进 LLM 输出的技术。这种技术是大多数基于 LLM 的工具的重要组成部分&#xff0c;大多数 RAG 方法使用向量相似性作为搜索技术&#xff0c;我们称之为基线 RAG。 RAG 技术在帮助 …

立即升级你的前端技能!跟随这份Vue3项目搭建教程,从零基础到专业,一步步掌握最新Web开发技术,打造响应快速、界面优雅的现代网站。

全能开发套餐&#xff0c;轻松打造现代网站&#xff01;Vue3携手Vite带来开发新体验&#xff0c;结合Axios、Pinia、Element Plus实现功能与美观并重&#xff0c;TailwindCSS与DaisyUI提供设计灵活性&#xff0c;Router 4处理页面导航。从前端到后端&#xff0c;一站式解决&…

必看!全网最详细的仓库管理办法!

如今仓库管理的优劣直接影响着企业的运营效率和成本控制。一个高效、有序的仓库能够确保货物的及时供应&#xff0c;减少库存积压&#xff0c;提高客户满意度&#xff1b;而一个混乱、无序的仓库则可能导致货物丢失、损坏&#xff0c;延误交货&#xff0c;甚至影响企业的声誉和…

【宠粉赠书】Python数据可视化:科技图表绘制

为了回馈粉丝们的厚爱&#xff0c;今天小智给大家送上一套数据可视化学习的必备书籍——《Python数据可视化&#xff1a;科技图表绘制》。下面我会详细给大家介绍这本书&#xff0c;文末留有领取方式。 图书介绍 《Python数据可视化&#xff1a;科技图表绘制》结合编者多年的数…

顶象文字点选模型识别

注意&#xff0c;本文只提供学习的思路&#xff0c;严禁违反法律以及破坏信息系统等行为&#xff0c;本文只提供思路 如有侵犯&#xff0c;请联系作者下架 文字点选如何训练&#xff0c;之前的文章说了很多遍了&#xff0c;这里只放现成的模型供查看&#xff0c;有需要成品联系…

datax做增量导入数据到hive:mysql>hive

为什么要做增量导入? 例如mysql表中的数据导入hive&#xff0c;如果第一天抽取了mysql中t_user表中的全部数据&#xff0c;则第二天只需要抽取新增数据即可&#xff01; 增加导入是利用where 条件查询实现的&#xff0c;查询条件一般是自增的id或者时间列 下面演示基于时间列的…

sns.regplot()用法

概念 seaborn.regplot&#xff08;&#xff09;函数可以在两个变量之间绘制一个线性回归模型&#xff0c;可以输出线性回归线以及数据的散点图。 参数解释 seaborn.regplot(dataNone, xNone, yNone, x_estimatorNone, x_binsNone, x_cici, scatterTrue, fit_regTrue, ci95, …

s7_200smart采集遇到的问题

对s7_200smart(plc设备不太熟悉)第一次使用了modbus协议来采集数据是采集不到bcd码类型的数据&#xff0c;modbus里面不支持这个数据类型。采用西门子类型来设置采集数据也遇到不少问题&#xff1f; 第一&#xff1a;采集速率不可以太高&#xff0c;最好1秒一次&#xff0c;通…

YOLOv8改进 | 主干网络 | 用EfficientNet卷积替换backbone【教程+代码 】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…