Используя файл 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
...