Docker 一日工作坊Part3
Michael.K
關於第三階段
- 最佳化你的Docker Image
- size optimized
- resources optimized
- s6-overlay
- 保護你的docker image
Size Optimized
目前主流兩種方式
- docker-slim
- alpine based image
什麼是docker slim
- 不會改變docker image內的所有資料
- 壓縮比可以到30倍
docker-slim build --http-probe my/sample-node-app
docker-slim不適合的場景
- stateful volume
- 使用alpine的前提下
Resource Optimized
對image限制
- cpus
- cpu-period
- cpu-quota
- memory
- memory-swap
新問題
複習docker的特性
- 將OS做為Application化
- 所有container只能允許一個指令執行
- 預設權限都會是root
假定情況
- 擁有同樣的code base
- 權限問題(mysql, nginx)
s6-overlay
什麼是s6-overlay
- 類似supervisord
- 一個常駐型daemon thread
- 擁有一系列unix liked系統的工具
FROM ubuntu
ADD https://github.com/just-containers \
/s6-overlay/releases/download/v1.21.7.0 \
/s6-overlay-amd64.tar.gz /tmp/
RUN tar xzf /tmp/s6-overlay-amd64.tar.gz -C /
RUN apt-get update && \
apt-get install -y nginx && \
echo "daemon off;" >> /etc/nginx/nginx.conf
ENTRYPOINT ["/init"]
CMD ["nginx"]
docker-host $ docker build -t demo .
docker-host $ docker run --name s6demo -d -p 80:80 demo
docker-host $ docker top s6demo acxf
PID TTY STAT TIME COMMAND
3788 ? Ss 0:00 \_ s6-svscan
3827 ? S 0:00 | \_ foreground
3834 ? S 0:00 | | \_ foreground
3879 ? S 0:00 | | \_ nginx
3880 ? S 0:00 | | \_ nginx
3881 ? S 0:00 | | \_ nginx
3882 ? S 0:00 | | \_ nginx
3883 ? S 0:00 | | \_ nginx
3828 ? S 0:00 | \_ s6-supervise
3829 ? S 0:00 | \_ s6-supervise
3830 ? Ss 0:00 | \_ s6-log
商業來說
docker適合做什麼
- 方便部署
- 可攜性
關於安全性問題
大前提: code不安全
falco
什麼是falco
- 由sysdig所開發
- 是系統內常駐daemon
- docker檢測工具
program_output:
enabled: true
keep_alive: false
program: mail -s "Falco Notification" someone@example.com
更多設定相關
docker slim也可以
seccomp
- Linux上的安全元件
- 可以限制呼叫指令
實際示範
Docker 一日工作坊P3
By michael34435
Docker 一日工作坊P3
- 1,336