V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SSQQ
V2EX  ›  Docker

怎么修改容器内下载的文件所属用户

  •  
  •   SSQQ · 2022-08-18 17:37:16 +08:00 · 1032 次点击
    这是一个创建于 833 天前的主题,其中的信息可能已经有所发展或是发生改变。
    FROM openjdk:17.0.2-jdk-oracle
    EXPOSE 8083
    ARG JAR_FILE
    VOLUME ["/data"]
    VOLUME ["/config"]
    ADD ./sp-0.0.1-SNAPSHOT.jar  /app.jar
    ENTRYPOINT ["java", "-jar","/app.jar"]
    

    这个是个文件下载工具 下载出来的文件想给指定的用户权限

    我看别人的 docker 运行时候 添 UID 和 GID 就可以这个是怎么实现的呢

    就像这样 docker run -d -e Gid=100 -e UID=100 ....... 像弄成这样的 那位兄弟会的给说说

    6 条回复    2022-08-22 08:59:04 +08:00
    Maxwe11
        1
    Maxwe11  
       2022-08-18 17:41:28 +08:00
    没搞过,直接 docker exec bash 对文件赋权呢?
    AoEiuV020CN
        2
    AoEiuV020CN  
       2022-08-18 17:45:25 +08:00
    dockerfile 有 USER 命令可以指定用于执行后续命令的用户,
    但指定的是 docker 镜像中的用户,不存在的话首先要 useradd ,
    应该是没有特别容易的方法直接指定 uid,
    只是下载一个文件或者一个目录的话考虑下载之后 chmod ,
    AoEiuV020CN
        3
    AoEiuV020CN  
       2022-08-18 17:47:05 +08:00   ❤️ 1
    搜了个大概可行的代码,总之就是先添加用户再指定用户,具体 id 走参数传入,
    https://stackoverflow.com/a/44683248

    FROM ubuntu:xenial-20170214
    ARG UNAME=testuser
    ARG UID=1000
    ARG GID=1000
    RUN groupadd -g $GID -o $UNAME
    RUN useradd -m -u $UID -g $GID -o -s /bin/bash $UNAME
    USER $UNAME
    CMD /bin/bash

    docker build --build-arg UID=$(id -u) --build-arg GID=$(id -g) \
    -f bb.dockerfile -t testimg .
    lovelylain
        4
    lovelylain  
       2022-08-18 18:48:42 +08:00 via Android
    @AoEiuV020CN 要是容器内只有一个 go 程序没有 useradd 命令呢,怎么以非 root 用户运行?
    julyclyde
        5
    julyclyde  
       2022-08-19 09:15:10 +08:00
    @jobmailcn 里面只有一个 go 程序,还有所谓 root 吗?你连 docker exec 都执行不了吧
    ragnaroks
        6
    ragnaroks  
       2022-08-22 08:59:04 +08:00
    PGID PUID 是配合 supervisor 使用的,参考 https://hub.docker.com/r/linuxserver/qbittorrent ,对于自己创建的镜像,最简单的办法是指定此容器用户

    FROM openjdk:17.0.2-jdk-oracle
    EXPOSE 8083
    ARG JAR_FILE
    VOLUME ["/data"]
    VOLUME ["/config"]
    ADD ./sp-0.0.1-SNAPSHOT.jar /app.jar
    USER user1
    ENTRYPOINT ["java", "-jar","/app.jar"]
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5829 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 02:51 · PVG 10:51 · LAX 18:51 · JFK 21:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.