Docker Compose

背景说明

当前随着互联网业务越来越复杂,越来越多的业务被拆分,所以现在微服务的理念越来越受欢迎,当前支撑微服务部署的就是k8s和docker,现在很多组建都开始docker,如mysql,redis等等,那如何管理这么多的docker镜像?怎么方便得启动这些服务?这就是docker-compse工具诞生的背景

安装

通过pip工具安装

$pip install docker-compose

或者

$pip3 install docker-compose

安装完成后查看版本确认是否安装成功

$docker-compose -v

一个例子

下面看一个实际的例子,这个是通过docker-compose来管理mysqlredis这两个docker服务

下载mysql和redis镜像

$docker pull mysql
$docker pull redis

创建需要映射的目录

$mkdir -p /Users/sphantix/Data/data/docker/mysql/db

编写docker-compose.yml

写入如下内容, 注意volumes映射部分需要改成自己本机目录

version: "3.9"
services:
  mysql:
    image: "mysql:latest"
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=toor
    volumes:
      - /Users/sphantix/Data/data/docker/mysql/db:/var/lib/mysql
      - /Users/sphantix/Data/data/docker/mysql/config:/etc/mysql/conf.d
      - /Users/sphantix/Data/data/docker/mysql/my.cnf:/etc/my.cnf
  redis:
    image: "redis:latest"
    command: redis-server /usr/local/etc/redis.conf
    ports:
      - 6379:6379
    volumes:
      - /Users/sphantix/Data/data/docker/redis:/data
      - /Users/sphantix/Data/data/docker/redis/redis.conf:/usr/local/etc/redis.conf

docker-compose.yml文档说明

  • version 表示的是docker-compose的语法版本,不同的版本会有一些差异,具体看这里

  • services 表示docker-compose需要管理的服务,在上面的例子中,有两个服务: mysqlredis

下面对服务中使用到的关键词做个说明

  • image 表示需要启动的镜像名称,格式是REPOSITORY:TAG

  • ports 表示启动镜像后,需要映射的端口号,格式是host_port:container_port, 等同与docker启动命令中的-p, 如果有多个端口映射,那用多行表示

  • environment 表示启动镜像后,需要传给容器的环境变量,等同于docker启动命令中的-e

  • volumes 表示启动镜像后,需要映射的路径地址,格式是host_path:container_path, 等同于docker启动命令中的-v

常用命令

启动

docker-compose up, 如果需要后台运行则加入-d参数, docker-compose up -d

查看

docker-compose ps, 查看命令和docker命令一样

关闭

docker-compose stop, 也和docker停止命令一样

HELP

通过docker-compose -h,这个万能命令查询所有能用的命令

Last updated

Was this helpful?