backport

技術ネタと野球とときどき雑談

Windows上にDocker環境を作る (VirtualBox + Vagrant + Container Linux)

2017/07/06
development docker, vagrant

Windows上にDocker環境を作ったときの作業メモをまとめてみました。

登場人物

  • VirtualBox
    • 仮想化ソフトウェア。VirtualBoxをインストールしたPC上に仮想的なPCを作成できます。
  • Vagrant
    • VirtualBoxなどの仮想化ソフトウェアを便利に使うためのラッパーツール。設定ファイルをもとに仮想マシンの構築や操作をシンプルなコマンドで実行できます。
  • Container Linux
    • Docker専用で軽量なLinuxディストリビューション。以前はCoreOSという名称でしたが、社名とOS名を分けるために改称された模様。

作業記録

環境を作っていきましょう。ホストPCはWindows10です。

まずはVirtualBoxから。Downloads – Oracle VM VirtualBoxから最新版をダウンロードしてインストール。作業時の最新版は5.1.22でした。

次はVagrant。Download - Vagrant by HashiCorpから最新版をインストールしておきます。今回はWindows 64-bitをインストール。

バージョンを確認しておきましょう。

E:\vagrant> vagrant --version
Vagrant 1.9.6

導入されたバージョンは1.9.6でした。

Container Linuxは公式なVagrantfileが提供されているのでこれを使いましょう。 coreos/coreos-vagrant: Minimal Vagrantfile for Container Linuxgit cloneしてVagrantfileを入手します。

E:\vagrant> git clone https://github.com/coreos/coreos-vagrant
Cloning into 'coreos-vagrant'...
remote: Counting objects: 448, done.
remote: Total 4R48 (ecedeltivia 0ng objects):,   re86used 0% (d (386/4elta 480))ack-reused 448
Receiving objects: 100% (448/448), 110.64 KiB | 0 bytes/s, done.
Resolving deltas: 100% (202/202), done.
Checking connectivity... done.

あとはvagrant upを実行してしばし待ちます。

E:\vagrant> cd coreos-vagrant
E:\vagrant\coreos-vagrant> vagrant up
Bringing machine 'core-01' up with 'virtualbox' provider...
==> core-01: Box 'coreos-alpha' could not be found. Attempting to find and install...
    core-01: Box Provider: virtualbox
    core-01: Box Version: >= 0
==> core-01: Loading metadata for box 'https://storage.googleapis.com/alpha.release.core-os.net/amd64-usr/current/coreos_production_vagrant.json'
    core-01: URL: https://storage.googleapis.com/alpha.release.core-os.net/amd64-usr/current/coreos_production_vagrant.json
==> core-01: Adding box 'coreos-alpha' (v1451.2.0) for provider: virtualbox
    core-01: Downloading: https://alpha.release.core-os.net/amd64-usr/1451.2.0/coreos_production_vagrant.box
    core-01: Progress: 100% (Rate: 2538k/s, Estimated time remaining: --:--:--)
    core-01: Calculating and comparing box checksum...
==> core-01: Successfully added box 'coreos-alpha' (v1451.2.0) for 'virtualbox'!==> core-01: Importing base box 'coreos-alpha'...
==> core-01: Matching MAC address for NAT networking...
==> core-01: Checking if box 'coreos-alpha' is up to date...
==> core-01: Setting the name of the VM: coreos-vagrant_core-01_1499174264989_10873
==> core-01: Clearing any previously set network interfaces...
==> core-01: Preparing network interfaces based on configuration...
    core-01: Adapter 1: nat
    core-01: Adapter 2: hostonly
==> core-01: Forwarding ports...
    core-01: 22 (guest) => 2222 (host) (adapter 1)
==> core-01: Running 'pre-boot' VM customizations...
==> core-01: Booting VM...
==> core-01: Waiting for machine to boot. This may take a few minutes...
    core-01: SSH address: 127.0.0.1:2222
    core-01: SSH username: core
    core-01: SSH auth method: private key
==> core-01: Machine booted and ready!
==> core-01: Setting hostname...
==> core-01: Configuring and enabling network interfaces...
E:\vagrant\coreos-vagrant>
E:\vagrant\coreos-vagrant> vagrant status
Current machine states:

core-01                   running (virtualbox)

The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.
E:\vagrant\coreos-vagrant>

無事起動しました。コマンド一発で環境が整っちゃいます。Vagrantさまさまですね。

ssh接続してみましょう。お好きなターミナルアプリでどうぞ。自分はrloginを使っています。

  • IP address: 127.0.0.1
  • port: 2222
  • user: core (vagrantじゃないことに注意)
  • SSH Identity key: %USERPROFILE%.vagrant.d\insecure_private_key

成功するとコンソールにはこんな感じに表示されるはず。dockerのバージョンを確認してみましょう。

Last login: Wed Jul  5 12:37:41 UTC 2017 from 10.0.2.2 on ssh
Container Linux by CoreOS alpha (1451.2.0)
core@core-01 ~ $
core@core-01 ~ $ docker --version
Docker version 17.05.0-ce, build 89658be
core@core-01 ~ $

これで準備完了。

おまけ:docker-compose

Release 1.14.0 · docker/composeの手順を参考に。ただし、Container Linuxの/usr/local/binは書き込み禁止なので、代わりに/opt/binに導入することにします。

core@core-01 ~ $ sudo -i
core-01 ~ # mkdir -p /opt/bin
core-01 ~ # curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname -m` > /opt/bin/docker-com
pose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   617    0   617    0     0    547      0 --:--:--  0:00:01 --:--:--   547
100 8084k  100 8084k    0     0  1010k      0  0:00:08  0:00:08 --:--:-- 1692k
core-01 ~ # chmod +x /opt/bin/docker-compose
core-01 ~ # docker-compose -v
docker-compose version 1.14.0, build c7bdf9e
core-01 ~ #

参考URL



コメント欄を表示する