Docker コンテナと Mac OSX で ファイルを共有する

コンテナ内のディレクトリ /root を ホストのディレクトリ /tmp にマウントする.

docker run -v /tmp:/root myImage

dotcloud - Mounting directory from parent system to container in docker - Stack Overflow

コンテナ内から見えない...

This definitely does not work on OSX using boot2docker.

Mac OSX ではできない?

Docker を boot2docker で使う場合,

ファイルシステムでいうところの

コンテナとホストの間に dockerサーバ が存在する.

はじめてのDocker_on_Mac_OS_X_|_Developers_IO

はじめてのDocker on Mac OS X | Developers.IO

なので, 共有が2段階になっている.

docker_share_osx

以下の方法を試す.

How to share folders with docker containers on OSX

1. OSX と dockerサーバ(VM) 間の共有

sshfs-fuse を使う.

Filesystem in Userspace - Browse /sshfs-fuse at SourceForge.net

まず, OSX のリモートログイン機能を開始する.

System_Preferences

Sharing

Docker サーバに入って OSXのユーザディレクトリをマウントする.

$username と $ipadress は, OSX設定で許可した それぞれ.

$ boot2docker ssh
docker@boot2docker:~$ tce-load -wi sshfs-fuse
docker@boot2docker:~$ mkdir ~/osx
docker@boot2docker:~$ sudo sshfs $username@$ipaddress:/Users/$username/ /home/docker/osx/

2. dockerサーバ(VM) とコンテナ間の共有

通常の docker オプション -v による共有しながらのイメージ起動.

$ docker run -it -v /home/docker/osx/somefolder:/opt/somefolder ubuntu bash

これで,
コンテナ内 /opt/somefolder が
OSX の /Users/$username/somefolder と
共有されている.

追記:

とかいう話もバージョンアップで解消された.

docker 1.3 で MacOSX でもフツーに共有できようになった


関連ワード:  ツールライブラリ今さら聞けない開発