Рейтинг:0

Контейнер докеров apache2 записывает журналы на моем хосте как пользователь root

флаг cl

Я запускаю док-контейнер apache2 на своем компьютере с Ubuntu, но он продолжает записывать журналы в мою хост-систему. Подробности ниже:

образцы/докер/apache2/Dockerfile

ИЗ php:5.6.34-apache
КОПИРОВАТЬ
ЗАПУСК a2dissite 000-default.conf
#ЗАПУСК a2dissite default-ssl.conf
ЗАПУСК a2ensite mysite.conf

с:

образцы/докер/apache2/сайты доступны/mysite.conf:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName localhost
    ServerAlias localhost
    #DocumentRoot /var/www/html
    DocumentRoot /var/www


    ErrorLog /dev/stderr
    CustomLog /dev/stdout combined

    #ErrorLog ${APACHE_LOG_DIR}/error.log
    #CustomLog ${APACHE_LOG_DIR}/access.log combined
    
</VirtualHost>

что я строю/запускаю с:

образцы/докер-compose.yaml:

версия: '3.8'
Сервисы:
  apache2-php:
    имя_контейнера: apache2-php-контейнер
    изображение: apache2-php-изображение
    строить:
      контекст: ./docker/apache2
    порты:
      - "8082:80"

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

$ ll
всего 60
drwxrwxr-x 3 пользователь пользователь 4096 15 ноября 09:22 образцы/
drwxr-xr-x 3 root root 4096 15 ноября 10:40 блокировка/
drwxr-xr-x 3 root root 4096 15 ноября 10:40 журнал/
drwxr-xr-x 3 root root 4096 15 ноября 10:40 запуск/

с:

Журнал
âââ apache2
âââ error.log
âââ other_vhosts_access.log

Я также пробовал предложения здесь:

Запись журналов Apache2 в stdout/stderr?

но это не имеет никакого эффекта.

Почему эти папки/файлы создаются в этом месте на моем хосте и как настроить контейнер apache2 для записи журналов только внутри контейнера, а не на моем хосте?

sgohl avatar
флаг ca
вы всегда должны предоставлять команды, которые вы выполняете
Рейтинг:1
флаг ca

Это действительно невозможно. Если вы не определите тома в docker-compose контейнер ничего не может записать в файловую систему хоста.

Докажите, что с

> docker проверяет контейнер apache2-php | jq .[].Mounts
> docker проверяет контейнер apache2-php | jq .[].Volumes

Вы также можете доказать это, создав файл в папке журнала вашего зловещего хоста и попробовав найти его в контейнере (вы не упомянули, где эта папка находится или должна находиться в вашем контейнере. Примечание: даже если контейнер будет писать файлы на хост, он также будет доступен из контейнера по какому-то пути, конечно, потому что его нужно где-то смонтировать)

Я даже воспроизвел вашу иерархию и убедился, что папки не созданы.

примеры > сборка docker-compose
Сборка apache2-php
Отправка контекста сборки демону Docker 3,584 КБ
...
Успешно помечен apache2-php-image:latest
образцы > docker-compose up -d
Создание сети «samples_default» с драйвером по умолчанию
Создание apache2-php-контейнера... сделано
> дерево
.
образцы
    âââ докер
    âââ apache2
    âââ Dockerfile
    âââ сайты доступны
    âââ mysite.conf
    âââ docker-compose.yaml

4 каталога, 3 файла

Журналирование даже идет на вывод журналов докеров:

> curl -I http://localhost:8082/bla
HTTP/1.1 404 не найден
Сервер: Apache/2.4.10 (Debian)

apache2-php-контейнер | 172.21.0.1 - - [17/ноября/2021:12:34:16 +0000] "HEAD /bla HTTP/1.1" 404 140 "-" "curl/7.69.1"

Возможно, у вас есть какой-то кеш, попавший туда. попробуй почистить систему(система докеров обрезать -a -f (осторожно!)) или проверьте его на другой нетронутой системе.

совет: docker-compose build --no-cache

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.