1. 程式人生 > >Dcoker單機編排工具

Dcoker單機編排工具

rac app 內部 sig 項目 -a 項目目錄 link evel

docker編排工具:

yum install -y docker-compose

使用方式:
創建一個工作目錄,在工作目錄中創建一個docker-compose.yml文件!

docker-compose相關參數:

build
構建或重新構建服務。

服務一旦構建後,將會帶上一個標記名,例如 web_db。

可以隨時在項目目錄下運行 docker-compose build 來重新構建服務。

help
獲得一個命令的幫助。

kill
通過發送 SIGKILL 信號來強制停止服務容器。支持通過參數來指定發送的信號,例如

logs
查看服務的輸出。

port
打印綁定的公共端口。

ps
列出所有容器。

pull
拉取服務鏡像。

rm
刪除停止的服務容器。

run
在一個服務上執行一個命令。

start
啟動一個已經存在的服務容器。

stop
停止一個已經運行的容器,但不刪除它。通過 docker-compose start 可以再次啟動這些容器。

up
構建,(重新)創建,啟動,鏈接一個服務相關的容器。

鏈接的服務都將會啟動,除非他們已經運行。

默認情況, docker-compose up 將會整合所有容器的輸出,並且退出時,所有容器將會停止。

如果使用 docker-compose up -d ,將會在後臺啟動並運行所有的容器。

默認情況,如果該服務的容器已經存在, 
docker-compose up 將會停止並嘗試重新創建他們(保持使用volumes-from 掛載的卷),
以保證 docker-compose.yml 的修改生效。如果你不想容器被停止並重新創建,
可以使用 docker-compose up --no-recreate。如果需要的話,這樣將會啟動已經停止的容器。

docker-compose.yml文件中配置項:

build
指定 Dockerfile 所在文件夾的路徑。 Compose 將會利用它自動構建這個鏡像,然後使用這個鏡像。
使用格式:
build: /path/to/build/dir

image
指定為鏡像名稱或鏡像 ID。如果鏡像在本地不存在,Compose 將會嘗試拉去這個鏡像。

command
覆蓋容器啟動後默認執行的命令
使用格式:
command: bundle exec thin -p 3000

links
鏈接到其它服務中的容器。使用服務名稱(同時作為別名)或服務名稱:服務別名 (SERVICE:ALIAS) 格式都可以。
使用的別名將會自動在服務容器中的 /etc/hosts 裏創建
使用格式:
links:
 - db
 - db:database
 - redis
external_links
鏈接到 docker-compose.yml 外部的容器,甚至 並非 Compose 管理的容器。參數格式跟 links 類似。
使用格式:
external_links:
 - redis_1
 - project_db_1:mysql
 - project_db_1:postgresql

ports
暴露端口信息。
使用宿主:容器 (HOST:CONTAINER)格式或者僅僅指定容器的端口(宿主將會隨機選擇端口)都可以。
使用格式:
ports:
 - "3000"
 - "8000:8000"
 - "49100:22"
 - "127.0.0.1:8001:8001"

expose
暴露端口,但不映射到宿主機,只被連接的服務訪問。
僅可以指定內部端口為參數
使用格式:
expose:
 - "3000"
 - "8000"

volumes
卷掛載路徑設置。可以設置宿主機路徑 (HOST:CONTAINER) 或加上訪問模式 (HOST:CONTAINER:ro)
volumes_from
從另一個服務或容器掛載它的所有卷。
使用格式:
volumes:
 - /var/lib/mysql
 - cache/:/tmp/cache
 - ~/configs:/etc/configs/:ro

environment
設置環境變量。你可以使用數組或字典兩種格式。
只給定名稱的變量會自動獲取它在 Compose 主機上的值,可以用來防止泄露不必要的數據。
使用格式:
environment:
  RACK_ENV: development
  SESSION_SECRET:

environment:
  - RACK_ENV=development
  - SESSION_SECRET

env_file
從文件中獲取環境變量,可以為單獨的文件路徑或列表。
如果通過 docker-compose -f FILE 指定了模板文件,則 env_file 中路徑會基於模板文件路徑。
如果有變量名稱與 environment 指令沖突,則以後者為準。
使用格式:
env_file: .env

env_file:
  - ./common.env
  - ./apps/web.env
  - /opt/secrets.env

extends
基於已有的服務進行擴展。例如我們已經有了一個 webapp 服務,模板文件為 common.yml
net
設置網絡模式。使用和 docker client 的 --net 參數一樣的值
使用格式:
net: "bridge"
net: "none"
net: "container:[name or id]"
net: "host"

pid
跟主機系統共享進程命名空間。打開該選項的容器可以相互通過進程 ID 來訪問和操作。
使用格式:
pid: "host"

dns
配置 DNS 服務器。可以是一個值,也可以是一個列表。
使用格式:
dns: 8.8.8.8
dns:
  - 8.8.8.8
  - 9.9.9.9
dns_search
配置 DNS 搜索域。可以是一個值,也可以是一個列表。

實際案例:單機編排博客軟件

首先說明:三個鏡像都是自己做的!
所以直接使用即可!

[root@www22:33:54docker-compose]#cat docker-compose.yml 
#version: ‘3‘

#services:
   apache-web:
     image: 7b8b22661c10
     volumes:
       - /var/lib/docker/volumes/df3d545290f33921568de287532f8bed74551e7df113e054239a9e56a042e805/_data:/web/html
     ports:
       - "80:80"
     restart: always
   php-fpm:
     image: 172.20.23.31/phpapp1/centos-php-app1:v1
     ports:
       - "9000:9000"
     volumes:
       - /var/lib/docker/volumes/df3d545290f33921568de287532f8bed74551e7df113e054239a9e56a042e805/_data:/web/html
     restart: always
   server_db:
     image: 172.20.23.31/mysqlapp1/centos7.5-mysql-app1:v1
     ports:
       - "3306:3306"
     volumes:
       - /var/lib/docker/volumes/3daa3a70e12236e18f32454b3612a419de3070ae70ba41ac7fc2974a95b6eb05/_data:/mydata/data
     restart: always

Dcoker單機編排工具