長生村本郷Engineers'Blog

千葉県長生村本郷育ちのエンジニアが書いているブログ

Docker 不要リソースお掃除 compose

f:id:kenzo0107:20180711135636p:plain

概要

ECS EC2 で一部コンテナが 起動開始→失敗→起動開始→失敗 を繰り返し
サーバが容量不足 no space left に陥る事象がありました。

その時の対応をまとめました。

docker 不要リソース削除

docker 不要リソース削除処理コマンドは以下の様なものを実行します。

// コンテナ削除
$ docker ps -aq | xargs docker rm

// イメージ削除
$ docker images -aq | xargs docker rmi

// タグ無しイメージ一括削除
$ docker volume ls -qf dangling=true | xargs docker volume rm

dangling ... ぶら下がる、 ぶらぶら揺れる

Spotify のお掃除イメージを使う

$ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v /etc:/etc spotify/docker-gc
$ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker:/var/lib/docker martin/docker-cleanup-volumes

docker-compose.yml にしてみる

docker-compose.yml フォーマットにすることでイメージ管理が容易になります。

version: '2'

services:
  docker-gc:
    image: spotify/docker-gc
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /etc:/etc

  docker-cleanup-volumes:
    image: martin/docker-cleanup-volumes
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker:/var/lib/docker

ECS EC2 で one-off Container 実行してお掃除

ecs-cli compose \
        --debug \
        --project-name <project name> \
        --file docker-compose.yml \
    run \
        --cluster <cluster name> \ 
        --region ap-northeast-1 \
        --aws-profile <profile>

ToDo

初めて利用する Public Container に対しての脆弱性をチェックする仕組みを導入する必要があるかと思います。
この辺りまとめてまた執筆したいと思います。