我在我的 ubuntu 机器上运行一个 apache2 docker 容器,但它不断将日志写入我的主机操作系统。详情如下:
样本/docker/apache2/Dockerfile
FROM php:5.6.34-apache
COPY ./sites-available/mysite.conf /etc/apache2/sites-available/mysite.conf
RUN a2dissite 000-default.conf
#RUN a2dissite default-ssl.conf
RUN a2ensite mysite.conf
和:
样本/docker/apache2/sites-available/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>
我构建/运行:
样本/docker-compose.yaml:
version: '3.8'
services:
apache2-php:
container_name: apache2-php-container
image: apache2-php-image
build:
context: ./docker/apache2
ports:
- "8082:80"
但是log
,run
和文件夹是在我的 docker-compose.yaml 文件上方lock
的根用户下的一个文件夹下在我的主机上创建的:
$ ll
total 60
drwxrwxr-x 3 user user 4096 Nov 15 09:22 samples/
drwxr-xr-x 3 root root 4096 Nov 15 10:40 lock/
drwxr-xr-x 3 root root 4096 Nov 15 10:40 log/
drwxr-xr-x 3 root root 4096 Nov 15 10:40 run/
和:
├── log
│ └── apache2
│ ├── error.log
│ └── other_vhosts_access.log
我也在这里尝试过建议:
但它没有效果。
为什么在我的主机上的那个位置创建这些文件夹/文件,我如何配置 apache2 容器只在容器内而不是在我的主机上写入日志?
这实在是不可能的。除非您
volumes
在 docker-compose 中定义,否则容器不能将任何内容写入主机的文件系统。证明与
您还可以通过在不祥主机的日志文件夹中创建一个文件并尝试在容器中找到它来反向证明这一点(您没有提到此文件夹在容器中的位置或应该位于容器中的位置。注意:即使容器会写文件到主机上,当然也可以从容器内的某个路径访问它 - 因为它需要安装在某个地方)
我什至复制了您的层次结构并验证没有创建文件夹。
日志记录甚至转到 docker 日志输出:
您可能会在那里遇到某种缓存。尝试清理您的系统(
docker system prune -a -f
(小心!))或在另一个未触及的系统上进行测试。小费:
docker-compose build --no-cache