docker on Mac (by Veertu) 1/2
Mac Yosemiteから導入された Hypervisor.framework で、CoreOSを起動し、その上でDocker コンテナを動かしてみた。
1. Veertuのinstall
http://veertu.com
Hypervisor.framework をGUIで制御できるアプリ。
起動できるOSは、無料版で Veertuが用意したUbuntuやCoreOS。
有料(4,800円)で、好きなOSのisoイメージを使える。Windowsもいけるらしいけど、SKIP。
2. CoreOSのVM起動
今回は、DockerのためにCoreOSのVMを起動する。
というように進んでいけば、数分でCoreOSが起動できる。
3. coreユーザのパスワード設定
上がったCoreOSのConsoleは、自動的にcoreユーザにloginしてくれる。
ここで、なにはともあれ、coreユーザのパスワードを設定する。
core@localhost ~ $ sudo passwd core
4. ssh login の設定
coreos のIPアドレスを調べる。
core@localhost ~ $ ip route default via 192.168.64.1 dev ens3 proto dhcp src 192.168.64.4 metric 1024 192.168.64.0/24 dev ens3 proto kernel scope link src 192.168.64.4 192.168.64.1 dev ens3 proto dhcp scope link src 192.168.64.4 metric 1024
macからcoreos のIPにssh loginする。パスワードは、3. で設定したもの。
$ ssh core@192.168.64.4 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no Warning: Permanently added '192.168.64.4' (ED25519) to the list of known hosts. core@192.168.64.4's password: Last login: Wed Jan 13 15:29:57 2016 from 192.168.64.1 CoreOS stable (766.5.0) Update Strategy: No Reboots core@localhost ~ $
5. docker の設定
外部からtcp接続でdockerを扱えるように設定。
core@localhost ~ $ vi /etc/systemd/system/docker-tcp.socket --- [Unit] Description=Docker Socket for the API [Socket] ListenStream=2375 Service=docker.service BindIPv6Only=both [Install] WantedBy=sockets.target ---
cloud-config.yml を設定
core@localhost ~ $ vi cloud-config.yml --- #cloud-config ssh_authorized_keys: - ssh-rsa 自前の公開鍵文字列.... coreos: units: - name: docker-tcp.socket command: start runtime: no content: | [Unit] Description=Docker Socket for the API [Socket] ListenStream=2375 Service=docker.service BindIPv6Only=both [Install] WantedBy=sockets.target - name: docker.service command: start ---
6. dockerのversion up(alpha版)
core@localhost ~ $ sudo coreos-install -d /dev/sda -V current -C alpha -c cloud-config.yml core@localhost ~ $ sudo reboot
coreos-install は、意外に時間がかかる。5分くらい?
reboot 後、うまくcoreosが上がらないので、強制shutdownしてから起動したらうまくいったので、結果オーライ。
今度は自動的にloginしないので、3. で設定したcoreユーザのパスワードで、login。
7. coreos にlogin
5.のcloud-config.ymlで設定した公開鍵に対応する秘密鍵で、mac からcoreosに ssh login。
$ ssh core@192.168.64.4 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ~/.ssh/秘密鍵ファイル Warning: Permanently added '192.168.64.4' (ED25519) to the list of known hosts. Last login: Wed Jan 13 15:19:03 2016 CoreOS alpha (921.0.0) core@localhost ~ $
8. docker client で確認
mac にbrewでdockerコマンドをinstall
$ brew install docker
docker コマンドで、coreos 上のdocker serverを確認。
$ export DOCKER_HOST=tcp://192.168.64.4:2375 $ docker info An error occurred trying to connect: Get https://192.168.64.4:2375/v1.21/info: tls: oversized record received with length 20527
エラーは、tls(暗号化)の設定の話。local のvmなので、暗号なしの通信でOKとする。
$ unset DOCKER_CERT_PATH $ unset DOCKER_TLS_VERIFY $ docker info Containers: 0 Images: 0 Server Version: 1.9.1 Storage Driver: overlay Backing Filesystem: extfs Execution Driver: native-0.2 Logging Driver: json-file Kernel Version: 4.3.3-coreos-r1 Operating System: CoreOS 921.0.0 CPUs: 3 Total Memory: 7.801 GiB Name: localhost ID: YQDX:....
次回に続く。