Docker for Mac で、moby linux にアクセスする

2017.06.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

先日、同僚から以下の質問がありました。

  • Q. Docker for Mac で、Container Hypervisor(moby linux)に SSH login したい

理由を聞いてみると、docker volume create コマンドで作成される moby linux 上のファイルシステム(moby:/var/lib/docker/volumes)へアクセスしたいということでした。 

上の質問に対するやりとりの結論が、本記事の元ネタとなります。

前提条件

本記事では、以下のツールを対象とした環境での情報が記載されております。

また、参考情報となりますが筆者の PC 環境は、以下のとおりです。

  • MacBook Pro (Retina, 13-inch, Early 2015)
  • macOS Sierra 10.12.5

まずは調べてみる

少し調べた結果、フォーラムにナレッジが投稿されておりました。 moby linux へのアクセス手順として SSH は利用できずターミナルから、screen コマンドで moby linux へ接続可能なようです。

回答は、以下のとおり

  • A. ターミナルから、screen コマンドでアクセスできます。
$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

screen のセッションを切断するには、Ctrl-a k です。

moby linux をさわってみた

実際に、少し触ってみました。

/ # hostname
moby
/ # uname -a
Linux moby 4.9.27-moby #1 SMP Thu May 11 04:01:18 UTC 2017 x86_64 Linux
/ # cat /etc/os-release 
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.5.0
PRETTY_NAME="Alpine Linux v3.5"
HOME_URL="http://alpinelinux.org"
BUG_REPORT_URL="http://bugs.alpinelinux.org"
/ # docker -v
Docker version 17.03.1-ce, build c6d412e
/ # docker info
Total Memory: 1.952 GiB
Name: moby
ID: VTYP:K52S:UN73:52AS:LRNA:MRK7:5TOT:DR76:AJIE:RNK2:GUWM:B7H4
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 17
 Goroutines: 28
 System Time: 2017-06-08T02:30:39.977004354Z
 EventsListeners: 1
No Proxy: *.local, 169.254/16
Registry: https://index.docker.io/v1/
Experimental: true
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
/ # docker info | more
Containers: 12
 Running: 0
 Paused: 0
 Stopped: 12
Images: 8
Server Version: 17.03.1-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins: 
 Volume: local
 Network: bridge host ipvlan macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 4ab9917febca54791c5f071a9d1f404867857fcc
runc version: 54296cf40ad8143b62dbcaa1d90e520a2136ddfe
init version: 949e6fa
Security Options:
 seccomp                                                
  Profile: default
Kernel Version: 4.9.27-moby
Operating System: Alpine Linux v3.5
OSType: linux
Architecture: x86_64
CPUs: 2  
Total Memory: 1.952 GiB
Name: moby
ID: VTYP:K52S:UN73:52AS:LRNA:MRK7:5TOT:DR76:AJIE:RNK2:GUWM:B7H4
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 17
 Goroutines: 28
 System Time: 2017-06-08T02:30:49.919762221Z
 EventsListeners: 1
No Proxy: *.local, 169.254/16
Registry: https://index.docker.io/v1/
Experimental: true
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

普通に macOS の Hypervisor Framework 上で動作する Alpine ベースの moby linux にアクセス出来ることが確認出来ました。

moby linux については、Alpine Linux 派生ということしか知らず 実際に触ったことが無かったので、すこし新鮮な気分を味わえました。

参考ドキュメント

さいごに

Docker for Mac での仮想環境として、moby/hyperkitが利用されていることは皆さんご存知かもしれません。 hyperkit は、確か mist64/xhyve ベースだった記憶があるのですが最近の事情には疎く進化も早いため追いきれてません。 これを機会に少し、moby linux と戯れてみたり Docker for Mac の実装について学習してみるのも良いかもしれません。

ではでは