Figを使って無限Dockerで遊ぼう

image はい。
あらかじめホスト環境にDockerとfigが必要。

https://github.com/rail44/docker-fig-mugen

  1. git clone https://github.com/rail44/docker-fig-mugen.git docker-fig-mugen
  2. cd docker-fig-mugen
  3. fig up
  4. 増え続けるコンテナを見て楽しむ
  5. 飽きたら^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入れといてやったぜ。

なんか某赤さん的なノリなのかね。これは。