VagrantでDocker Provisioner

表題の通り。今までにもそういった環境は何度も試していたのだが、設定でちょっと気になるものを知ったので試してみる。

■ 環境

  • CentOS 7
  • Vagrant 1.8.4
  • Mac OSX El Capitan

■ Vagrant

下記のVagrantfileで`vagrant up`している。

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
end

このまま起動した時点ではもちろんDockerが動いているはずがない。

$ vagrant ssh
Last login: Thu Jul 21 10:12:16 2016 from 10.0.2.2
[vagrant@localhost ~]$ which docker
/usr/bin/which: no docker in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/vagrant/.local/bin:/home/vagrant/bin)
[vagrant@localhost ~]$
[vagrant@localhost ~]$ ps -ef | grep docker
vagrant   1442  1422  0 10:12 pts/0    00:00:00 grep --color=auto docker
[vagrant@localhost ~]$

続いて下記のようにVagrantfileに追記する。

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.provision "docker"
end

これは下記ドキュメントにあった。

Docker Provisioner
https://www.vagrantup.com/docs/provisioning/docker.html

VMに対して`provision`を実行する。

$ vagrant provision
==> default: Running provisioner: docker...
    default: Installing Docker onto machine...
$

動作しているか確認。

$ vagrant ssh
Last login: Thu Jul 21 10:22:24 2016 from 10.0.2.2
[vagrant@localhost ~]$ which docker
/usr/bin/docker
[vagrant@localhost ~]$
[vagrant@localhost ~]$ ps -ef | grep docker
root      2350     1  0 10:22 ?        00:00:00 /usr/bin/docker daemon -H fd://
root      2353  2350  0 10:22 ?        00:00:00 docker-containerd -l /var/run/docker/libcontainerd/docker-containerd.sock --runtime docker-runc --start-timeout 2m
vagrant   2900  2878  0 10:23 pts/0    00:00:00 grep --color=auto docker
[vagrant@localhost ~]$
[vagrant@localhost ~]$ docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.11.2
Storage Driver: devicemapper
 Pool Name: docker-253:0-525826-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 11.8 MB
 Data Space Total: 107.4 GB
 Data Space Available: 38.38 GB
 Metadata Space Used: 581.6 kB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.147 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 WARNING: Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.107-RHEL7 (2016-06-09)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: null host bridge
Kernel Version: 3.10.0-327.22.2.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 489 MiB
Name: localhost.localdomain
ID: 4E6P:5GS2:6A5R:JBF7:4IIJ:RYGN:WUE2:2ND2:V2KS:D2CL:FWCG:FTT7
Docker Root Dir: /var/lib/docker
Debug mode (client): false
Debug mode (server): false
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
[vagrant@localhost ~]$

なるほど。自身でわざわざインストールする必要がないのか。これは確かに便利そうである。が、Docker for Macや`docker-machine`でほとんど十分であろう。その他の実験的な環境を作る時には重宝しそうなので覚えておくことにしよう。

以上。

■ 関連

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください