容器(第五篇)docker-compose

news2024/12/26 15:19:37

docker-compose用来单机上编排容器(定义和运行多个容器,使容器能互通),Eg:前端和后端部署在一台机器上,现在直接通过编写docker-compose文件对多个服务(可定义依赖,按顺序启动服务)同时进行启动/停止/更新 我们可以将编排的内容全部写到一个yaml文件里,docker 的compose根据这个yaml文件里的安排去启动容器。

docker-compose将所管理的容器分为3层结构:project service container docker-compose.yml组成一个project,project里包括多个service,每个service定义了容器运行的镜像(或构建镜像),网络端口,文件挂载,参数,依赖等,每个service可包括同一个镜像的多个容器实例。

Docker Compose 环境安装:

Docker Compose 是 Docker 的独立产品,因此需要安装 Docker 之后在单独安装 Docker Compose

#下载
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#安装
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose --version

使用 YAML 时需要注意下面事项:
●大小写敏感
●通过缩进表示层级关系
●不支持制表符 tab 键缩进,只能使用空格缩进
●缩进的空格数目不重要,只要相同层级左对齐,通常开头缩进2个空格
●用 # 号注释
●符号字符后缩进1个空格,如冒号 :  、逗号 ,  、横杠 - 
●如果包含特殊字符用单引号('')引起来会作为普通字符串处理,双引号(""): 特殊字符作为本身想表示的意思

Docker Compose配置常用字段

字段                                       描述
build                                      指定 Dockerfile 文件名,
                                        要指定Dockerfile文件需要在build标签的子级标签中使用dockerfile标签指定
dockerfile                                 构建镜像上下文路径
context                                    可以是 dockerfile 的路径,或者是指向 git 仓库的 url 地址
image                                      指定镜像
command                                    执行命令,覆盖容器启动后默认执行的命令
container_name                             指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale指定容器数量
deploy                                     指定部署和运行服务相关配置,只能在 Swarm 模式使用
environment                                添加环境变量
networks                                   加入网络,引用顶级networks下条目
network_mode                            设置容器的网络模式,如 host,bridge,...
ports                                      暴露容器端口,与 -p 相同,但端口不能低于 60
volumes                                    挂载一个宿主机目录或命令卷到容器,命名卷要在顶级 volumes 定义卷名称
volumes_from                            从另一个服务或容器挂载卷,可选参数 :ro 和 :rw,仅版本 '2' 支持
hostname                                   容器主机名
sysctls                                    在容器内设置内核参数
links                                    连接到另外一个容器,- 服务名称[:服务别名]
privileged                                用来给容器root权限,注意是不安全的,true | false

restart设置四种重启策略,no,always,no-failure,unless-stopped
                                        no,默认策略,在容器退出时不重启容器。
                                        on-failure,在容器非正常退出时(退出状态非0),才会重启容器。
                                        on-failure:3,在容器非正常退出时重启容器,最多重启3次。
                                        always,在容器退出时总是重启容器。
                                        unless-stopped,在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器。
 

Docker Compose 常用命令:
字段                                        描述
build                                       重新构建服务
ps                                          列出容器
up                                          创建和启动容器    
exec                                        在容器里面执行命令
scale                                       指定一个服务容器启动数量
top                                         显示容器进程
logs                                        查看容器输出
down                                        删除容器、网络、数据卷和镜像
stop/start/restart                          停止/启动/重启服务

实验:

①准备依赖文件
mkdir -p /opt/compose_nginx/nginx /opt/compose_nginx/wwwroot
cd /opt/compose_nginx/nginx
cp nginx-1.12.0.tar.gz ./

②写dockerfile(上篇)

③编写配置文件docker-compose.yml
vim /opt/compose_nginx/docker-compose.yml
version: '3'
services:
  nginx:
    container_name: web1
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1216:80
      - 1217:443
    networks:
      lnmp:
        ipv4_address: 172.18.0.10
    volumes:
      - ./wwwroot:/usr/local/nginx/html
networks:
  lnmp:
    driver: bridge
    ipam:
      config:
        - subnet: 172.18.0.0/16

cd /opt/compose_nginx/
docker-compose -f docker-compose.yml up -d

最后docker ps -a会出现信息,代表做好了

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

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

相关文章

Burpsuite+Proxifier抓取exe数据包

本文转载与: https://mp.weixin.qq.com/s?__bizMzg4NTUwMzM1Ng&mid2247504341&idx1&sndb06bdc7434a34dd69930e3a7e3d8114&chksmcfa575c6f8d2fcd0830a7bb5d5c11b6e8a1465688d8f59cb2fd7b04685210ac2beae3bec18c2&mpshare1&scene23&srci…

vscode Delete `␍⏎·····`

在公司电脑首次拉取代码的时候,好多代码报错,在网上查了博客,确定是换行导致,但是参考网上的解决办法,没有解决,不管是设置 auto 还是命令行执行什么什么的,都不管用 下面介绍我的办法 首先&a…

葡萄目标检测相关论文和数据集

文章目录 2018Computer Vision and Machine Learning for Viticulture Technology 2020Grape detection, segmentation, and tracking using deep neural networks and three-dimensional association(Computers and Electronics in Agriculture) 2021Gr…

Vue中如何进行图片裁剪与上传?

Vue中如何进行图片裁剪与上传? 在Web开发中,经常需要使用图片,有时候需要对图片进行裁剪和上传,Vue作为一种流行的前端框架,提供了很多方便的工具和插件来帮助开发者实现这些功能。 图片裁剪 Vue中提供了很多图片裁剪…

采用SSM框架实现登录拦截,分页,批量删除的功能

本案列采用的技术有后端spring/springmvc/mybatis/jquery等技术&#xff0c;前端采用bootstrapjsp 项目结构如下图 依赖pom.xml文件 <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version>…

怎样的低代码平台才算是一个好用的低代码平台?

随着数字化转型的加速&#xff0c;低代码平台已经成为了企业数字化转型的一个重要工具。低代码近几年是一个很热门的概念&#xff0c;市场对低代码的需求也不断增加&#xff0c;但到底什么样的低代码平台才算是一个好用的低代码平台&#xff1f; 一个好用的低代码平台应具备以…

Python源码:火柴棒摆数字有6根火柴棒,列出所有能摆出的自然数

题&#xff1a;用自定义函数&#xff0c;火柴棒摆数字有6根火柴棒&#xff0c;列出所有能摆出的自然数&#xff0c; 要求火柴棒正好摆完 解析&#xff1a; 1、0-9这十个数字&#xff0c;每个数字分别需要的火柴根数如下 2、用6根火柴摆出的最小数字是&#xff1a;0 用6根火柴…

深入理解CSS字符转义行为

深入理解CSS字符转义行为 深入理解CSS字符转义行为 前言为什么要转义&#xff1f;CSS 转义什么是合法css的表达式 左半部分右半部分 练习参考链接 前言 在日常的开发中&#xff0c;我们经常写css。比如常见的按钮: <button class"btn"></button>&am…

YOLO输出大中小目标的AP值

在进行实验的过程中&#xff0c;博主一直使用的是COCO数据集&#xff0c;其评价指标如下所示&#xff0c;包含大中小目标的AP值与AR值。博主选用了yolov5与yolov7进行实验&#xff0c;其中yolov5成功&#xff0c;yolov7却出现了问题。 随后博主在进行对比实验时使用了YOLO模型&…

烟草仓库监控有多重要?给你支一招

随着全球烟草行业的发展&#xff0c;烟草仓库监控变得越来越重要。烟草作为一种易燃、易损和有害物质&#xff0c;需要特殊的保管和监控措施&#xff0c;以确保烟草的质量、安全和合规性。 烟草仓库监控的目的是实时监测和管理烟草仓库内的环境参数&#xff0c;如温度、湿度、气…

一些有趣的兼容性测试事实和技巧

兼容性测试是一种重要的测试方法&#xff0c;可以确定软件或应用程序是否能够在不同的操作系统、浏览器、设备上正常运行。以下是一些有趣的兼容性测试事实和技巧。 事实1&#xff1a;同样的代码在不同的浏览器中会产生不同的结果。 由于不同的浏览器对相同代码的解释不同&…

【微信公众平台对接】有关【创建发票卡券模板】调用示例

1、微信开放平台接口说明&#xff1a; 2、代码示例 /*** 创建发票卡券模板** param token* return*/PostMapping("createCard")public String createCard(String token) {return wechatOpenService.createCard(token);}String resp null;try {String url String.fo…

电路板电镀中4种特殊的电镀方法

本文主要介绍的是电路板焊接中的4中特殊电镀方法。 第一种&#xff0c;指排式电镀 常常需要将稀有金属镀在板边连接器、板边突出接点或金手指上以提供较低的接触电阻和较高的耐磨性&#xff0c;该技术称为指排式电镀或突出部分电镀。常将金镀在内层镀层为镍的板边连接器突出触…

武职301班-day01

实现永和小票页面 效果图 问题分析 把一个大的开发任务&#xff0c;先进行任务分析&#xff0c;把完成这个任务需要的技术点和开发步骤写出来。 开发分析 特点&#xff1a; htmlcss实现 1&#xff09;小票有宽度限制 2&#xff09;字体大小不一样&#xff0c;大部分字体大小…

FTSE-250 CMC Markets投资StrikeX Technologies,巩固战略伙伴关系,革新数字资产行业

StrikeX非常高兴地宣布与屡获殊荣的FTSE 250金融服务提供商CMC Markets成功完成投资和战略合作伙伴关系。CMC Markets已经收购了StrikeX Technologies 33%的股份&#xff0c;并将其两位高级执行官纳入StrikeX董事会&#xff0c;为公司带来了丰富的专业知识和经验。这对于两家公…

Linux第一章之环境搭建

目录 一、什么是Linux 1.1前端VS后端 1.2企业为何选择使用Linux作为后台服务器 1.3国内企业后台和用户使用Linux现状 1.4就个人找工作/能力提升来说&#xff0c;该如何看待Linux 1.5求职相关 ​1.6Linux好玩的指令 1.7Linux基本代码编写 1.8内存/CPU/硬盘/外设等硬件&…

pm2原理与使用

目录 pm2是什么以及好处 原理 Node Cluster pm2工作流程 常用命令 安装 启动进程 查看进程 重启/删除 日志 pm2是什么以及好处 pm2是一个内建了负载均衡器的node进程管理工具&#xff0c;可以利用它来简化很多node应用管理的繁琐任务&#xff0c;如自动监控进程状态…

Spring Boot - 自定义 banner

自定义 banner 在Spring Boot中&#xff0c;你可以通过定制Banner来个性化你的应用程序启动时的输出。Banner是一个在应用程序启动时显示的ASCII艺术字形式的标志&#xff0c;用于增加应用程序的识别度和个性化。 以下是一些定制Banner的方法&#xff1a; 创建自定义Banner文…

Echarts5.x词云图报错[ECharts] Unkown series wordCloud

问题原因 echarts2.0版本之后不再在引入的echarts中支持wordCloud,需单独引入。引入原js或者min都可以 预期效果 解决方法 https://github.com/ecomfe/echarts-wordcloud/blob/master/dist/echarts-wordcloud.min.js 复制这份文件到utils 然后再使用词云图的页面 import /u…

随机生成验证码

1.servlet代码 /** * 随机生成验证码 * 1.获取Image对象 * 2.1填充背景色 2.2画边框 生成随机角标 2.3写验证吗 2.4 画干扰线 *3.将图片输出到页面 */ package cn.itcast.web.servlet;import javax.imageio.ImageIO; import javax.servlet.*; import javax.servlet.http.*; im…