Mac OS X に Docker の環境作った
今更ながら、Mac に Docker の環境を構築しました。
忘れないうちに手順をまとめてきます。
環境
OSX Ysemite 10.10.5
VirtualBox 5.0.4
Docker Machine 0.4.1
Docker 1.8.1
事前作業
brew のインストール
各種インストール
brew cask
$ brew install caskroom/cask/brew-cask
VirtualBox
$ brew cask install virtualbox
Docker
$ brew install docker $ docker -v Docker version 1.8.1, build d12ea79
Docker Machine
$ brew install docker-machine $ docker-machine -v docker-machine version 0.4.1 (HEAD)
brew バンザイ!
VirtualBox上にDockerホストマシンを作成
Dockerホストマシンの一覧確認
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
まだマシンを作成してないので何も出ません。
Dockerホストマシンを作成
$ docker-machine create --driver virtualbox docker-m
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
--driver オプションに virtualbox を指定し、引数にマシン名 docker-m を指定。
$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM docker-m virtualbox Running tcp://192.168.99.102:2376
docker-m というマシンが作らたことが確認できます。
VirtualBox マネージャからも、docker-m が作成されたことがわかります。
Dockerホストマシンにsshで接続
$ docker-machine ssh docker-m ## . ## ## ## == ## ## ## ## ## === /"""""""""""""""""\___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\_______/ _ _ ____ _ _ | |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __ | '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__| | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ | |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_| Boot2Docker version 1.8.2, build master : aba6192 - Thu Sep 10 20:58:17 UTC 2015 Docker version 1.8.2, build 0a8c2e3
接続できました。
くじらをみると、どうしてもTwitterを連想してしまいます。
Docker Machine コマンド
マシンを起動する
$ docker-machine start <NAME>
マシンを停止する
$ docker-machine stop <NAME>
マシンを再起動する
$ docker-machine restart <NAME>
マシンを削除する
$ docker-machine rm <NAME>
docker コマンドを実行する前に...
$ docker-machine env docker-m export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.168.99.102:2376" export DOCKER_CERT_PATH="/Users/master/.docker/machine/machines/docker-m" export DOCKER_MACHINE_NAME="docker-m" # Run this command to configure your shell: # eval "$(docker-machine env docker-m)" $ docker-machine config docker-m --tlsverify --tlscacert="/Users/master/.docker/machine/machines/docker-m/ca.pem" --tlscert="/Users/master/.docker/machine/machines/docker-m/cert.pem" --tlskey="/Users/master/.docker/machine/machines/docker-m/key.pem" -H=tcp://192.168.99.102:2376
docker コマンドは「eval "$(docker-machine env docker-m)"」で環境変数を登録するか、
docker コマンドのオプションの形で出力される docker-machine config コマンドを使って
docker $(docker-machine config docker-m) command名
のどちらかで実行します。
タイプが面倒なので、環境変数を登録してしまいます。
$ eval "$(docker-machine env docker-m)"
コンテナ作成
hello world
コンソールに hello world を出力します。
$ docker run busybox echo hello world Unable to find image 'busybox:latest' locally latest: Pulling from library/busybox cf2616975b4a: Pull complete 6ce2e90b0bc7: Pull complete 8c2e06607696: Pull complete library/busybox:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security. Digest: sha256:9fbfab5715af5aba7322931ec1f03c6b3978109b68053f4b0ba1d97abb93e21c Status: Downloaded newer image for busybox:latest hello world
hello world と表示されました。
うん、見ればわかりますね。
上記のコマンドで busybox のイメージファイルを pull(ダウンロード)し、
ダウンロードしたイメージからコンテナを作成し、echo hello world を実行します。
イメージファイルのダウンロードは初回に1度だけ行われます。
Docker で使用可能なイメージは https://registry.hub.docker.com で検索できます。
CentOS のコンテナ作成
イメージは、CentOS6 を選択。
処理が完了すると、bash のコンソールが立ち上がります。
$ docker run -i -t centos:6 /bin/bash [root@10c61dd72ccd /]#
exit 等で適当に終了してください。
ダウンロードしたイメージは、images コマンドで確認できます。
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos 6 72703a0520b7 9 days ago 190.6 MB busybox latest 8c2e06607696 5 months ago 2.433 MB
busybox は流石に小さいw
コンテナのすべての一覧を表示
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7951e2c1f199 centos:6 "/bin/bash" 54 seconds ago Exited (0) 32 seconds ago boring_jones 834b813e5fc8 busybox "echo hello world" 8 minutes ago Exited (0) 8 minutes ago sick_fermat
コンテナ名(boring_jones,sick_fermat)は runコマンドを実行する際に指定しないと勝手に付けられます。
Docker コマンド
コンテナを起動する
$ docker start <CONTAINER ID or NAME>
コンテナを停止する
$ docker stop <CONTAINER ID or NAME>
コンテナを再起動する
$ docker restart <CONTAINER ID or NAME>
コンテナに接続する
$ docker attach <CONTAINER ID or NAME> $ docker exec -it <CONTAINER ID or NAME> /bin/bash
attach コマンドでの接続は、exit するとコンテナが終了します。
exit してもコンテナを落としたくない場合、[Ctrl+p, Ctrl+q] するか
後者の exec コマンドを使います。
コンテナを削除する
$ docker rm <CONTAINER ID or NAME>
起動中のコンテナがあると、削除に失敗します。
削除するコンテナが停止していることを確認してから削除してください。
所感
Docker ってそもそもよく分かってなくて、仮想環境の構築・削除を簡単に
してくれる便利なものくらいの理解しかなかった。
実際に構築して、分からない所とか調べながら何となく理解できた。
やっぱり、実際に手を動かさないとダメだなと実感。
それにしても、LinuxやMySQLの仮想環境がコマンド一発で作れるなんて便利すぎ!
構築にあたり Docker のセキュリティ問題を解決したといわれてる
CoreOS の rkt(rocket) と迷ったけど、Docker の方が便利
ってことだったので Docker を選択。
Dockerとrktの比較はこちらを読むと良いと思います。 qiita.com
次回は、作成した CentOS のコンテナに Apache と MySQL をインストールして
実行するところをまとめたいと思います。
それでは!
参考
Docker Machine を使って VirtualBox に Dockerホストを立てる - Qiita
Dockerコマンドメモ - Qiita
http://www.bunkei-programmer.net/entry/2015/05/20/021518