Docker-Compose 的 depends_on
參數在 docker 中沒有對應。docker
重啓電腦後,容器的重啓過程只由 docker 控制,而 docker 不會依據 depends_on
的順序啓動容器,這致使容器組可能重啓失敗。json
目前的解決辦法是使用 systemd 或者 supervisor,在開機時運行 docker-compose up
命令。網絡
在使用固定的構建節點構建 Docker 鏡像時,正常狀況下會在構建完成後自動清理掉生成的鏡像,可是若是構建流程出現問題,就有可能致使鏡像沒有被清理。elasticsearch
最方便的方法是在構建完成後,使用命令 ,不能在構建完成後直接使用前面的命令清理徹底清理,由於這可能會清理掉別的構建任務的中間鏡像!!!致使 push 的時候找不到包,或者構建下一步時,發現中間容器被刪除了。。日誌docker system prune --all --force
清理掉全部沒有被使用的鏡像、容器、網絡、數據卷
更好的方法是使用定時任務(crontab 或者 jenkins triggler)在天天晚上沒有 docker 構建任務運行時,再跑 docker system prune --all --force
code
部署了 ELK 系統抓 MySQL 數據,結果過了一天,50G 空間就滿了,而 ES 自己的數據才 200M 不到。crontab
使用 du -h <目錄> --max_depth 1
逐級排查,發現罪魁禍首是 /var/lib/docker/containers
文件夾。這裏面的 <container-id>/<container-id>-json.log
(container id 是對應的容器 id)把磁盤用光了。部署
Google /var/lib/docker/containers 佔用空間
瞭解到,這些 log 文件就是對應容器的日誌,docker logs <container_id>
日誌一大堆。jenkins
首先 echo "" > xxx-json.log
臨時清理掉這些日誌。永久解決辦法以下:io
version: '2' services: elasticsearch: ... logging: # 限制容器服務的日誌大小,不然 docker logs 會佔滿磁盤空間 options: max-size: "10m" max-file: "1" volumes: - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro ports: - "9200:9200" - "9300:9300"
修改 /etc/docker/daemon.json
,添加以下內容:
{ ...... // 省略若干配置 "log-driver":"json-file", "log-opts": {"max-size":"10m", "max-file":"3"} }