Docker Compose file的指令學習gogo,再一點就要結束了!!
設置Docker重啟後container的動作。
flag | 解說 |
---|---|
"no" |
不做任何動作(預設) |
always |
出現錯誤的退出才會重啟 |
on-failure |
始終重啟(如果是手動停止的話直到Docker重啟前都不會) |
unless-stopped |
始終重啟(如果是手動停止的話直到自行重啟container前都不會) |
此設置會覆蓋所有image預設的label
security_opt:
- label:user:USER
- label:role:ROLE
此配置為,當在發送SIGKILL之前,如果container無法處理SIGTERM,停止該容器所指定需要等待的時間。
小知識:
在電腦內的訊號中,SIGKILL是用來傳送給一個process來停止它們的訊號,此訊號無法被拒絕,因此是在無法處理SIGTERM等訊號之後的最終手段。
stop_grace_period: 1s
設置停止時發送的訊號,預設為SIGTERM,電腦訊號如下圖有這麼多...
圖來源
於container中設置的kernal參數,只能在一開始設置不能用修改的方式變動。
sysctls:
net.core.somaxconn: 1024
net.ipv4.tcp_syncookies: 0
可以在container內設置暫時的文件系統
tmpfs:
- /run
- /tmp
ulimits用來限制process的資源利用率,以防止失控的錯誤或安全漏洞導致整個系統癱瘓。
ulimits:
nproc: 65535
nofile:
soft: 20000
hard: 40000
掛載volumes,Top level掛載的volumes可以重複使用。
我們從之前的docker compose練習的檔案來看,todo-mysql-data就是可重複使用的volumes。
version: '3.8'
services:
app:
image: node:12-alpine
command: sh -c "yarn install && yarn run dev"
ports:
- 3000:3000
working_dir: /app
volumes:
- ./:/app
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: secret
MYSQL_DB: todos
mysql:
image: mysql:5.7
volumes:
- todo-mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: todos
volumes:
todo-mysql-data:
compose file命令的學習就先到這邊了,明天就要開始來學習跟kubernetes很像的Docker Swarm,看能不能在學習中了解如何結合兩者的優勢來使用。
參考文獻:
docker官方文件