docker-compose

简介

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

docker-compse需要以下步骤

  • 使用 Dockerfile 定义应用程序的环境(非必须)。
  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

docker-compose安装

docker-compose.yml

version: "2"
services:
  web-nginx:
    image: web-nginx:v2
    build:
      context: ./
      dockerfile: Dockerfile
    depends_on:
      - redis
    ports:
      - "80:80"
    networks:
      - back-tier

  redis:
    image: redis
    #links:
      # 在web-nginx的container中的hosts中注册自己 例如:xxx.xxx.xxx.xx reids
      #- web-nginx
    networks:
      - back-tier


networks:
  front-tier:
    driver: bridge
  back-tier:
    driver: bridge
注意事项
  • links 与 depends_on 处理不好会形成环形依赖
  • 同时有image 和 build的话,会优先使用image中的参数使用镜像,若没有则会更具build构建镜像,并使用image的名字命名镜像

docker-compose.yml参数说明

可参考 docker-compose.yml说明和编写 - 简书 (jianshu.com)

参数 说明 参考
version 使用的版本说明 version: "2"
services 该参数下写服务名 services:
redis:
image: redis
image 所使用的镜像 image: web-nginx:v2
build 构建镜像的Dockerfile文件路径 build: ./dir
depends_on 解决容器的依赖、启动先后的问题 depends_on:
- db
- redis
container_name 指定容器名称。默认将会使用项目名称_服务名称_序号这样的格式
ports 暴露端口信息,使用宿主端口:容器端口(HOST:CONTAINER)格式,宿主将会随机选择端口)都可以。 ports:
- "3000"
- "80:8000"
- "127.0.0.1:8001:8001"
networks 配置容器连接的网络 networks:
front-tier:
driver: bridge
back-tier:
driver: bridge
command 覆盖容器启动后默认执行的命令

docker-compose.yml命令

docker-compose操作的是docker,使用docker-compose命令做的操作也能用docker命名替换

启动container
# 启动所有容器
docker-compose up -d
# 启动单个容器(该容器必须在service中已被定义)
docker-compose up -d redis
停止container
# 停止所有container
docker-compose stop
# 停止一个container(该容器必须在service中已被定义)
docker-compose stop worker
删除container
# 删除所有容器
docker-compose rm
# 删除单个容器
docker-compose rm redis
docker-compose参数详解
Usage:
  docker-compose [-f <arg>...] [--profile <name>...] [options] [--] [COMMAND] [ARGS...]
  docker-compose -h|--help

Options:
  -f, --file FILE             Specify an alternate compose file
                              (default: docker-compose.yml)
  -p, --project-name NAME     Specify an alternate project name
                              (default: directory name)
  --profile NAME              Specify a profile to enable
  -c, --context NAME          Specify a context name
  --verbose                   Show more output
  --log-level LEVEL           Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
  --ansi (never|always|auto)  Control when to print ANSI control characters
  --no-ansi                   Do not print ANSI control characters (DEPRECATED)
  -v, --version               Print version and exit
  -H, --host HOST             Daemon socket to connect to

  --tls                       Use TLS; implied by --tlsverify
  --tlscacert CA_PATH         Trust certs signed only by this CA
  --tlscert CLIENT_CERT_PATH  Path to TLS certificate file
  --tlskey TLS_KEY_PATH       Path to TLS key file
  --tlsverify                 Use TLS and verify the remote
  --skip-hostname-check       Don't check the daemon's hostname against the
                              name specified in the client certificate
  --project-directory PATH    Specify an alternate working directory
                              (default: the path of the Compose file)
  --compatibility             If set, Compose will attempt to convert keys
                              in v3 files to their non-Swarm equivalent (DEPRECATED)
  --env-file PATH             Specify an alternate environment file

Commands:
  build              Build or rebuild services
  config             Validate and view the Compose file
  create             Create services
  down               Stop and remove resources
  events             Receive real time events from containers
  exec               Execute a command in a running container
  help               Get help on a command
  images             List images
  kill               Kill containers
  logs               View output from containers
  pause              Pause services
  port               Print the public port for a port binding
  ps                 List containers
  pull               Pull service images
  push               Push service images
  restart            Restart services
  rm                 Remove stopped containers
  run                Run a one-off command
  scale              Set number of containers for a service
  start              Start services
  stop               Stop services
  top                Display the running processes
  unpause            Unpause services
  up                 Create and start containers
  version            Show version information and quit

posted @ 2021-10-08 20:59  糖烤栗子&  阅读(162)  评论(0编辑  收藏  举报