Docker学习笔记2:Docker Compose使用

Docker Compose是Docker官方的开源编排工具,它可以让用户通过编写一个简单的模板文件,快速的创建和管理基于Docker容器的应用集群。

一、安装

查看官网,有多种方式可以安装,此处使用比较简单的一种,直接使用命令行安装,并赋给执行权限:
curl -L https://github.com/docker/compose/releases/download/1.25.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose

安装完成后使用 -v命令查看是否安装成功:docker-compose -v

二、命令

可使用docker-compose -help命令查看命令的用法:

root@ubuntu:~# 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)
  --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
  bundle             Generate a Docker bundle from the Compose file
  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

Compose命令的基本格式是:

docker-compose [-f=<arg>...] [options] [command] [args...]

常用命令选项:

  • -f ,–file File指定使用的Compose模板文件,默认为docker-compose.yml,可以多次指定。
  • -p,–project-name Name指定项目名称,默认使用所在的目录名称为项目名。

三、Compose模板文件

模板文件是使用Compose的核心,涉及到的关键字也比较多。但是大部分指令与docker run相关参数的含义都是类似的。

默认的模板文件名称为docker-compose.yml,格式为YAML格式。

这里直接给出一个模板文件来看看如何使用,这个模板的作用是一次构建了后端项目使用的多个常见软件,如MySQL、Redis、Mongo等等:

version: '3' #docker-compose的版本号
services:
  mysql:
    image: mysql:5.6 #每个服务都必须通过image指令指定镜像或build指令(需要Dockerfile)等来构建镜像
    container_name: mysql
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root  #设置root帐号密码
    ports: #暴露端口信息,使用“宿主:容器”
      - 3306:3306
    volumes: #数据卷所挂载路径设置,
      - /mydata/mysql/data/db:/var/lib/mysql  #数据文件挂载
      - /mydata/mysql/data/conf:/etc/mysql/conf.d  #配置文件挂载
      - /mydata/mysql/log:/var/log/mysql  #日志文件挂载
  redis:
    image: redis:3.2
    container_name: redis
    command: redis-server --appendonly yes
    volumes:
      - /mydata/redis/data:/data #数据文件挂载
    ports:
      - 6379:6379
  elasticsearch:
    image: elasticsearch:6.4.0
    container_name: elasticsearch
    environment:
      - "cluster.name=elasticsearch" #设置集群名称为elasticsearch
      - "discovery.type=single-node" #以单一节点模式启动
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m" #设置使用jvm内存大小
    volumes:
      - /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载
      - /mydata/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载
    ports:
      - 9200:9200
  kibana:
    image: kibana:6.4.0
    container_name: kibana
    links: #链接到其他服务中的容器,使用服务名称,或“服务名称:服务别名”
      - elasticsearch:es  #可以用es这个域名访问elasticsearch服务
    depends_on:
      - elasticsearch  #kibana在elasticsearch启动之后再启动
    environment:
      - "elasticsearch.hosts=http://es:9200" #设置访问elasticsearch的地址
    ports:
      - 5601:5601
  mongo:
    image: mongo:3.2
    container_name: mongo
    volumes:
      - /mydata/mongo/db:/data/db #数据文件挂载
    ports:
      - 27017:27017

切换到docker-compose文件所在目录,并使用-up命令启动:

root@ubuntu:~/data# ll | grep compose
-rwxrw-rw-  1 xu   xu   2703 Jul  5 19:07 docker-compose.yml*
root@ubuntu:~/data# docke-compose up

启动之后可以看到没有的image会从仓库pull下来,并启动:
pull redispull es
或者加上 -d命令后台启动,可以看到docker-compose文件中的容器都已正常启动了:
up -d

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值