首页 > 其他分享 >Dockerfile使用技巧(尽量使用非root用户)

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

时间:2023-02-19 20:34:45浏览次数:47  
标签:__ flask Dockerfile app 用户 使用 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

图片

图片

图片

标签:__,flask,Dockerfile,app,用户,使用,root
From: https://www.cnblogs.com/cheyunhua/p/17135511.html

相关文章

  • Go语言sync.Map(在并发环境中使用的map)
    Go语言中的map在并发情况下,只读是线程安全的,同时读写是线程不安全的。 下面来看下并发情况下读写map时会出现的问题,代码如下://创建一个int到int的映射m:=make(......
  • vue3-router使用
     1.引入routernpminstallvue-router@4 2.创建文件夹router,并创建index.js文件import{createRouter,createWebHashHistory}from"vue-router"constrouter=cr......
  • Node:使用nvm管理多个版本的node
    nvm-windows下载地址:https://github.com/coreybutler/nvm-windows/releases其他操作系统nvm的安装说明:https://github.com/nvm-sh/nvm安装的时候,注意选择新安装nodejs......
  • django中使用celery,模拟商品秒杀。
    Celery是Python开发的简单、灵活可靠的、处理大量消息的分布式任务调度模块 安装:pipinstallcelery#安装celery库pipinstallredis#celery依赖于......
  • uni-app api:使用剪贴板进行复制粘贴(hbuilderx 3.6.18)
    一,代码:<template><view><inputclass="btn"style="background:#ffff00;"type="text"v-model="content"/><buttonclass="btn"@click="setCl......
  • spacesniffer 过滤功能的使用
    点击下面链接了解吧https://www.yuque.com/g/suyuesheng/suyuesheng/dcwp4mftnbcu3xes/collaborator/join?token=gasG2KD7MgKUvevb#《spacesinfferfilter使用》......
  • 使用ThreadLocal+OpenSessionInView优化Mybatis使用
    使用一个名为OpenSessionInView的servlet过滤器,简化在服务中使用mybatis的操作。   一、情况分析Mybatis的使用过程:1、获取配置文件2、获取session工厂......
  • CMake在Windows环境下Visual Studio Code的使用
    在Windows环境下,使用CMake可以帮助我们更方便地管理和构建C++项目。而在使用CMake的过程中,我们可以使用任何一个编辑器,包括VSCode,来编辑和构建我们的代码。本文将介绍如何......
  • 网络丢包使用ethtool分析
    ethtool-geth0ethtooleth0:查询ethx网口基本设置。-g:显示网卡的接收/发送环形参数(ringbuffer)。Ringparametersforeth0:Pre-setmaximums:RX:4096RXMi......
  • Vue 的生命周期 详细解析(使用场景等)
    Vue生命周期图:  一、生命周期图的解读newVue():首先需要创建一个Vue的实例对象InitEvents&Lifecycle:初始化:生命周期、事件(如:v-once),但数据代理还未开始(vm._d......