Figを使って無限Dockerで遊ぼう
はい。
あらかじめホスト環境にDockerとfigが必要。
https://github.com/rail44/docker-fig-mugen
git clone https://github.com/rail44/docker-fig-mugen.git docker-fig-mugen
cd docker-fig-mugen
fig up
- 増え続けるコンテナを見て楽しむ
- 飽きたら
^C
意外と高速で負荷もそこまでじゃないけど、どうなっても知りません
しくみ
# fig.yml
main:
build: .
links:
- docker
docker:
image: jpetazzo/dind
privileged: true
expose:
- "4444"
environment:
PORT: 4444
volumes:
- "/var/lib/docker:/var/lib/docker"
Dockerデーモンが走るコンテナをTCP4444番ポートで、メインのコンテナにリンクする。
ホストの/var/lib/docker
を共有することで、イメージをビルドする手間を省いちゃったりして。
メインのコンテナではrun.sh
が走る。
# run.sh
#!/bin/sh
name=$(cat /proc/sys/kernel/random/uuid)
cd ../
mv docker-fig-mugen $name
cd $name
DOCKER_HOST=$DOCKER_1_PORT fig up
ディレクトリをuuidにリネームし、Dockerデーモンコンテナを環境変数$DOCKER_HOSTに設定し、またfig up
を叩く。
Figとは
Figは、Dockerコンテナ起動時のコマンドラインオプションをyamlで記述できるようにしてくれるラッパーです。
公式サイトの説明が十分わかりやすいので、詳しくはそっち参照。
リンクされた複数コンテナをサービスとして一元管理できて便利。
無限Docker
明らかに危なそうな響きですが、Dockerの中でDockerを動かすというネタは公式。
よう、Docker好きなんだってな。
お前のDockerにDocker入れといてやったぜ。
なんか某赤さん的なノリなのかね。これは。