使用Docker-compose管理容器

一、Docker-compose概述

Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。通过Docker Compose,您可以使用YAML文件来配置应用程序需要的所有服务,并使用一个命令从YAML文件配置中创建并启动所有服务。

Compose 中有两个重要的概念:

  • 服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
  • 项目(project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。想要使用docker-compose需要安装好docker环境。

使用步骤:

  • 安装docker环境
  • 下载docker-compose可执行文件
  • 编写.yaml文件定义项目和服务
  • 启动并管理多个容器

举例:以部署wordpress博客为例,如果使用docker需要手动部署mysql、redis、wordpress博客,而且容器间还有依赖关系,先启动mysql容器再启动wordpress容器。如果是以docker-compose则可以将3个容器定义为一个项目,项目包含3个服务,并且先启动mysql和redis,最后启动wordpress并连接。

二、下载安装

docker-compose是一个可执行文件,直接下载到Bin目录,赋予执行权限即可。可以直接在服务器下载或者下载完成后上传到/usr/local/bin/目录。

# 下载二进制文件
sudo curl -L https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

# 赋予权限
chmod +x /usr/local/bin/docker-compose

# 测试
docker-compose -v

简单使用

在目录下创建.yaml文件。

# 创建一个docker-compose.yaml文件,内容如下:
version: '3'  
services:  
  mysql:  
    image: mysql:latest  
    ports:  
      - "3306:3306"  
    environment:  
      MYSQL_ROOT_PASSWORD: password  
    volumes:  
      - mysql_data:/var/lib/mysql  
  redis:  
    image: redis:latest  
    ports:  
      - "6379:6379"  
  wordpress:  
    image: wordpress:latest  
    ports:  
      - "8080:80"  
    environment:  
      WORDPRESS_DB_HOST: mysql  
      WORDPRESS_DB_USER: root  
      WORDPRESS_DB_PASSWORD: password  
      WORDPRESS_DB_NAME: wordpress  
      REDIS_HOST: redis  
    depends_on:  
      - mysql  
      - redis  
volumes:  
  mysql_data:

说明:

  • 文件格式:yml文件的格式层级关系是缩进两个英文状态的空格,不能用缩进符等替代空格。
  • 指令与值:如果指令后面需要写值必须是英文冒号+英文空格方可写值,如:image: “mysql:5.7”。
  • 多值指令:对于可以写多个值的指令(一般这样的指令都是这个单词的复数格式,如volumes、networks、ports等),对于这些指令的值需要冒号换行后使用 - 指定一个值,如果有多个值,使用多个 - 指定。如: ports: #指定端口映射 - "9003:9989" #端口映射关系 和ports一起相当于-p 9003:9989 - "8080:8080"。
  • 文件名:docker-compose文件的名称只能是以下四个之一:docker-compose.yml、docker-compose.yaml、 compose.yml、compose。
  • 服务定义:每个服务都必须明确定义在services字段下,并有一个唯一的服务名称。服务定义包括镜像名称、环境变量、端口映射等。
  • 依赖关系:可以使用depends_on字段来定义服务的依赖关系,以确保在启动服务之前先启动依赖的服务。
  • 网络配置:可以使用networks字段来定义自定义网络,并在服务中指定该网络。
  • 卷挂载:可以使用volumes字段来定义卷,并在服务中指定挂载点。

简单说就是以创建一个指定名称的yaml文件,以缩进格式编写定义服务于容器名称,端口映射,卷挂载,环境变量,与docker部署一致。必须在services下面定义容器配置,然后使用镜像等等内容。

启动整个项目,在.yaml文件的当前目录执行docker-compose up -d

# 启动容器
docker-compose up -d
# 重启
docker-compose restart
# 停止删除容器
docker-compose down

使用docker-compose可以实现整个项目的停止重启或者单个服务的管理。

常见的管理命令:

  • 启动和运行服务:docker-compose up。
  • 停止服务:docker-compose stop。
  • 重新启动服务:docker-compose restart。
  • 构建服务:docker-compose build。
  • 删除服务:docker-compose rm。
  • 列出服务:docker-compose ps。
  • 查看日志:docker-compose logs。
  • 获取服务容器的详细信息:docker-compose inspect。
  • 进入容器:docker-compose exec [服务名称] [命令]。
  • 删除项目:docker-compose down。

总结:通过在docker-compose.yaml批量创建容器,并且容器间可以实现依赖与顺序启动,方便进行管理。通过在services下面定义服务,服务的定义与docker一致,注意缩进格式即可。

本文由 mdnice 多平台发布

你可能感兴趣的:(程序人生)