4、docker compose

docker compose能夠方便咱們快捷高效地管理容器的啓動、中止以及重啓等操做,和批量管理容器,它相似於linux下的shell腳本,基於yaml語法,在該文件裏咱們能夠描述應用的架構,好比用什麼鏡像、數據卷、網絡模式、監聽端口等信息。咱們能夠在一個compose文件中定義一個多容器的應用(好比jumpserver),而後經過該compose來啓動這個應用。 html

一、安裝 docker-composelinux

 sudo pip install -U docker-compose

 

二、建立docker-compose.yml文件 nginx

#Docker:組合web

###定義服務
vi docker-compose.ymldocker

指定內容shell

version: '2'
services:
  phoenix:
    image: nginx
    ports:
      - "8080:80"
  dragon:
    image: nginx
    ports:
      - "8081:80"

  

三、啓動服務瀏覽器

// 啓動服務
docker-compose up
// 經過瀏覽器訪問 http://192.168.99.100:8080/		http://192.168.99.100:8081/
// 回到終端,這裏會顯示容器裏面的一些日誌,每條日誌的前面會標註一下這個日誌來自哪個服務容器,ctrl+c能夠中止它們,這些服務咱們可讓它在後臺去運行
docker-compose up -d
// 查看一下正在運行的容器
docker ps

  

四、經常使用操做安全

// 查看應用的服務
docker-compose ps
// 中止phoenix服務
docker-compose stop phoenix
// 中止全部在docker-compose.yml文件中定義的服務
docker-compose stop
// 從新啓動phoenix服務
docker-compose start phoenix
// 啓動全部服務
docker-compose start	
// 查看服務的日誌
docker-compose logs
// 持續跟蹤服務日誌的變化
docker-compose logs -f
// 登陸到phoenix服務容器中
docker-compose exec phoenix bash
// 要刪除應用的服務須要先把它們都中止掉
docker-compose stop
// 刪除全部服務的容器
docker-compose rm
// 注意rm不會刪除掉建立的網絡還有數據卷
docker network ls
// 這裏的ninghaodocker_default就是咱們的應用建立一個網絡
// 若是想要刪除全部的這些東西的話,可使用
docker-compose down
docker network ls

  

 

 

注意:bash

 

###網絡
網絡決定了服務之間還有外界跟服務之間怎麼樣去進行溝通,在執行docker-compose up的時候,docker會給咱們建立一個默認的網絡,全部的服務也會屬於這個默認的網絡,服務跟服務之間可使用服務的名字進行相互的通訊,咱們也能夠建立本身的網絡,而後讓指定的服務加入到咱們本身建立的這些網絡裏面,那麼這樣的話屬於這個網絡的服務之間能夠進行通訊,網絡之外的服務就不可以去跟它們進行通訊了, 這樣的話會對這個服務有一個隔離的做用,讓應用更安全一些網絡

###定義網絡

version: '2'
services:
  phoenix:
    image: nginx
    ports:
      - "8080:80"
    networks:
      - "fairyland"
  dragon:
    image: nginx
    ports:
      - "8081:80"
    networks:
      - "fairyland"
  monkey:
    image: nginx
    ports:
      - "8082:80"
    networks:
      - "default"
networks:
  fairyland:
    driver: bridge

 

docker-compose up -d
docker-compose exec phoenix bash
ping dragon
exit
docker-compose exec dragon bash
ping phoenix
// 從新啓動服務
docker-compose up -d
docker-compose exec phoenix bash
ping dragon
ping monkey
// dragon能ping通,monkey不能ping通

 

 

###命名的數據卷

version: '2'
services:
  phoenix:
    image: nginx
    ports:
      - "8080:80"
    networks:
      - "fairyland"
    volumes:
      - nest:/mnt
  dragon:
    image: nginx
    ports:
      - "8081:80"
    networks:
      - "fairyland"
    volumes:
      - nest:/mnt
  monkey:
    image: nginx
    ports:
      - "8082:80"
    networks:
      - "default"
networks:
  fairyland:
    driver: bridge
volumes:
  nest:
    driver: local

 

具體可查看

docker-compose up -d
docker-compose exec phoenix bash
cd /mnt
touch phoenix_data_1
ls
exit
docker-compose exec dragon bash
cd /mnt
ls

  

  

###指定位置的數據卷

docker-compose.yml

version: '2'
services:
  phoenix:
    image: nginx
    ports:
      - "8080:80"
    networks:
      - "fairyland"
    volumes:
      - nest:/mnt
      - ./app/web:/usr/share/nginx/html
  dragon:
    image: nginx
    ports:
      - "8081:80"
    networks:
      - "fairyland"
    volumes:
      - nest:/mnt
      - ./app/web:/usr/share/nginx/html
  monkey:
    image: nginx
    ports:
      - "8082:80"
    networks:
      - "default"
networks:
  fairyland:
    driver: bridge
volumes:
  nest:
    driver: local
相關文章
相關標籤/搜索