Docker Compose

本文介绍了DockerCompose在容器管理中的作用,详细解释了其YAML配置文件结构、主要概念(项目、服务和容器)、常用的配置字段和命令,以及如何使用DockerCompose搭建Nginx环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.简介

传统的容器管理

编排管理容器

docker-compose的三大概念

2.YAML 文件格式及编写注意事项

布尔值类型

文本块

打锚点和引用 

对象object类型类型

一个key有多个值

3.Docker Compose配置常用字段

4.Docker Compose 常用命令

5.Docker-compose搭建nginx

准备依赖环境

准备依赖文件

编写配置文件docker-compose.yml

Docker Compose 文件结构

测试


1.简介

Docker Compose是一个用于定义和运行多容器 Docker 应用程序的工具。它允许用户使用 YAML 文件来定义应用程序的配置,包括容器的数量、容器之间的依赖关系、环境变量、端口映射以及其他设置。然后,用户可以使用 docker-compose 命令来启动和管理这些容器。

使用 Docker Compose 可以方便地管理多个容器,例如,可以同时启动一个 Web 服务器容器和一个数据库容器,并在它们之间建立网络连接。Docker Compose 还支持自定义网络,使得容器可以在不同的网络中进行通信。

Docker Compose 文件通常包含一个或多个服务,每个服务都由一个或多个容器组成。服务定义了容器应该执行的任务,以及容器之间的依赖关系。例如,一个 Web 服务器服务可以包含一个或多个 Web 服务器容器,而这些容器又依赖于一个数据库容器。

传统的容器管理

Dockerfile文件 --> 手动执行 docker build 一个个构建镜像 -> 手动执行 docker run 一个个创建启动容器

编排管理容器

  • Dockerfile文件 --> 在 docker compose 配置文件里定义好容器启动参数和依赖关系 
  •                          -> 执行 docker-compose 命令指定配置文件一次性的自动完成所有镜像的构建和容器的创建启动

总结:

  1. docker-compose 是一个可以实现在单机上对容器集群编排管理的工具。使用python开发的,能运行docker的平台也都能用docker-compose编排管理容器。
  2. 本质就是在yaml格式的docker-compose配置模板文件里定义多个服务容器的启动参数和依赖关系,并使用docker-compose命令根据指定配置模板文件的配置来启动和管理容器集群。.

docker-compose的三大概念

项目project -> 包含一个或多个服务service -> 包含一个或多个容器container的镜像、端口映射、环境变量、依赖关系等启动参数

  1. 默认使用项目的目录名作为project的项目名,支持使用 -p 或 --project-name 来指定项目名称
  2. 项目目录里要包含一个 docker-compose 配置模板文件,默认为 docker-compose.yml,支持使用 -f 或 --file 来指定项目的配置模板文件
  3. 在配置模板文件里要包含一个或多个服务容器的配置,每个服务要包含容器的名称、镜像、映射端口、挂载点、网络模式、依赖关系等容器启动的配置参数

2.YAML 文件格式及编写注意事项

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

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

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

yaml文件格式:文件名格式通常是以 .yaml .yml 为后缀,用 空格缩进 表示字段的层级关系,特性:可读性高,易于人类管理

json文件格式:文件名格式通常是以 .json 为后缀,用 大括号{} 表示字段的层级关系,每层字段除了最后一个字段都要用逗号,结尾,特性:易于api接口解析

布尔值类型

debug: true        #真true,假false,不能用引号引用

debug: false

文本块

value: |       # | 代表保留输出文本的换行和回车符,不加的话即使文本换行也会在同一行显示

  hello         #这种情况就是输出 hello   ,不加 | 就是 helloworld!

  world!                            world!

| - #不保留文本块末尾的换行                | + #会保留文本块末尾的换行
 value: > hello        #将 > 后的字符串和之后的字符串用空格分开,即 hello world!

world!

打锚点和引用 

type: &a string        #&是打锚点,后面跟的是锚点名称,&a 代表的就是 string

type: *a                   #*a 代表引用锚点,此处输出结果就是 type: string

types:                      #此处就是输出 types: 

  - int                                                   - int

  - *a                                                   - string 

  - double                                            - double

对象object类型类型

一级字段:
    二级字段1:                    #yaml格式用 空格缩进 表示字段的层级关系,同一层字段要靠左对齐
    二级字段2:
	    三级字段: 

一个key有多个值

例如:
纵向格式:
animal: 
- 飞行动物
- 爬行动物
- 水生动物
- 两栖动物

横向格式
animal: ["飞行动物", "爬行动物", "水生动物", "两栖动物"]

3.Docker Compose配置常用字段

4.Docker Compose 常用命令

5.Docker-compose搭建nginx

准备依赖环境

#下载
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

准备依赖文件

mkdir -p /opt/compose_nginx/nginx /opt/compose_nginx/wwwroot
cd /opt/compose_nginx/nginx
cp nginx-1.12.0.tar.gz ./

vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx

vim Dockerfile
#基于基础镜像
FROM centos:7
#用户信息
MAINTAINER this is nginx image <yy>
#添加环境包
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
#上传nginx软件压缩包,并解压
ADD nginx-1.12.0.tar.gz /usr/local/src/
#指定工作目录
WORKDIR /usr/local/src/nginx-1.12.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
#指定http和https端口
EXPOSE 80
EXPOSE 443
//方法一:
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf			#关闭 nginx 在后台运行
#添加宿主机中run.sh到容器中
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]
//方法二:
ENTRYPOINT [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]


echo "<h1>this is test web</h1>" > /opt/compose_nginx/wwwroot/index.html

编写配置文件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
----------------------------------------------------------------------------------------------------------
-f, --file FILE :使用特定的 compose 模板文件,默认为 docker-compose.yml
-p, --project-name NAME :指定项目名称,默认使用目录名称
-d :在后台运行
----------------------------------------------------------------------------------------------------------

Docker Compose 文件结构

yum install -y tree
tree /opt/compose_nginx

测试

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 使用指南 #### 简介 Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个 YAML 文件(`docker-compose.yml`),可以配置应用程序所需的所有服务、网络和卷等资源。然后,使用简单的命令即可创建并启动所有服务[^2]。 #### 基本概念 - **服务(Service)**:一个服务代表一个容器实例。可以在 `docker-compose.yml` 文件中定义多个服务,每个服务都有自己的镜像、端口映射、环境变量等。 - **工程(Project)**:Docker Compose 中的“工程”是指包含所有服务的集合。默认情况下,工程名是当前目录名,但也可以通过 `-p` 参数自定义工程名[^2]。 - **YAML 文件**:`docker-compose.yml` 是 Docker Compose 的核心配置文件,用于定义服务、网络、卷等资源。YAML 是一种简洁的数据序列化格式,易于阅读和编写[^2]。 #### 安装 Docker Compose Docker Compose 可以通过以下命令安装在 Linux 系统上: ```bash curl -L "https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose docker-compose --version ``` 安装完成后,可以通过 `docker-compose --version` 验证是否安装成功。输出应类似于 `Docker Compose version v2.2.3`[^2]。 #### 常用命令 以下是一些常用的 Docker Compose 命令及其用途: - **启动服务** ```bash docker-compose up ``` 该命令会构建并启动所有在 `docker-compose.yml` 文件中定义的服务。加上 `-d` 参数可以让服务在后台运行: ```bash docker-compose up -d ```[^3] - **停止服务** ```bash docker-compose stop ``` 该命令会停止所有正在运行的服务。如果需要停止特定服务,可以指定服务名称: ```bash docker-compose stop <service_name> ``` - **删除容器** ```bash docker-compose rm ``` 该命令会删除所有已停止的容器。如果需要删除特定容器,可以指定服务名称: ```bash docker-compose rm <service_name> ``` - **查看运行中的容器** ```bash docker-compose ps ``` 该命令会列出所有正在运行的容器及其状态。 - **查看日志** ```bash docker-compose logs ``` 该命令会显示所有服务的日志信息。如果需要查看特定服务的日志,可以指定服务名称: ```bash docker-compose logs <service_name> ``` - **构建或重新构建服务** ```bash docker-compose build ``` 该命令会构建或重新构建所有服务。如果需要构建特定服务,可以指定服务名称: ```bash docker-compose build <service_name> ```[^3] - **启动已存在的容器** ```bash docker-compose start ``` 该命令会启动所有已存在的容器。如果需要启动特定容器,可以指定服务名称: ```bash docker-compose start <service_name> ``` - **通过发送 SIGKILL 信号停止服务** ```bash docker-compose kill ``` 该命令会通过发送 SIGKILL 信号来强制停止所有服务。如果需要停止特定服务,可以指定服务名称: ```bash docker-compose kill <service_name> ``` #### YAML 文件示例 以下是一个简单的 `docker-compose.yml` 文件示例,定义了一个名为 `web` 的服务,使用 `nginx` 镜像,并将本地的 `./html` 目录挂载到容器中的 `/usr/share/nginx/html` 目录: ```yaml version: '3' services: web: image: nginx ports: - "80:80" volumes: - ./html:/usr/share/nginx/html ``` 在这个示例中,`version` 指定了 Docker Compose 文件的版本,`services` 定义了所有服务,`web` 是服务名称,`image` 指定了使用的镜像,`ports` 定义了端口映射,`volumes` 定义了卷映射[^2]。 #### 注意事项 - **运行目录**:Docker Compose 命令必须在 `docker-compose.yml` 文件所在的目录中运行,否则会报错。如果修改了配置文件并且 `docker-compose up -d` 未成功,建议先运行 `docker-compose stop`,然后运行 `docker-compose rm`,最后重新构建镜像: ```bash docker-compose stop docker-compose rm docker-compose build ```[^1] - **工程名**:默认情况下,Docker Compose 会使用当前目录名作为工程名。如果需要自定义工程名,可以在命令中使用 `-p` 参数,例如: ```bash docker-compose -p myproject up -d ``` ####
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值