Содержимое файловой системы Docker-контейнера на хосте

Я много читал о том, как работает докер с использованием cgroups и пространств имен. Если это правильно, хост должен иметь возможность видеть все процессы и дерево файловой системы, которое используется контейнером Docker. Однако я, кажется, не могу понять это.

Может кто-нибудь показать это с помощью Docker v1.12.6 и работающего контейнера "nginx"?

Необязательно: можно ли по-прежнему получать доступ к файлам уже вышедших контейнеров?

PS, GraphDriver выглядит так:

"GraphDriver" : {
  "Name" : "aufs",
  "Data" : null
},

2 ответа

Вы можете скопировать файлы из docker с помощью команды docker cp, а затем получить к ней доступ. Это будет самый простой способ получить доступ к файлам из вышедшего контейнера.

1

При запуске на хосте, на котором работает демон docker, вы можете запускать (как root);

Запустить контейнер nginx

docker run -d nginx

Просмотреть все запущенные процессы, иерархически

ps auxf

который показывает все процессы, включая только что запущенный контейнер nginx;

root      3810  0.9  3.2 387460 67308 ?        Ssl  11:31   0:12 /usr/bin/dockerd -H fd://
root      3819  0.1  0.6 291624 14028 ?        Ssl  11:31   0:01  \_ docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc
root      4241  0.0  0.3 143872  6652 ?        Sl   11:49   0:00      \_ docker-containerd-shim 1d3a6c65ac59e61c165d1f0119915a43e4d0387fd8432723f16b1ef2aa966522 /var/run/docker/libcontainerd/1d3a6c65ac59e61c165d1f0119915a43e4d0387fd8432723f16b1ef2aa966522 docker-runc
root      4277  0.0  0.2  31872  5280 ?        Ss   11:49   0:00          \_ nginx: master process nginx -g daemon off;
syslog    4304  0.0  0.1  32260  2904 ?        S    11:49   0:00              \_ nginx: worker process

файловая система контейнера

Расположение хранилища для файловых систем контейнера зависит от используемого вами драйвера хранилища. В вашем случае слои изображений и (доступные для записи) слои контейнеров хранятся в /var/lib/docker/aufs, Тем не менее, эти файлы не должны связываться напрямую. Ты можешь использовать

  • docker cp копировать файлы из / в контейнер (даже из вышедшего контейнера)
  • docker export экспортировать файловую систему контейнера в архив tar
  • docker commit контейнер для изображения
1
Другие вопросы по тегам