首页 > 代码库 > docker-compose管理daocker
docker-compose管理daocker
Docker-compose管理docker服务
1、安装docker-compose
@首先确保服务器上已经安装docker环境,如果没有安装使用如下命令进行安装:
# yum -y install dock
#curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
2、创建docker-compose运行需要的配置文件,docker-compose.yml他是yml格式的。默认启动的时候会在当前目录下找配置文件,也可以通过-f 指定配置文件来启动。
# cat docker-compose.yml
version: ‘2‘
services:
elasticsearch:
build: elasticsearch/
ports:
- "9200:9200"
- "9300:9300"
environment:
ES_JAVA_OPTS: "-Xms30g -Xmx30g"
networks:
- docker_elk
volumes:
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- /data/elasticsearch:/usr/share/elasticsearch/data
logstash:
build: logstash/
command: -f /etc/logstash/conf.d/ --config.reload.automatic
volumes:
- ./logstash/config:/etc/logstash/conf.d
ports:
- "5000:5000"
- "5043:5043"
networks:
- docker_elk
depends_on:
- elasticsearch
kibana:
build: kibana/
volumes:
- /tmp/:/etc/archives/
- ./kibana/config/:/etc/kibana/
ports:
- "5601:5601"
networks:
- docker_elk
depends_on:
- elasticsearch
networks:
docker_elk:
driver: bridge
@这个配置文件使用解读如下:
services:
部署的服务名称:
build: 填写服务的Dockerfile路径
ports:
- “本机port:容器port”
- “………”
- …………….
注:当使用 HOST:CONTAINER 格式来映射端口时,如果你使用的容器端口小于 60 你可能会得到错误得结果,因为 YAML 将会解析 xx:yy 这种数字格式为 60 进制。所以建议采用字符串格式。
environment: 设置环境变量
ES_JAVA_OPTS: "-Xms30g -Xmx30g"
networks: 定义docker网络,名称一样的可以互通。
- “docker_elk”
volumes: 挂载本地目录到容器
- /data:/data
command: -f /etc/logstash/conf.d/ --config.reload.automatic
command用于覆盖容器后执行的命令
networks:
docker_elk:
driver:bridge
extends: 基于已有的服务进行扩展
file: common.yml
使用这种方式管理docker容器,前提必须已经创建好了Dockerfile,在相应的目录下。
@第二种格式是docker-compose自己pull镜像,不用创建Dockerfile
# cat docker-compose.yml
version: ‘2‘
services:
App1:
image: nginx #指定为镜像名称或镜像 ID。如果镜像在本地不存在,Compose 将会尝试拉去这个镜像。
ports:
- "8080:80"
networks:
- "netName1"
volumes:
- /opt/conf/:/mnt
App2:
image: nginx
ports:
- "8081:80"
networks:
- "netName1"
volumes:
- /opt/conf/nginx.conf:/etc/nginx/nginx.conf
App3:
image: nginx
- /opt/web/:/usr/share/nginx/html
ports:
- "8082:80"
networks:
- "netName2"
networks:
netName1:
driver: bridge
netName2:
driver: bridge
启动服务:
# docker-compose up -d
# docker-compose ps
# docker-compose exec App1 bash
# docker-compose restart App1
# docker-compose stop App1
# docker-compose stop
# docker-compose start
docker-compose管理daocker