Compose 是用于定义和运行多容器 Docker 应用程序的工具。
通过Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Docker Compose 安装
安装 Docker Compose 可以通过下面命令自动下载适应版本的 Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
为安装脚本添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
查看安装是否成功
docker-compose -v
创建文件 docker-compose.yml,在 docker-compose.yml 所在路径下执行该命令 Compose 就会自动构建镜像并使用镜像启动容器
# yaml 配置
version: '3'
services:
web:
ports:
- "5000:5000"
- "80:80"
container_name: web
image: nginx
volumes:
- /home/nginx/conf.d:/etc/nginx/conf.d
- /home/webroot:/home/webroot
- /home/nginx/logs:/var/log/nginx
networks:
- link
php:
#image: liuxl0316/7.2-fpm:v2
ports:
- "9000:9000"
image: liuxl0316/phalcon:v1
container_name: php
volumes:
- /home/webroot:/home/webroot
- /home/php/php.ini:/usr/local/etc/php/php.ini
stdin_open: true
tty: true
# depends_on:
# - skywalkingoap
networks:
- link
# mysql:
# ports:
# - "3307:3306"
# image: mysql:5.7
# volumes:
# - ./mysql/data:/var/lib/mysql
# container_name: mysql
# environment:
# MYSQL_ROOT_PASSWORD: 123456
# networks:
# - link
redis:
ports:
- "6379:6379"
container_name: redis
image: redis
networks:
- link
mongo:
ports:
- "27017:27017"
container_name: mongo
image: mongo:latest
networks:
- link
elasticsearch:
ports:
- "9200:9200"
container_name: elasticsearch
image: elasticsearch:6.7.0
#image: elasticsearch:7.14.1
volumes:
- /home/elasticsearch/6.7.0/data:/usr/share/elasticsearch/data
# - ./elasticsearch/7.14.1/data:/usr/share/elasticsearch/data
environment:
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms512m -Xmx512m
# restart: always
networks:
- link
kibana:
ports:
- "5601:5601"
container_name: kibana
#image: kibana:7.14.1
image: kibana:6.7.0
volumes:
- /home/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
depends_on:
- elasticsearch
links:
- elasticsearch
# environment:
# - server.name=kibana
# - server.host="0.0.0.0"
# - elasticsearch.hosts=elasticsearch
# - elasticsearch.username='kibana'
# - xpack.monitoring.ui.container.elasticsearch.enabled=true
privileged: true
networks:
- link
jenkins:
container_name: jenkins
image: jenkinsci/blueocean
ports:
- "8888:8888"
volumes:
- /home/webroot:/home/webroot
- /home/jenkins/data:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
networks:
- link
restart: always
networks:
link:
driver: "bridge"
docker-compose up 或者 docker-compose up -d // 后台启动并运行容器
Docker Compose使用的三个步骤:
使用 Dockerfile 定义应用程序的环境。
使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
最后,执行 docker-compose up 命令来启动并运行整个应用程序。
Docker Compose常见命令
#列出所有运行容器
docker-compose ps
#查看服务日志输出
docker-compose logs
#构建或者重新构建服务
docker-compose build
#启动指定服务已存在的容器
docker-compose start redis
#停止已运行的服务的容器
docker-compose stop redis
#删除指定服务的容器
docker-compose rm redis
#构建、启动容器
docker-compose up
#通过发送 SIGKILL 信号来停止指定服务的容器
docker-compose kill redis
#设置指定服务运行容器的个数,以 service=num 形式指定
docker-compose scale user=3 movie=3
#在一个服务上执行一个命令
docker-compose run web bash
文件更改后想使之立刻生效,但是不想手动删除已经建立的 container 等信息可以运行下面命令
重新创建容器实现修改
docker-compose up --force-recreate -d
从容器cp文件到本地:
docker cp kibana:/usr/share/kibana/config/kibana.yml /home/kibana/config/kibana.yml
从本地推送到容器:
docker cp 主机文件路径 容器id:docker容器中配置文件路径
docker cp /home/my.cnf mysql:/etc/mysql/my.cnf