58
40

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker for MacのDisk Imageの場所が変わった

Posted at

TL;DR

2018年3月のstableリリースからDocker for MacのDisk Imageの場所が変わっています。

(旧) ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux
(新) ~/Library/Containers/com.docker.docker/Data/vms/0

動機

volumeを作成してcontainer内のファイルをホスト側に永続化するときがあります。

例えば次のようにしてvolumesでホストからcontainer内にマウントしたファイルをホスト側で見ようとしたときに、Docker for Macではそんなフォルダはないよと言われてしまいます。

docker-compose.yml
version: '3'
services:
  nginx:
    image: nginx
    ports:
      - "8080:80"
    volumes:
      - nginx-volume:/mounted
volumes:
  nginx-volume:

確認


$ docker-compose up # volume作成, container起動
Starting test-project_nginx_1 ... done
$ docker volume inspect test-project_nginx-volume # volumeのmountpointを確認
[
    {
        "CreatedAt": "2019-06-20T05:14:13Z",
        "Driver": "local",
        "Labels": {
            "com.docker.compose.project": "test-project",
            "com.docker.compose.version": "1.23.2",
            "com.docker.compose.volume": "nginx-volume"
        },
        "Mountpoint": "/var/lib/docker/volumes/test-project_nginx-volume/_data",
        "Name": "test-project_nginx-volume",
        "Options": null,
        "Scope": "local"
    }
]
$ ls /var/lib/docker/volumes/test-project_nginx-volume/
ls: /var/lib/docker/volumes/test-project_nginx-volume/: No such file or directory

2019/6時点でこの解決方法を検索したところ古い情報が多かったので、情報のアップデートになればと思います。

背景

Docker for Macでは、Mac上で直接Docker Engineを動かすのではなく、Macの上にVMを作ってその上でDocker Engineを動かしています。
そのため、次のようにMac上でRoot Dirを探してもありません。

$ docker info | grep 'Docker Root Dir'
Docker Root Dir: /var/lib/docker
$ ls /var/lib/docker
ls: /var/lib/docker: No such file or directory

環境

手元ではDocker for Macのバージョンが 2.0.0.2 ですが、後述するように18.03.0-ce-mac59 以降のバージョンでこの記事の内容が有効です。

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.4
BuildVersion:   18E226
$ plutil -p /Applications/Docker.app/Contents/Info.plist | grep CFBundleShortVersionString
  "CFBundleShortVersionString" => "2.0.0.2"

解決

こちらのQiita記事が端的で良かったのですが、screenで接続しようとすると依然そんなファイルないよというエラーが発生してしまいます。

$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
Cannot exec '/Users/test-user/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty': No such file or directory
[screen is terminating]

検索するとこちらのTips でどうも仮想マシンの保存場所が変更されたらしいというコメントがあり、次のようにttyのPathを変えるとVMにscreenで接続することができました。

$ screen ~/Library/Containers/com.docker.docker/Data/vms/0/
linuxkit-025000000001:~#
linuxkit-025000000001:~# ls /var/lib/docker/volumes/test-project_nginx-volume/
_data

公式ドキュメント確認

そんな変更いつしたんだろうと思い調べると、リリースノート に次のように載っていました。

The directory holding the disk images has been renamed (from ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux to ~/Library/Containers/com.docker.docker/Data/vms/0`).

Docker for Macのstableバージョンで2018/3/26のリリースからPathが変更されているようです。

参考

https://docs.docker.com/docker-for-mac/release-notes/#docker-community-edition-18030-ce-mac59-2018-03-26
https://gist.github.com/BretFisher/5e1a0c7bcca4c735e716abf62afad389#gistcomment-2716295
https://qiita.com/uni-3/items/9e912d0d8aa87a398cfc

58
40
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
58
40

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?