21
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

dockerのデータ永続化はcronでcommitし続ければいい気がしてきた

Last updated at Posted at 2014-07-14

DockerHub - データコンテナの使い方 - Qiita

cronに登録しておく
#!/bin/sh
set -eu

WORKDIR="/mnt/usb/docker"
if [ ! -d $WORKDIR ];then
    echo "$WORKDIR cannot access" | mail -s "alminiumbackup.sh" tukiyo3@gmail.com
fi

docker commit -a "tukiyo3 <tukiyo3@gmail.com>" c3215e67cf97 private/alminium-backup
docker save -o $WORKDIR/alminium-backup.tar private/alminium-backup
gzip $WORKDIR/alminium-backup.tar
mv $WORKDIR/alminium-backup.tar.gz $WORKDIR/alminium-backup.tar.gz.`date "+%a"`

dockerのIMAGEは積み上げ式

IMAGEは積み上げ式です。
コミットすると前のIMAGEに追加されます。
前のIMAGE内にあったファイルを削除しコミットしたところでIMAGEサイズは縮みません。

IMAGEのサイズを小さく抑え続けるにはIMAGEに対するコミットの回数を極力減らすこととなる。

手順

docker run \
 --name production \
 -it \
 -d \
 -p 2222:22 \
 tukiyo3/centos-ja:7.0sshd \
 /usr/sbin/sshd -D

こんな感じで起動させておき、

オートコミット
docker commit \
  --pause=false \
  -a "tukiyo3 <tukiyo3@gmail.com>" \
  $(docker ps -a | awk '/production\s+$/{print $1}') \
  "tukiyo3/production:$(date '+%Y%m%d_%H%M')" \
  || mail -s "auto commit error" tukiyo3@gmail.com
  • --pause=falseはdocker1.1.0で追加された、コミット中の動作一時停止しないオプション
save(イメージ->tar)
docker save -o 20140715_0808 tukiyo3/production
  • docker export (コンテナ->tar)はそのままだと復元できないので使わないように。

後は古いイメージをHDD容量と相談しながら削除。
増分の保存なのでそんなに一気には増えないでしょう。

tarからイメージ復元

docker load -i private_alminium.tar
21
23
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
21
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?