一文搞懂什么是Docker compose

Docker compose

什么是 Docker Compose

  • Docker Compose是Docker官方的开源项目,是一个用于定义和运行多容器Docker应用程序的工具。

  • 服务(Service):在Docker Compose中,一个服务实际上可以包括若干运行相同镜像的容器实例,代表一个应用的容器。例如,一个Web应用、数据库等都可以被视为一个服务。

  • 项目(Project):由一组关联的应用容器组成的一个完整业务单元。在docker-compose.yml文件中定义,整个docker-compose.yml文件定义一个项目。Compose的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷的生命周期管理。

核心功能

定义和运行多容器应用:通过docker-compose.yml文件,用户可以定义多个容器的配置信息,包括容器之间的依赖关系、网络配置、数据卷管理等。然后,只需一个命令(如docker-compose up),就可以创建并启动所有定义的容器。

容器编排:Docker Compose支持容器的编排,可以根据容器的依赖关系自动启动和停止容器,确保应用在运行时具有正确的环境。

网络配置:Docker Compose支持自定义网络配置,使得容器之间的通信更加灵活和可靠。服务之间可以通过网络通信,Compose会自动创建网络。

数据卷管理:Docker Compose支持数据卷的挂载和管理,可以轻松地共享和持久化容器数据。

docker-compose.yml文件

docker-compose.yml 文件是 Docker Compose 的核心配置文件,用于定义和运行多容器 Docker 应用程序。
这个文件遵循 YAML格式,包含了一系列关于服务、网络、卷等配置的信息。
以下是一个基本的 docker-compose.yaml 文件示例,以及一些关键字段的解释:

version: "3.0"  # 指定 Compose 文件的格式版本
services:  # 定义服务(容器)的列表
  web:
    image: nginx:latest  # 指定容器使用的镜像
    ports:
      - "80:80"  # 主机端口:容器端口 主机与容器端口映射
    volumes:
      - ./html:/usr/share/nginx/html  # 将主机./html目录挂载到容器的/usr/share/nginx/html目录
    networks:
      - mynetwork  # 指定容器使用的网络
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example  # 设置环境变量
    volumes:
      - db_data:/var/lib/mysql  # 使用命名卷db_data存储数据库数据
    networks:
      - mynetwork
networks:  # 定义自定义网络
  my_network:
    driver: bridge  # 使用桥接网络模式
volumes:  # 定义命名卷
  db_data:

在这个示例中:
version 字段指定了 Compose 文件的版本。不同版本的 Compose 文件支持不同的配置选项。(最新版本使用的是nameversion已经被舍弃)
services 字段下定义了一个或多个服务(容器)。在这个例子中,定义了两个服务:web 和 db。
volumes 字段用于数据持久化或数据共享,可以挂载主机目录到容器目录,或使用命名卷。为啥需要持久化,容器重启或破坏不会保存之前任何信息,类似内存。
environment 字段用于设置环境变量。
networks 字段指定了容器使用的网络。
networks 字段定义了一个或多个自定义网络。在这个例子中,定义了一个名为 my_network 的桥接网络。
volumes 字段定义了一个或多个命名卷。在这个例子中,定义了一个名为 db_data 的卷,用于存储 MySQL 数据库的数据。
注意,YAML 文件对缩进非常敏感,因此请确保每个字段都正确缩进。

此外,根据实际需求,您可以添加更多配置选项或自定义服务、网络和卷。

详细参考官方文档:https://docs.docker.com/reference/compose-file/version-and-name/

docker compose 常用命令

  • docker compose up:创建并启动容器。配合 -d参数后台挂起
  • docker compose down:停止并删除容器、网络和卷(如果使用–volumes选项)。
  • docker compose start:启动服务。
  • docker compose stop:停止服务。
  • docker compose restart:重启服务。
  • docker compose logs:查看容器日志。
  • docker compose ps:列出所有容器。
  • docker compose config:检查docker-compose.yaml文件的配置。

详细参考官方文档: https://docs.docker.com/reference/cli/docker/compose/

Docker Compose 基本操作

创建一个目录并进入到该目录下:

mkdir -p /opt/nginx && cd /opt/nginx
# 创建一个yaml文件,缩进格式,建议2个空格 ,具体内容见后一个yaml脚本
vi docker-compose.yaml 
# 后台挂起服务
sudo docker compose up -d
name: 
  test_compose
services:
  web:
    image: nginx:1.24.0
    environment:
    TEST: 1
    ports:
      - "8080:80"
    networks:
      - my_testnet
    volumes:
       - ./my_nginx:/usr/share/nginx/html
     depends_on:
      mysql:
         condition: service_healthy 
      redis:
         condition: service_healthy
  mysql:
    image: mysql:5.7
    environment:
       MYSQL_ROOT_PASSWORD: "root123456"
    networks:
       - my_testnet
    volumes:
       - /data/maxhou/mysqldata/varlib/:/var/lib/mysql
    healthcheck:
      test: mysql --user=root --password='root123456' -e "SELECT 1;"
      interval: 10s
      timeout: 5s
      retries: 10
  redis:
    image: redis:7
    networks:
       - my_testnet
    healthcheck:
      test: redis-cli ping
      interval: 10s
      timeout: 5s
      retries: 10
  networks:
    mytestnet:

通过该命令查看配置文件是否出现错误:
docker compose config

随后做如下操作

# 创建首页目录
mkdir -p ./my_nginx && cd ./my_nginx
# 编辑首页内容
echo "Test Docker Compose" > index.html
# 启动服务
docker compose up -d

如在本机部署,可以通过localhost:8080访问即可得到想要结果
在这里插入图片描述

如有任何docker疑问可以联系博主哦!

当然,我很乐意帮助您入门DockerDocker是一个开源的容器化平台,它可以帮助您打包、发布和运行应用程序。以下是一些关键概念和步骤来帮助您入门Docker: 1. 安装Docker:首先,您需要在您的机器上安装DockerDocker提供了适用于不同操作系统(如Windows、Mac和Linux)的安装程序。您可以在Docker官方网站上找到相应的安装指南。 2. Docker镜像:Docker镜像是一个轻量级的独立软件包,其中包含了运行应用程序所需的所有内容(包括代码、运行时环境、库和依赖项等)。您可以通过构建自己的镜像或者从Docker Hub等镜像仓库中获取现有的镜像。 3. Docker容器Docker容器是从Docker镜像创建的运行实例。容器可以独立运行,并且具有自己的文件系统、网络和进程空间。您可以使用Docker命令来创建、启动、停止和删除容器。 4. Dockerfile:Dockerfile是一个文本文件,其中包含了一系列的指令,用于构建Docker镜像。通过编写Dockerfile,您可以定义应用程序的所需环境、依赖项和配置等信息,并将其打包到镜像中。 5. Docker ComposeDocker Compose是一个用于定义和运行多个Docker容器的工具。通过编写一个YAML格式的配置文件,您可以定义多个服务(每个服务对应一个容器),并指定它们之间的关联和依赖关系。 以上是Docker的一些基本概念和步骤,希望对您入门Docker有所帮助。如果您有更具体的问题或者需要进一步了解,请随时提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值