docker compose 使用说明


docker compose 使用说明

 

使用docker compose,可以根据模板文件快速创建docker 容器集群

 

 

**********************

安装 docker compose

 

**************

在线安装

 

官网:https://docs.docker.com/compose/install/

 

linux 安装

curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

下载docker compose relsease、放置在指定位置(/usr/local/bin/docker-compose)、使文件可执行

 

**************

离线安装

 

下载地址:https://github.com/docker/compose/releases

 

本地下载docker compose release

上传到虚拟机指定位置(/usr/local/bin/docker-compose)

使文件可执行:chmod +x docker-compose

 

 

**********************

docker compose 命令

 

命令格式:docker-compose [options] [command] [args]

[root@centos ~]# docker-compose --help
Define and run multi-container applications with Docker.

Usage:
  docker-compose [-f <arg>...] [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)
  -c, --context NAME          Specify a context name
  --verbose                   Show more output
  --log-level LEVEL           Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
  --no-ansi                   Do not print ANSI control characters
  -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
  --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 containers, networks, images, and volumes
  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 the Docker-Compose version information

 

**************

options 选项

 

-f :指定文件,默认为 docker-compose.yml

-p :项目名称,默认使用所在目录名

-c :上下文名称

 

--verbose :输出详细信息

--log-level  level :输出日志信息

--env-file :环境变量文件

 

**************

command 命令

 

官网:https://docs.docker.com/compose/reference/

 

build:构建或者重新构建服务

config:查看compose 文件

create:创建服务

up:创建并运行服务

scale:设置容器的数量

 

exec:执行命令行

logs:查看服务输出

ps:列出服务容器

 

pull:拉取镜像

push:推送镜像

 

kill:强制关闭服务

stop:关闭服务

pause:暂停服务

unpause:恢复暂停的服务

start:开启服务

restart:重启服务

 

 

**********************

docker-compose.yml 文件

 

官网:https://docs.docker.com/compose/compose-file/

 

示例

version: "3.8"
services:

  redis:
    image: redis:alpine
    ports:
      - "6379"
    networks:
      - frontend
    deploy:
      replicas: 2
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure

  db:
    image: postgres:9.4
    volumes:
      - db-data:/var/lib/postgresql/data
    networks:
      - backend
    deploy:
      placement:
        max_replicas_per_node: 1
        constraints:
          - "node.role==manager"

  vote:
    image: dockersamples/examplevotingapp_vote:before
    ports:
      - "5000:80"
    networks:
      - frontend
    depends_on:
      - redis
    deploy:
      replicas: 2
      update_config:
        parallelism: 2
      restart_policy:
        condition: on-failure

  result:
    image: dockersamples/examplevotingapp_result:before
    ports:
      - "5001:80"
    networks:
      - backend
    depends_on:
      - db
    deploy:
      replicas: 1
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure

  worker:
    image: dockersamples/examplevotingapp_worker
    networks:
      - frontend
      - backend
    deploy:
      mode: replicated
      replicas: 1
      labels: [APP=VOTING]
      restart_policy:
        condition: on-failure
        delay: 10s
        max_attempts: 3
        window: 120s
      placement:
        constraints:
          - "node.role==manager"

  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "8080:8080"
    stop_grace_period: 1m30s
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints:
          - "node.role==manager"

networks:
  frontend:
  backend:

volumes:
  db-data:

 

version:指定文件版本,如不制定minor 版本,minor默认为0(version: 3 ==> version:  3.0)

 

services:创建服务

networks:设置容器网络

volumes:数据卷

 

**************

services 指令

 

build:dockerfile所在文件夹路径(绝对路径、相对docker-compose.yml文件路径)

image:指定镜像文件,不存在则去拉取镜像

dockerfile:指定镜像文件,不能与image同时使用

 

command:覆盖容器启动后默认执行的命令,command echo "hello wolrd"

container_name:容器名称,默认:项目名称_服务名称_序列号

 

dns:自定义dns服务器,可以是一个值,也可以是多个值

dns: 8.8.8.8

dns:
  - 8.8.8.8
  - 9.9.9.9

 

dns_search:dns搜索域,可以是一个值,也可以是多个值

dns_search: example.com

dns_search:
  - domain1.example.com
  - domain2.example.com

 

env_file:从文件中获取环境变量

environment:设置环境变量

expose:暴露端口

extends:基于其他模板进行拓展

 

ports:端口映射

ports:
  - "8080:8080"
  - "8000:8000"

 

volumes:数据卷

volumes:
  - "host_path_1:container_path_1"
  - "host_path_2:container_path_2:ro"

 

network_mode:网络模式

network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "service:[container id | name]"

 

networks:设置网段

services:
  some-service:
    networks:
     - some-network
     - other-network

 

**************

networks 指令

 

设置 ip 地址

version: "3.8"

services:
  app:
    image: nginx:alpine
    networks:
      app_net:
        ipv4_address: 172.16.238.10
        ipv6_address: 2001:3984:3989::10

networks:
  app_net:
    ipam:
      driver: default
      config:
        - subnet: "172.16.238.0/24"
        - subnet: "2001:3984:3989::/64"

 

**************

volumes 指令

 

容器共享数据卷

version: "3.8"

services:
  db:
    image: db
    volumes:
      - data-volume:/var/lib/db
  backup:
    image: backup-service
    volumes:
      - data-volume:/var/lib/backup/data

volumes:
  data-volume: host_path

容器不需要设置 宿主机目录,就可以实现容器数据共享

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值