简介
docker compose 是用来配置和运行多容器服务的工具,通过 docker-compose 命令可轻松对多个容器进行如下操作:
(1)启动,停止和重建服务
(2)查看正在运行的服务的状态
(3)通过流输出正在运行的服务的日志
(4)对某个服务执行命令
Docker-Compose 安装
Centos7 安装 Docker-Compose
1 2 3 4 5 6 7 8 9 10
|
sudo cp docker-compose-Linux-x86_64 /usr/local/bin/docker-compose sudo chmod a+x /usr/local/bin/docker-compose
docker-compose --version
|
常用命令
常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
docker-compose up -d
docker-compose ps
docker-compose stop 服务名
docker-compose start 服务名
docker-compose down
docker-compose -f 21-es-docker-compose.yml start
docker-compose -f 21-es-docker-compose.yml logs -t -f es_client1
docker-compose -f es-docker-compose.yml up -d
docker-compose -f 12-es-docker-compose.yml logs
up
启动所有在Compose问中定义的容器,并且把它们的日志信息汇集在一起。通常会添加-d参数(在up后面),让容器在后台执行
start 启动指定的已经存在的容器
build 重新建造由Dockerfile构建的镜像。
ps 获取由Compose管理的容器的状态信息
run 启动一个容器,并允许一个一次性的命令。被连接的容器会同时启动,除非用了 --no-deps参数。
logs 汇集由Compose管理的容器的日志,并以彩色输出。
stop 停止容器,但不会删除它们
rm 删除已停止的容器。不要忘记使用-v参数来删除任何由Docker管理的数据卷
说明:
一个普通的工作流程以docker-compose up -d名利启动应用程序开始。docker-compose logs和ps命令可以用来验证应用程序的状态,还能帮助调试。 修改代码后,先执行docker-compose build 构建新的镜像,然后执行docker-compose up -d 取代运行中的容器。注意,Compose会保留原来容器中所有旧的数据卷,这意味着即使容器更新后,数据库和缓存也依旧在容器内(这很可能造成混淆,因此要特别小心)。 如果你修改了Compose的YAML文件,但不需要构建新的镜像,可以通过up -d参数使Compose以新的配置替换容器。如果想要强制停止Compose并重新创建所有容器,可以使用--force-recreate选项来达到目的。
|
常用参数
使用样例
创建网络
1
| docker network create --subnet=172.19.0.0/16 esnetwork
|
es-docker-compose.yml
文件内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
version: "2.2" services: es_master: image: elasticsearch:7.4.2 container_name: 12_es_master1 environment: - bootstrap.system_call_filter=false - node.name=12_es_master1 - node.master=true - node.data=false - cluster.name=es-docker-cluster1 - discovery.seed_hosts=192.168.172.73 - transport.publish_host=192.168.172.73 - transport.publish_port=9300 - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms1g -Xmx1g" - cluster.initial_master_nodes=12_es_master1 - Des.discovery.zen.minimum_master_nodes=1 - "network.host:0.0.0.0" - http.port=9200 - http.cors.enabled=true - http.cors.allow-origin="*" - http.publish_host=192.168.172.73 - http.publish_port=9200 - xpack.security.enabled:false - thread_pool.get.queue_size=1000 - thread_pool.write.queue_size=1000 - thread_pool.analyze.queue_size=1000 - thread_pool.search.queue_size=1000 - thread_pool.listener.queue_size=1000 - discovery.zen.ping_timeout=120s ulimits: memlock: soft: -1 hard: -1 volumes: - "/data_storage/12_es_master1:/usr/share/elasticsearch/data" - "/data_storage/es_plugins:/usr/share/elasticsearch/plugins" ports: - 192.168.172.73:9200:9200 - 192.168.172.73:9300:9300 networks: es_network: ipv4_address: 172.19.10.21
es_node1: image: elasticsearch:7.4.2 container_name: 12_es_node1 environment: - bootstrap.system_call_filter=false - node.name=12_es_node1 - node.master=false - node.data=true - cluster.name=es-docker-cluster1 - discovery.seed_hosts=192.168.172.73 - transport.publish_host=192.168.172.73 - transport.publish_port=9301 - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms1g -Xmx1g" - cluster.initial_master_nodes=12_es_master1 - Des.discovery.zen.minimum_master_nodes=1 - "network.host:0.0.0.0" - http.port=9200 - http.cors.enabled=true - http.cors.allow-origin="*" - http.publish_host=192.168.172.73 - http.publish_port=9201 - xpack.security.enabled:false - thread_pool.get.queue_size=1000 - thread_pool.write.queue_size=1000 - thread_pool.analyze.queue_size=1000 - thread_pool.search.queue_size=1000 - thread_pool.listener.queue_size=1000 - discovery.zen.ping_timeout=120s ulimits: memlock: soft: -1 hard: -1 volumes: - "/data_storage/12_es_node1:/usr/share/elasticsearch/data" - "/data_storage/es_plugins:/usr/share/elasticsearch/plugins" ports: - 192.168.172.73:9201:9200 - 192.168.172.73:9301:9300 networks: es_network: ipv4_address: 172.19.10.41
networks: es_network: external: name: esnetwork
|
更新容器
1
| docker-compose -f es-docker-compose.yml up -d
|
附件
参考资源