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を起動する。

無料のISO.png

CoreOSの選択

というように進んでいけば、数分でCoreOSが起動できる。

3. coreユーザのパスワード設定

上がったCoreOSのConsoleは、自動的にcoreユーザにloginしてくれる。


coreos 初期

ここで、なにはともあれ、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。

coreos 1.9.1.png

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:....

次回に続く。