gpt4 book ai didi

linux - 如何使用运行此容器的同一用户为 docker 容器创建卷?

转载 作者:太空宇宙 更新时间:2023-11-04 11:46:29 26 4
gpt4 key购买 nike

我的 jenkins 由 jenkins 用户启动“php”docker 容器。在容器内,任何创建的文件都拥有 root 所有者,例如“composer install”将创建具有 root 所有者的“vendor”目录。所以 jenkins 无法清理工作区。

A 被添加到 Dockerfile

RUN useradd -r jenkins
USER jenkins

但是容器无法启动。日志告诉我:

NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root
NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root
ERROR: Unable to create the PID file (/run/php-fpm.pid).: Permission denied (13)
ERROR: FPM initialization failed

然后,我尝试在容器内运行

chown jenkins:jenkins * -R

但是在构建完成后,我的文件的所有者是未知的:

drwxr-xr-x  3 libstoragemgmt input
drwxr-xr-x 6 libstoragemgmt input

用户“libstoragemgmt”和组“input”

最佳答案

也许此处介绍的方法对您有用。 https://jtreminio.com/blog/running-docker-containers-as-current-host-user/

它涉及删除内部 www-data 用户并使用与主机用户相同的 ID 重新创建它。在您的情况下,这将是 jenkins 用户 ID。

这是文章中的示例:

FROM jtreminio/php:7.2

ARG USER_ID=1000
ARG GROUP_ID=1000

RUN userdel -f www-data &&\
if getent group www-data ; then groupdel www-data; fi &&\
groupadd -g ${GROUP_ID} www-data &&\
useradd -l -u ${USER_ID} -g www-data www-data &&\
install -d -m 0755 -o www-data -g www-data /home/www-data &&\
chown --changes --silent --no-dereference --recursive \
--from=33:33 ${USER_ID}:${GROUP_ID} \
/home/www-data \
/.composer \
/var/run/php-fpm \
/var/lib/php/sessions

USER www-data

关于linux - 如何使用运行此容器的同一用户为 docker 容器创建卷?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57482081/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com