boot2docker VM のメモリとディスクサイズの調整
boot2docker 1.6 のデフォルトでは
- メモリ: 2G
- ディスク: 20G
だけど、僕の MacBook Mid 2011 (memory 4G, disk 480G) ではメモリは割り当てすぎだし、ディスクはすぐに足りなくなって、以下に書いたような image, volume の整理を頻繁にやらないといけないので不便。
Docker オフィシャルドキュメントではデータ活かしたままディスクを拡張する方法書いてあるけど、開発環境なので image, volume, container など無くなっても問題ないのでやり直す。
参考: https://ryanfb.github.io/etc/2015/01/28/increasing_boot2docker_allocations_on_os_x.html
# Disk image size in MB
DiskSize = 100000
# Memory in MB
Memory = 1024
boot2docker stop
boot2docker destroy
boot2docker init
boot2docker start
(動いていない) container を削除
docker ps -aq | xargs
タグのついていない image を削除
動いている container が使ってるものは除外される。
docker images | grep "^<none>" | awk '{print $3}' | xargs docker rmi
container が削除されてしまった volume を削除
うっかり data volume container を -v
なしで削除すると残ってしまう。
docker 1.6 の段階ではオフィシャルな削除方法が無い。
https://github.com/chadoe/docker-cleanup-volumes
docker run -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker:/var/lib/docker --rm martin/docker-cleanup-volumes
怖いときは --dry-run
docker-spy - container 間で相互に通信した場合のお手軽 DNS サーバー
EDIT: 2015-12-13: FYI: Docker 1.9 network により同じ custom network 内の container 同士は /etc/hosts により名前で参照できるようになったので、 docker-dns-proxy では dnsmasq を使っています。
docker run --name docker_spy -p 53:53/udp -p 53:53 -v /var/run/docker.sock:/var/run/docker.sock iverberk/docker-spy
docker run --dns 172.17.42.1 -h app.localdomain --rm -it centos:centos6 bash
TIPS: nginx の resolver はデフォルトで ipv6 の "AAAA" record を探しに行き docker-spy が対応できないので
resolver 172.17.42.1 ipv6=off;
二度目の docker-compose up
の前には
docker-compose により起動した container が存在する状態で up しようとすると、 bin/echo が無い image でも bin/echo を実行しようとして失敗するので、
docker-compose stop
docker-compose rm -f
ちなみにエラーはこんなやつ
Cannot start container 41fe5d69322cacc578b9251741c38f332c9939f19e90cc77105161ade0cfbb90: [8] System error: exec: "/bin/echo": stat /bin/echo: no such file or directory