docker_parallels

Parallels Desktop+Dockerでつくる開発環境【準備編】

今までは開発環境はVagrantを使ってプロジェクトごとにvagrant+ansibleで環境構築をしていました。
ansibleを使っているのでプロビジョニングの手間はそれほどないのですが、色々と問題が出てきたのでDockerを使ってみることにしました。

例えば、プロジェクトが増えるごとにVMが増えていくのでディスクの使用量を結構食ってしまうとか、プロジェクトを切り替える時にいちいちvagrant haltしてupしてというのが面倒になってきたことや、Parallels Desktopは1ライセンスにつきPC1台なので会社ではVMWare Fusionを使うようにしてしまって同じboxが使えなかったりとか...です。

Docker Machineのインストール

MacだとDockerを直接実行できないので、一旦VM上でCoreOSやboot2dockerを実行してその上でDockerを実行させます。
Docker Machineを使うとそれを透過的に、比較的に簡単に実行できるようになります。

インストールはHomebrewでできます。

$ brew install docker-machine

Docker Machine Parallels Driverのインストール

Parallels DesktopでDocker Machineを動かす場合、Docker Machine Parallels Driverが必要になりますので、これもHomebrewでインストールします。

$ brew install docker-machine-parallels

【注意】Parallels DesktopはProかBusinessエディションでなければCLIツールが使えないのでstandardは対応していません!

Docker Machineの作成

あとはdocker-machineコマンドでマシンを作成します。

$ docker-machine create --driver=parallels prl-dev
:(略)
Docker is up and running!
To see how to connect Docker to this machine, run: docker-machine env prl-dev

prl-devのところはマシン名なのでなんでもいいです。
"run: docker-machine env prl-dev" と出ているので、試しに実行してみます。

$ docker-machine env prl-dev
set -gx DOCKER_TLS_VERIFY "1";
set -gx DOCKER_HOST "tcp://10.211.55.24:2376";
set -gx DOCKER_CERT_PATH "/Volumes/HDD750/home/abe/.docker/machine/machines/prl-dev";
set -gx DOCKER_MACHINE_NAME "prl-dev";
# Run this command to configure your shell:
# eval (docker-machine env prl-dev)

これは、shellの種類など環境によって結果が異なる内容ですが、最後に "Run this command to configure your shell:〜" と出ていると思います。
要するにその最後のevalコマンドを実行することでDockerと接続する環境変数が設定できるということです。

実際にやってみます。

$ eval (docker-machine env prl-dev)

何も表示されませんが、実はこうするとMac上でdockerコマンドが実行できるようになります!

Dockerのインストール

今までと同様にHomebrewからインストールします。

$ brew install docker
==> Downloading https://homebrew.bintray.com/bottles/docker-1.9.1_1.el_capitan.b
######################################################################## 100.0%
==> Pouring docker-1.9.1_1.el_capitan.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completion has been installed to:
  /usr/local/share/zsh/site-functions

fish completion has been installed to:
  /usr/local/share/fish/vendor_completions.d
==> Summary
🍺 /usr/local/Cellar/docker/1.9.1_1: 10 files, 9.6M

と出てきます。

私が使っているのはFish Shellなのですが、上記のように completion がインストールされたとのことで、dockerの後にスペースを入れてタブを押すとコマンドが候補として出てきます。コマンドは結構忘れてしまうので便利です。

Docker Machineにsshログインする

作成したDocker Machineにsshでログインしてみます。

$ docker-machine ssh prl-dev
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.10.0, build master : b09ed60 - Thu Feb  4 20:16:08 UTC 2016
Docker version 1.10.0, build 590d5108
docker@prl-dev:~$ 

boot2dockerに入ることができましたので、dockerコマンドを実行してみます。

docker@prl-dev:~$ docker pull ubuntu:latest
latest: Pulling from library/ubuntu
8387d9ff0016: Pull complete
3b52deaaf0ed: Pull complete
4bd501fad6de: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:457b05828bdb5dcc044d93d042863fba3f2158ae249a6db5ae3934307c757c54
Status: Downloaded newer image for ubuntu:latest
docker@prl-dev:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              3876b81b5a81        3 weeks ago         187.9 MB

無事にDockerのイメージを取得できました。

MacからのDockerコマンド実行の確認

先の段階でevalを実行していれば、Macからも透過的にdockerコマンドが実行できるようになっているはずです。
Docker Machineからctrl+D等でexitしてMacに戻ります。

Macに戻ったら先のimagesコマンドでMac側からDocker Machine内のイメージ一覧が確認できるかどうか試します。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu              latest              sha256:3876b        3 weeks ago         187.9 MB

出てきましたね!

これでとりあえず準備は完了です。次回はコンテナを作ってみます。

おまけ -VMWareの場合-

最初のparallels driverを入れるところやDocker Machineを作るところ以外はVirtualBoxでもVMWareでも同じですね。

というわけで、VMWareの場合は以下のようにします。

$ docker-machine create --driver vmwarefusion vmware-dev

VMWare Fusionの場合はDocker Machineにドライバが入っているので別に入れる必要がないみたいです。

【追記】DNSの設定について

createそのままだとDNSの設定がおかしくて例えばDockerfile内のapt-getで失敗することがあります。
その場合、以下のオプションを追加してDNSをGoogleのPublic DNSなどに設定しておけばうまくいきます。

$ docker-machine create --driver vmwarefusion --engine-opt dns=8.8.8.8 vmware-gdns
LINEで送る
Pocket

Parallels Desktop+Dockerでつくる開発環境【準備編】」への2件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です