tags: docker
, devops
Docker Swarm進階實戰(2)
Service Logs
- 是container logs的聚集
- 可以印出全部tasks或單一task
- 如果你沒有log system,這可能是唯一troubleshooting的方式
- 沒有storage,、不支援log搜尋或轉送至其他系統
- 如果你有設定
--log-driver
,也就是其他logging方式,此指令就抓不到任何logs
除非你是小型swarm或測試階段,才使用一般的service logs,長期還是需要其他log storage的解決方案
範例指令
印出時不被截斷
1 2 |
docker service logs --raw --no-trunc my_service |
只取最近50筆
1 2 |
docker service logs --tail 50 --follow my_service |
Linux跟Mac可以透過grep
做簡單的篩選
1 2 |
docker service logs <id> 2>&1 | grep <search term> |
Windows透過findstr
1 2 |
docker service logs <id> 2>&1 | findstr <search term> |
Docker Events
- Docker engine或Swarm產生的操作(Action)紀錄
- 紀錄service/node/secret/config/network等的新增修改刪除動作
- 支援搜尋及formatting
- 分兩種scope,分別是swarm level跟local level(單一node)
- event存在實體記憶體,最多只能存1000筆,所以當node數量很多時,event就不堪用了,還是需要額外的logging system
範例指令 顯示local events,如果node是manager,會顯示swarm events
1 2 |
docker events |
--since
1 2 3 |
docker events --since 2017-01-01 docker events --since 1h |
--filter
1 2 3 4 5 |
docker events --filter event=start docker events --filter scope=swarm type=network |
Swarm Configs
可以在Swarm的Raft Database儲存字串或檔案,並mapping容器中,適合的應用場景為:
- nginx設定或更改proxy config
- 設定或更改資料庫config等 這樣可以取代bind mount(將資料儲存在硬碟),存在Raft能提高可用性 swarm config跟secret有異曲同工之妙,可以透過指令來新增刪除config files,要注意的是:
- config是immutable,不能修改只能replace
- 若有任何service使用到該config,要先移除service才能移除config
- 如果是隱私資料一樣用secret來存
範例指令
1 2 |
docker config create nginx-20190101 ./nginx.conf |
用特定config來建立一個service
1 2 |
docker service create --config source=nginx-20190101,target=/etc/nginx/conf.d/default.conf |
新增新的config來取代舊的,並更新有用到該config的service
1 2 3 4 |
docker config create nginx-20190201 ./nginx.conf docker service update --config-rm nginx-20190101 --config-add source=nginx-20190201,target=/etc/nginx/conf.d/default.conf |
stack file,3.3
之後才支援config
1 2 3 4 5 6 7 8 9 10 11 12 |
version: 3.3 services: web: image: nginx configs: - source: nginx-20190201 - target: /etc/nginx/conf.d/default.conf configs: nginx-20190201: file: ./nginx.conf |