Dockerfile使用技巧(尽量使用非root用户)

在之前Linux的文章中,小编已经说明了root用户对Linux的重要性。

Docker的root权限一直是其遭受诟病的地方,docker的root权限有那么危险吗?我们举个例子

假如我们有个用户,叫demo,它本身不具备root权限,所以就有很多文件无法进行读写操作,比如/root目录是它无法查看的

更多关于Linux和用户权限的问题,欢迎大家去看小编之前的关于Linux的系列文章。

具体内容,还是以flask为例来比较不同用户

Dockerfile

FROM python:3.9.5-slimRUN pip3 install flaskCOPY app.py /src/app.pyWORKDIR /srcENV FLASK=app.pyEXPOSE 5000CMD ["flask", "run", "-h", "0.0.0.0"]

app.py

from flask import Flaskapp = 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-slimRUN 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.pyWORKDIR /srcENV FLASK=app.pyEXPOSE 5000CMD ["flask", "run", "-h", "0.0.0.0"]

用以上Dockerfile构建出来的镜像我们命名为flask-no-root

图片

图片

图片

posted @ 2023-02-19 20:23  技术颜良  阅读(487)  评论(0编辑  收藏  举报