DockerがMac OSXサポート?

Posted by joeartsea on 2014-02-06

DOCKER 0.8: QUALITY, NEW BUILDER FEATURES, BTRFS, OSX SUPPORTの最後の方でMac OSXサポートについて触れています。

まず、VirtualBoxは必須みたい。そして、そこにDockerサーバを用意するらしい(今まで使ってて全然気付かなかったけどDockerってクライアントとサーバに分かれてたのね…)

boot2dockerの通りにやる。boot2dockerはなんかVagrantっぽい感じでした。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$ mkdir vm
$ cd vm
$ curl https://raw.github.com/steeve/boot2docker/master/boot2docker > boot2docker
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 6884 100 6884 0 0 8388 0 --:--:-- --:--:-- --:--:-- 8384
$ chmod +x boot2docker
$ ./boot2docker init
[2014-02-06 19:24:02] Creating VM boot2docker-vm
Virtual machine 'boot2docker-vm' is created and registered.
UUID: 089d32f0-9425-4ccd-a2ae-e34fd458c149
Settings file: '/Users/ufuru/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vbox'
[2014-02-06 19:24:02] Setting VM settings
[2014-02-06 19:24:02] Setting VM networking
[2014-02-06 19:24:02] boot2docker.iso not found.
[2014-02-06 19:24:04] Latest version is v0.5.2, downloading...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 342 100 342 0 0 314 0 0:00:01 0:00:01 --:--:-- 314
100 24.0M 100 24.0M 0 0 244k 0 0:01:40 0:01:40 --:--:-- 181k
[2014-02-06 19:25:44] Done
[2014-02-06 19:25:44] Setting VM disks
[2014-02-06 19:25:44] Creating 40000 Meg hard drive...
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Disk image created. UUID: 294302a6-f2db-4517-b409-e3a6312ef8b6
Converting from raw image file="format-flag.txt" to file="format-flag.vmdk"...
Creating dynamic image with size 5242880 bytes (5MB)...
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VMDK'. UUID: 294302a6-f2db-4517-b409-e3a6312ef8b6
[2014-02-06 19:25:45] Done.
[2014-02-06 19:25:45] You can now type boot2docker up and wait for the VM to start.

実はこれでVirtualBoxのVMにDocker用のホストマシンが作成される(はい、この時点で純粋なMac OSXサポートとは言えないなぁ、と個人的には思いました)

1
2
3
$ ./boot2docker up
[2014-02-06 19:25:54] Starting boot2docker-vm...
[2014-02-06 19:26:14] Started.

これでDockerサーバであるVMが動き出した、のかな?(なんかVagrant upみたいです)

sshでつないでみる。パスワードは「tcuser」。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ ./boot2docker ssh
Warning: Permanently added '[localhost]:2022' (RSA) to the list of known hosts.
[email protected]'s password:
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
boot2docker: 0.5.2
$ exit

おお、なにやら動いてる。VirtualBoxの管理コンソール見てもマシンが1個増えてる。

1
$ export DOCKER_HOST=localhost

という環境変数を設定する。

で、クライアントをHomebrewでインストールする。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
$ sudo brew tap homebrew/binary
Cloning into '/usr/local/Library/Taps/homebrew-binary'...
remote: Reusing existing pack: 101, done.
remote: Total 101 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (101/101), 15.64 KiB | 0 bytes/s, done.
Resolving deltas: 100% (47/47), done.
Checking connectivity... done
Warning: Could not tap homebrew/binary/jsl over mxcl/master/jsl
Tapped 11 formula
$ sudo brew install docker
Warning: It appears you have MacPorts or Fink installed.
Software installed with other package managers causes known problems for
Homebrew. If a formula fails to build, uninstall MacPorts/Fink and try again.
==> Downloading https://get.docker.io/builds/Darwin/x86_64/docker-0.7.4.tgz
######################################################################## 100.0%
🍺 /usr/local/Cellar/docker/0.7.4: 2 files, 11M, built in 10 seconds
$ docker
Usage: docker [OPTIONS] COMMAND [arg...]
-H=[unix:///var/run/docker.sock]: tcp://host:port to bind/connect to or unix://path/to/socket to use
A self-sufficient runtime for linux containers.
Commands:
attach Attach to a running container
build Build a container from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders from the containers filesystem to the host path
diff Inspect changes on a container's filesystem
events Get real time events from the server
export Stream the contents of a container as a tar archive
history Show the history of an image
images List images
import Create a new filesystem image from the contents of a tarball
info Display system-wide information
insert Insert a file in an image
inspect Return low-level information on a container
kill Kill a running container
load Load an image from a tar archive
login Register or Login to the docker registry server
logs Fetch the logs of a container
port Lookup the public-facing port which is NAT-ed to PRIVATE_PORT
ps List containers
pull Pull an image or a repository from the docker registry server
push Push an image or a repository to the docker registry server
restart Restart a running container
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save an image to a tar archive
search Search for an image in the docker index
start Start a stopped container
stop Stop a running container
tag Tag an image into a repository
top Lookup the running processes of a container
version Show the docker version information
wait Block until a container stops, then print its exit code

うん、入ったみたい。これでubuntuをpullしてみる。

1
2
3
4
5
6
7
8
9
10
11
12
13
$ docker pull ubuntu
Pulling repository ubuntu
9cd978db300e: Download complete
5ac751e8d623: Downloading [========> ] 10.04 MB/58.08 MB 29m0s
eb601b8965b8: Downloading [========> ] 10.57 MB/60.28 MB 29m32s
9cc9ea5ea540: Download complete
9f676bd305a4: Download complete
511136ea3c5a: Download complete
7a4f87241845: Download complete
321f7f4200f4: Download complete
1c7f181e78b9: Download complete
f323cf34fd77: Download complete
6170bb7b0ad1: Download complete

1時間経っても終わらない…それにOSXサポートもどきだし。とりあえず現行からの移行はないな。