Том Docker, основанный на каталоге хоста, содержит только файлы, принадлежащие пользователю root (ни один из которых не принадлежит пользователю), а также содержит некоторые другие случайные файлы. - PullRequest
0 голосов
/ 10 июня 2019

Используя файл docker-compose.yml, я хочу смонтировать каталог хоста внутри моего контейнера.Сначала я проверил, не перезаписываю ли я что-нибудь важное в контейнере :

# ls -al /etc/ssl
total 12
drwxr-xr-x 3 root root 4096 Jun  4 22:29 .
drwxr-xr-x 1 root root 4096 Jun  9 23:38 ..
drwxr-xr-x 2 root root 4096 Jun  4 22:29 certs

А как насчет подкаталога certs в контейнере ?

# ls -al /etc/ssl/certs
total 8
drwxr-xr-x 2 root root 4096 Jun  4 22:29 .
drwxr-xr-x 3 root root 4096 Jun  4 22:29 ..

Хорошо, все ясно.

Вот каталог хоста, который я собираюсь смонтировать с хоста :

$ ls -al /etc/ssl
total 232
drwxr-xr-x   11 root           wheel     352 Jun  9 15:10 .
drwxr-xr-x  119 root           wheel    3808 Jun  9 14:21 ..
-rw-r--r--@   1 cameronhudson  wheel     466 Jun  9 14:32 README.md
drwxr-xr-x    5 cameronhudson  wheel     160 Jun  9 15:09 cameronhudson.info
drwxr-xr-x    4 cameronhudson  wheel     128 Jun  9 15:09 cameronhudson8.com
-rw-r--r--    1 root           wheel  196928 Mar 20 22:24 cert.pem
drwxr-xr-x    2 root           wheel      64 Aug 17  2018 certs
drwxr-xr-x    5 cameronhudson  wheel     160 Jun  9 15:09 iskprinter.com
drwxr-xr-x    5 cameronhudson  wheel     160 Jun  9 15:09 kronn8.com
-rw-r--r--    1 root           wheel     745 Aug 17  2018 openssl.cnf
-rw-r--r--    1 root           wheel    1006 Aug 17  2018 x509v3.cnf

Какмы видим, что этот каталог содержит набор файлов и каталогов, некоторые из которых принадлежат cameronhudson, а некоторые принадлежат root.

Вот файл docker-compose.yml, который я использую:

version: "3.7"
services:
  webserver:
    image: nginx
    volumes:
      - /etc/ssl:/etc/ssl

После выполнения docker-compose up --build в качестве пользователя хоста cameronhudson, вот так выглядит каталог /etc/ssl внутри контейнера :

# ls -al /etc/ssl
total 259
drwxr-xr-x 1 root root     60 Feb 13 10:28 .
drwxr-xr-x 1 root root   4096 Jun  9 23:44 ..
-rw-r--r-- 1 root root 232598 Jan 29 16:27 cert.pem
drwxr-xr-x 1 root root     60 Feb 13 10:29 certs
-rw-r--r-- 1 root root    414 Dec 17 16:36 ct_log_list.cnf
-rw-r--r-- 1 root root    414 Dec 17 16:36 ct_log_list.cnf.dist
drwxr-xr-x 2 root root   2048 Feb 13 10:28 misc
-rw-r--r-- 1 root root  10911 Dec 17 16:36 openssl.cnf
-rw-r--r-- 1 root root  10911 Dec 17 16:36 openssl.cnf.dist
drwxr-xr-x 2 root root   2048 Feb 13 10:28 private

Это странно.Некоторые вещи, которые вы заметите:

  • Нет файлов на хосте, принадлежащем cameronhudson.
  • Все файлы на хосте, принадлежащем root, отсутствуютpresent.
  • Существуют и другие файлы, которых вообще нет в каталоге хоста, например, ct_log_list.cnf, файл, и private, пустой каталог.

Я запускаю Docker как cameronhudson на хосте (без sudo).Если бы файлы в контейнере принадлежали исключительно cameronhudson, это было бы понятно.Однако, чтобы произошло обратное - запустить контейнер как cameronhudson и иметь доступ к файлам, принадлежащим исключительно root - я совсем не понимаю, что это такое ...

Как я могу получить доступ ко всем файламв каталоге хоста?В идеале, было бы неплохо избавиться от таких случайных файлов, как ct_log_list.cnf ...

1 Ответ

0 голосов
/ 11 июня 2019

Я думаю, что это не сработало, потому что каталог etc является символической ссылкой, а Docker по умолчанию не следует по символическим ссылкам.

Camerons-Air:IskPrinter-Site cameronhudson$ ls -al / | grep etc
lrwxr-xr-x@   1 root  wheel     11 Oct 27  2018 etc -> private/etc

Однако это не объясняет, что происходит снекоторые файлы отсутствуют, а другие случайные файлы появляются вместе с контейнером.В другой раз, когда я пытался заставить Docker перейти по символической ссылке, он просто выдавал ошибку, говоря, что каталог или файл не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...