docker-compose管理daocker

Docker-compose管理docker服務html

一、安裝docker-composenginx

@首先確保服務器上已經安裝docker環境,若是沒有安裝使用以下命令進行安裝:git

# yum  -y  install  dockgithub

#curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-composeweb

# chmod +x /usr/local/bin/docker-composedocker

 

二、建立docker-compose運行須要的配置文件,docker-compose.yml他是yml格式的。默認啓動的時候會在當前目錄下找配置文件,也能夠經過-f 指定配置文件來啓動。bash

# cat docker-compose.yml服務器

version: '2'網絡

services:curl

  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

相關文章
相關標籤/搜索