Docker-compose的介绍与用法

Docker-compose

Docker Compose 是一个开源的容器编排工具,由 Docker 官方开发。它允许开发者定义一个或多个 Docker 容器作为单个服务,并将这些服务组合成一个项目。这些定义被保存在一个 YAML 文件中,称为 docker-compose.yml。
使用 Docker Compose可以轻松地定义、启动、停止和销毁一组容器,这些容器可以共同工作以提供复杂的服务。它非常适合用于微服务架构,其中多个容器协同工作以提供完整的应用程序功能。

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

查看版本

docker-compose --version

在这里插入图片描述

部署完成

YAML文件格式

在使用 YAML 格式时,确实需要注意一些特定的语法规则和约定,以确保 YAML 文件的正确性和可读性。
以下是使用 YAML 时需要注意的一些事项:

  1. 大小写敏感: YAML 是大小写敏感的。这意味着 nameName 将被视为不同的键。
  2. 缩进: 缩进用于表示数据结构的层级关系。在 YAML 中,不支持使用制表符(Tab)进行缩进,只能使用空格。缩进的空格数目不重要,只要相同层级的键左对齐即可。通常,推荐使用 2 个空格作为缩进。
  3. 注释: 在 YAML 中,使用 # 符号作为注释的开始。注释会忽略键值对的内容。
  4. 特殊字符: 冒号 :、逗号 , 和连字符 - 等特殊字符后需要缩进。例如:
    key: value
    
  5. 多行字符串: 如果您想要在字符串中包含换行符,需要将字符串用双引号 " 包围,或者使用缩进来表示多行字符串。例如:
    name: "Hi,\nTom"
    
  6. 引号: 如果字符串包含特殊字符,可以使用单引号 ' 或双引号 " 来引用整个字符串。单引号会作为普通字符串处理,而双引号会保留特殊字符。例如:
    name: "Hi,\nTom"
    value: 'This is a "quoted" string'
    value: "This is a 'quoted' string"
    
  7. 键值对: 键值对由冒号 : 分隔。例如:
    key: value
    
  8. 数据类型: YAML 支持多种数据类型,包括字符串、整数、浮点数、布尔值、数组、映射(键值对集合)等。
  9. 文件扩展名: YAML 文件通常具有 .yml.yaml 扩展名。

编写配置文件docker-compose.yml

案例1:Tomcat
在上一篇博客创建的dockerfile/Tomcat,目录下创建docker-compose.yml文件
在这里插入图片描述
Dockerfile文件
在这里插入图片描述

version: '3'
services:tomcat:hostname: Tomcatbuild:context: .dockerfile: Dockerfileports:- 8080:8080networks:test:
networks:test:driver: bridgeipam:config:- subnet: 172.18.0.0/16

您提供的 docker-compose.yml 文件内容是正确的,并且定义了一个名为 test 的网络,并指定了驱动器类型和 IPAM 配置。以下是对您文件内容的详细解释:

  1. version: 指定 Docker Compose 的版本为 3
  2. services: 定义了一个名为 tomcat 的服务。
    • hostname: 指定容器的 hostname 为 Tomcat
    • build: 指定构建镜像时使用的 Dockerfile 路径。
    • ports: 指定将容器的 8080 端口映射到宿主机的 8080 端口。
    • networks: 指定容器应该连接的网络。
  3. networks: 定义了一个名为 test 的网络。
    • driver: 指定网络使用的驱动器类型为 bridge
    • ipam: 指定 IP 地址池的配置,包括子网。
      ipam: 配置是一个映射,其中包含了一个列表 config,这个列表包含了一个配置项。
    • subnet: 指定 IP 地址池的子网,即 172.18.0.0/16
      这个配置告诉 Docker 使用 bridge 驱动器来创建网络,并为该网络分配 172.18.0.0/16 子网的 IP 地址。

可以看到这个容器ID是 172.10.0.2
在这里插入图片描述
在这里插入图片描述
tomcat搭建成功

案例2:nginx
在这里插入图片描述
Dockerfile 内容如下

FROM centos:7
MAINTAINER this is nginx:lnmp image
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make;useradd -M -s /sbin/nologin nginx
ADD nginx-1.18.0.tar.gz /usr/local/src/
WORKDIR /usr/local/src/nginx-1.18.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module;make -j 4 && make install
ENV PATH /usr/local/nginx/sbin:$PATH
ADD nginx.conf /usr/local/nginx/conf/
ADD wordpress-4.9.4-zh_CN.tar.gz/ usr/local/nginx/html
RUN chmod 777 -R /usr/local/nginx/html/
EXPOSE 80
VOLUME [ "/usr/local/nginx/html/" ]
CMD [ "/usr/local/nginx/sbin/nginx","-g","daemon off;" ]

编写配置文件docker-compose.yml

vim docker-compose.yml
version: '3'
services:nginx:hostname: Nginxbuild:context: .dockerfile: Dockerfileports:- 80:80- 443:443networks:nginx_network:ipv4_address: 172.20.0.10networks:nginx_network:driver: bridgeipam:config:- subnet: 172.20.0.0/16

可以看见nginx 的ip是172.20.0.10
在这里插入图片描述

完成

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

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

相关文章

C#命名空间常用函数

在C#中,不同命名空间下有各种常用函数,下面列举一些常见的函数及其对应的命名空间: System命名空间: Console.WriteLine():用于向控制台输出信息。Convert.ToInt32():用于将其他数据类型转换为整数类型。 S…

个人图床解决方案(PicGo+对象存储, 几乎免费)

个人图床解决方案(PicGo对象存储) 原先我的解决方案是github做图床,套一层Cloudflare的cdn来加速国内访问, 但国内访问仍然过慢, 特别是一些图很多的文章, 加载非常慢. 所以我想着改善一下, 在对比了一些解决方案之后, 我选择了PicGo缤纷云搭建主图床, 部分图片放在 去不图床,…

在STM32上实现嵌入式人工智能应用

引言 随着微控制器的计算能力不断增强,人工智能(AI)开始在嵌入式系统中扮演越来越重要的角色。STM32微控制器由于其高性能和低功耗的特性,非常适合部署轻量级AI模型。 本文将探讨如何在STM32平台上实现深度学习应用,…

JAVA:maven-->>检查 所有依赖 与 环境 兼容

内容 为了确保你项目中的所有依赖都彼此兼容,并与你的环境相适应,你可以利用 Maven 的依赖管理功能。Maven 有助于解决、升级,并对齐所有库的版本,以避免任何不一致或冲突。以下是检查兼容性的步骤: ### 检查兼容性的…

Elasticsearch 索引的分片和副本是什么意思,如何扩展分片

文章目录 前言Elasticsearch 索引的分片和副本是什么意思,如何扩展分片示例:1. 设置 5个分片,每个分片一个副本的命令2. 将5个分片扩展到10个分片 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊&…

TCP相关问题总结

文章目录 TCP连接建立过程1. TCP三次握手2. TCP四次挥手3. TCP为什么是三次握手4. TCP为什么是四次挥手 TCP流量控制TCP拥塞控制1. 为什么需要拥塞控制2. 控制手段 TCP连接建立过程中出现丢包 TCP连接建立过程 1. TCP三次握手 首先client端发出连接请求,并且请求同…

Qt下使用7Z源码进行压缩和解压缩

7Z压缩是一款常用的压缩算法和工具,本文主要介绍一款在qt环境下进行编译的压缩方法。 本人测试是可以正常跑通的,具体代码部分请下载:下载链接,提取码:ev9t 7z源码网址:7-Zip 7z简介: 7z 是…

Python多线程并不是真的并行执行

Python多线程虽然能够利用多个CPU核执行计算,但并不能真正执行多线程并行计算。因为在Python中,有一个全局解释锁(GlobalInterpreter Lock,GIL),该锁的存在使得在同一个时间只有一个线程执行任务&#xff0…

rocketmq dashboard控制台中topic状态无法展示

现象 在使用rocketmq控制台查看topic状态和订阅状态时,出现错误和没有信息的情况。 原因 rocketmq控制台版本问题,最新版本为1.0.1,支持rocketmq5版本,如果使用rocketmq4版本的服务无法兼容对应的数据。同理1.0.0版本也无法兼容ro…

Spark AQE 导致的 Driver OOM问题

背景 最近在做Spark 3.1 升级 Spark 3.5的过程中,遇到了一批SQL在运行的过程中 Driver OOM的情况,排查到是AQE开启导致的问题,再次分析记录一下,顺便了解一下Spark中指标的事件处理情况 结论 SQLAppStatusListener 类在内存中存…

Hadoop之路---伪分布式环境搭建

hadoop更适合在liunx环境下运行,会节省后期很多麻烦,而用虚拟器就太占主机内存了,因此后面我们将把hadoop安装到wsl后进行学习,后续学习的环境是Ubuntu-16.04 (windows上如何安装wsl) 千万强调,创建完hado…

读天才与算法:人脑与AI的数学思维笔记14_人脑的极限

1. 数学研究 1.1. 数学研究变得更为艰难了 1.1.1. 学科分支越发密集,问题越发复杂 1.1.2. 攻读博士学位的3年时间,只够去理解导师所给题目的含义 1.1.3. 随后,再花费数年时间去研究、探索,运气不错的话,会得到一些…

CVE-2022-2602:unix_gc 错误释放 io_uring 注册的文件从而导致的 file UAF

前言 复现该漏洞只是为了学习相关知识,在这里仅仅做简单记录下 exp,关于漏洞的详细内容请参考其他文章,最后在 v5.18.19 内核版本上复现成功,v6.0.2 复现失败 漏洞利用 diff --git a/include/linux/skbuff.h b/include/linux/s…

10GMAC层设计系列-(1)10G Ethernet PCS/PMA

一、引言 对于10G以太网MAC层的实现,Xilinx提供了 3种IP核,分别是 10G Ethernet MAC、10G Ethernet PCS/PMA、10G Ethernet Subsystem。 10G Ethernet MAC只包含MAC层,外部需要提供一个PHY芯片进行数据对齐,10G Ethernet MAC与P…

软考 系统架构设计师系列知识点之软件可靠性基础知识(7)

接前一篇文章:软考 系统架构设计师系列知识点之软件可靠性基础知识(6) 所属章节: 第9章. 软件可靠性基础知识 第1节 软件可靠性基本概念 9.1.5 广义的可靠性测试和狭义的可靠性测试 广义软件可靠性测试 广义的软件可靠性测试是…

sql注入工具-​sqlmap

介绍: sqlmap是一款开源的自动化SQL注入工具,用于自动化检测和利用Web应用程序中的SQL注入漏洞。它具有强大的参数化查询和自定义注入脚本的功能,可以通过检测和利用SQL注入漏洞来获取数据库的敏感信息,如用户名、密码和其他重要…

C++ | Leetcode C++题解之第60题排列序列

题目&#xff1a; 题解&#xff1a; class Solution { public:string getPermutation(int n, int k) {vector<int> factorial(n);factorial[0] 1;for (int i 1; i < n; i) {factorial[i] factorial[i - 1] * i;}--k;string ans;vector<int> valid(n 1, 1);…

gateway全局token过滤器

添加gateway依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>创建一个tokenFilter 实现全局过滤器GlobalFilter,并且实现fitler方法 Value("${…

WebGL/Cesium 大空间相机抖动 RTE(Relative to Eye)实现原理简析

在浏览器中渲染大尺寸 3D 模型&#xff1a;Speckle 处理空间抖动的方法 WebGL/Cesium 大空间相机抖动 RTE(Relative to Eye)实现原理简析 注: 相机空间和视图空间 概念等效混用 1、实现的关键代码 const material new THREE.RawShaderMaterial({uniforms: {cameraPostion: {…

【全开源】Java上门老人护理老人上门服务类型系统小程序APP源码

功能&#xff1a; 服务分类与选择&#xff1a;系统提供详细的老人护理服务分类&#xff0c;包括日常照护、康复训练、医疗护理等&#xff0c;用户可以根据老人的需求选择合适的服务项目。预约与订单管理&#xff1a;用户可以通过系统预约护理服务&#xff0c;并查看订单详情&a…