りむっちスケッチ

ハニカムログ

Dockerが1.0になったしOSXに入れてみた

OSXでDockerを試してみる

とりあえずまず、boot2dockerのpkgを拾ってきてセットアップしよう。今、手元の環境はYosemiteなのでちょっと心配だけど多分大丈夫。

f:id:rimtty:20140615101040p:plain

f:id:rimtty:20140615101045p:plain

boot2dockerを起動する

起動したらぺろぺろーっとログが流れる。

f:id:rimtty:20140615101435p:plain

if [ ! -f ~/.boot2docker/boot2docker.iso ]; then cp /usr/local/share/boot2docker/boot2docker.iso ~/.boot2docker/ ; fi
/usr/local/bin/boot2docker init 
/usr/local/bin/boot2docker up && export DOCKER_HOST=tcp://$(/usr/local/bin/boot2docker ip 2>/dev/null):2375
docker version

ここを観るとわかるように、terminalで

$ boot2docker init
$ boot2docker up

とすれば起動する。ログを見るとわかるけど.ssh/にid_boot2docker.pubができてる。

2014/06/15 10:12:56 Creating VM boot2docker-vm...
2014/06/15 10:12:56 Apply interim patch to VM boot2docker-vm (https://www.virtualbox.org/ticket/12748)
2014/06/15 10:12:56 Setting NIC #1 to use NAT network...
2014/06/15 10:12:56 Port forwarding [ssh] tcp://127.0.0.1:2022 --> :22
2014/06/15 10:12:56 Port forwarding [docker] tcp://127.0.0.1:2375 --> :2375
2014/06/15 10:12:56 Setting NIC #2 to use host-only network "vboxnet0"...
2014/06/15 10:12:56 Setting VM storage...
2014/06/15 10:13:03 Done. Type `/usr/local/bin/boot2docker up` to start the VM.
  • localhost:2022 -> :22 (NIC1)
  • lcoalhost:2375 -> :2375 (NIC1)
  • vboxnet0(NIC2)

が設定されてることが分かる。

$ /usr/local/bin/boot2docker up && export DOCKER_HOST=tcp://$(/usr/local/bin/boot2docker ip 2>/dev/null):2375
2014/06/15 10:13:04 Waiting for VM to be started...
...........
2014/06/15 10:13:26 Started.
2014/06/15 10:13:26 To connect the Docker client to the Docker daemon, please set:
2014/06/15 10:13:26     export DOCKER_HOST=tcp://192.168.59.103:2375
imac:~ rimd2r$ docker version
Client version: 1.0.0
Client API version: 1.12
Go version (client): go1.2.1
Git commit (client): 63fe64c
Server version: 1.0.0
Server API version: 1.12
Go version (server): go1.2.1
Git commit (server): 63fe64c

最後は良い感じに boot2docker up をして、環境変数を設定して起動しなおしてる。

boot2docker -v status
2014/06/15 10:44:06 executing: VBoxManage showvminfo boot2docker-vm --machinereadable
running

docker runを試す

$ docker -v
Docker version 1.0.0, build 63fe64c

$ docker run ubuntu echo hello world
Unable to find image 'ubuntu' locally
Pulling repository ubuntu
ad892dd21d60: Download complete 
511136ea3c5a: Download complete 
e465fff03bce: Download complete 
23f361102fae: Download complete 
9db365ecbcbb: Download complete 
hello world

ubuntuイメージを落としてきてEchoでヘローするまでの流れ。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu              latest              ad892dd21d60        10 days ago         275.5 MB

dockerイメージとしてubuntuという名前でrepositoryが登録された。

VirutalBoxでは

f:id:rimtty:20140615104148p:plain

Mac OS X上で動いているVirtualBox上に、Boot2docker(vm)が起動していることが分かる。 この中でDockerサーバーが動いていて、その中でDockerコンテナが使える形。

boot2docker-vmのイメージの設定ファイルからネットワークを見ると、ポートフォワードの状況が確認できる。

f:id:rimtty:20140615105637p:plain

boot2dockerで動いているdockerホストにsshするには?

$ boot2docker ssh
Warning: Permanently added '[localhost]:2022' (RSA) to the list of known hosts.
                        ##        .
                  ## ## ##       ==
               ## ## ## ##      ===
           /""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
           \______ o          __/
             \    \        __/
              \____\______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
boot2docker: 1.0.0
             master : 16013ee - Mon Jun  9 16:33:25 UTC 2014

普通にboot2dockerコマンドをつかってもいいし

$ ssh -i .ssh/id_boot2docker -p 2022 docker@localhost

                        ##        .
                  ## ## ##       ==
               ## ## ## ##      ===
           /""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
           \______ o          __/
             \    \        __/
              \____\______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
boot2docker: 1.0.0
             master : 16013ee - Mon Jun  9 16:33:25 UTC 2014

こんな感じでちょろい。dockerっていう名称のユーザーであるので注意が必要。

dockerホストのLinuxはどうなってんの?

root@boot2docker:/home/docker# uname -a
Linux boot2docker 3.14.1-tinycore64 #1 SMP Mon Jun 9 16:21:23 UTC 2014 x86_64 GNU/Linux
root@boot2docker:/home/docker# cat /etc/version
1.0.0

root@boot2docker:/opt# cat /proc/sys/kernel/osrelease
3.14.1-tinycore64
root@boot2docker:/opt# cat /proc/version
Linux version 3.14.1-tinycore64 (root@1b022b772237) (gcc version 4.8.3 (Debian 4.8.3-2) ) #1 SMP Mon Jun 9 16:21:23 UTC 2014

linux 3.14.1でうごいてる事が確認できる。etcの中を眺めてる分には、これはredhat系統にみえるけど/optとかもあるのでdebian系っぽいきもするけど、tinycoreベースのオリジナルのLinuxかな。つーことはdockerユーザーのパスワードはtcuserですね。