Dockerfile使用技巧(尽量使用非root用户)
在之前Linux的文章中,小编已经说明了root用户对Linux的重要性。
Docker的root权限一直是其遭受诟病的地方,docker的root权限有那么危险吗?我们举个例子
假如我们有个用户,叫demo,它本身不具备root权限,所以就有很多文件无法进行读写操作,比如/root目录是它无法查看的
更多关于Linux和用户权限的问题,欢迎大家去看小编之前的关于Linux的系列文章。
具体内容,还是以flask为例来比较不同用户
Dockerfile
FROM python:3.9.5-slim
RUN pip3 install flask
COPY app.py /src/app.py
WORKDIR /src
ENV FLASK=app.py
EXPOSE 5000
CMD ["flask", "run", "-h", "0.0.0.0"]
app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>Hello World!</h1>'
if __name__ == '__main__':
app.run()
用以上Dockerfile构建出来的镜像我们命名为flask-root。然后我们新建用户和组之后,重新修改一下Dockerfile
FROM python:3.9.5-slim
RUN pip3 install flask && \
groupadd -r flask && useradd -r -g flask flask && \
mkdir /src && \
chown -R flask:flask /src // 创建用户和用户组,并修改指定目录(/src)的权限
USER flask // 在该行之后,均适用flask这个用户
COPY app.py /src/app.py
WORKDIR /src
ENV FLASK=app.py
EXPOSE 5000
CMD ["flask", "run", "-h", "0.0.0.0"]
用以上Dockerfile构建出来的镜像我们命名为flask-no-root