LoginSignup
1
0

More than 5 years have passed since last update.

DockerがホストOSのディスクを圧迫するので、コンテナ再作成のついでにディスクスペースを空ける

Posted at

開発中のアプリの動作確認でデータベースを頻繁に更新するため、docker-composeでmysqlのコンテナを作っては壊ししています。
手軽にデータベースを初期状態に戻せて便利なのですが、使っているとホストのディスク容量をあっという間に占領します。
データベース初期化のついでにディスクスペースも空けるようにシェルスクリプト化してしまいました。

前提・参考ページ

OS: CentOS Linux release 7.2.1511 (Core)
Docker: Docker version 1.13.1, build 8633870/1.13.1

コチラの投稿お手本丸パクリして、docker-composeからmysqlコンテナを立ち上げています。
Dockerがディスクスペースを圧迫した時の対処法は、コチラの投稿で知りました。

使用するコード

やっていることは
・コンテナの破棄・作成
・docker関連のファイル削除
くらいです

conductor.sh
#!/bin/bash

######################################################
# 環境を初期化します。
#  ・DBの初期化
#####################################################

echo "::Started::"
SPACE_S=`df -h | grep '/dev/mapper/centos-root' | awk '{print $5}' | awk -F'%' '{print $1}'`
if [ ${SPACE_S} -gt 85 ];
then
        echo "Exec space opener"
        sudo sh /root/space_opener.sh
fi

sh ./subcommands/initDB.sh &
sh ./subcommands/AnyOtherShellscripts.sh &
wait

echo "::Completed::"
df -h | grep "centos\-root"

・ディスク使用量が85%を超えたらスペースを空けるようにしています

/root/space_opener.sh
#!/bin/bash
echo "# 作業前 空き容量"
df -h

# rootユーザでなければ終了
if [[ "root" == $(whoami) ]];
then
        echo "# root user"
        docker system prune -f
        docker rmi -f $(sudo docker images -a | awk '/^[^R]/{print $3}')
else
        echo "# Not root user"
        exit 1
fi

echo "# 作業後 空き容量"
df -h
subcommands/initDB.sh
#!/bin/bash

docker-compose down
sleep 2s
docker-compose up -d

参考

先達の皆様のおかげで快適に使えております。
ありがとうございます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0