【发布时间】:2021-10-10 20:30:35
【问题描述】:
我正在 Docker 中制作我的 python Django 应用程序的简单图像。但是在构建容器结束时它会抛出下一个警告(我在 Ubuntu 20.04 上构建它):
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead
如果我在图像中安装 Python 要求,为什么会引发此警告?我正在使用以下方式构建我的图像:
sudo docker build -t my_app:1 .
我是否应该担心 pip 抛出的警告,因为我知道它会破坏我的系统?
这是我的 Dockerfile:
FROM python:3.8-slim-buster
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
【问题讨论】:
-
npm和其他人也会给你错误/警告。最好不要以 root 身份运行,即使在容器中也是如此。您可以创建一个用户,作为 Dockerfile 的一部分,并使用它来安装/构建/运行。 -
你明白“root用户”是什么意思吗?您了解导致进程以 root 身份运行的原因吗?当您使用
sudo docker build -t my_app:1 .时,您认为sudo部分是什么意思? -
@KarlKnechtel 如果我理解正确的话,Dockerfile 中的
RUN pip ...命令默认由容器的root 用户运行,而不管docker build ...调用的是哪个主机系统用户。这就是为什么接受的答案会在 Dockerfile 中添加一个新用户。 @justin 说创建一个新的 docker 用户在任何情况下都是最佳实践,这很有趣,也许并不广为人知。 -
我的问题是针对 OP,而不是 Justin。
-
"您了解导致进程以 root 身份运行的原因吗?"问题实际上是导致 Pip 以“root”用户身份运行的原因。这不是须藤。这实际上是 docker 默认行为。如果您希望
RUN命令不以 root 身份运行,您必须在 Dockerfile 中添加一个用户。
标签: python django docker ubuntu pip