Содержимое файловой системы Docker-контейнера на хосте
Я много читал о том, как работает докер с использованием cgroups и пространств имен. Если это правильно, хост должен иметь возможность видеть все процессы и дерево файловой системы, которое используется контейнером Docker. Однако я, кажется, не могу понять это.
Может кто-нибудь показать это с помощью Docker v1.12.6 и работающего контейнера "nginx"?
Необязательно: можно ли по-прежнему получать доступ к файлам уже вышедших контейнеров?
PS, GraphDriver выглядит так:
"GraphDriver" : {
"Name" : "aufs",
"Data" : null
},
2 ответа
Вы можете скопировать файлы из docker с помощью команды docker cp, а затем получить к ней доступ. Это будет самый простой способ получить доступ к файлам из вышедшего контейнера.
При запуске на хосте, на котором работает демон 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
экспортировать файловую систему контейнера в архив tardocker commit
контейнер для изображения