该环境不是共享的,您可以使用-e,–env选项在容器中设置env变量。
当我想拥有映射卷的相同所有者时,通常使用这种方法:我检查容器中目录的uid和gid,然后创建一个相应的用户。这是我的脚本(setuser.sh),它为目录创建用户:
#!/bin/bashsetuser() { if [ -z "$1" ]; then echo "Usage: $0 <path>" return fi CURRENT_UID=`id -u` DEST_UID=`stat -c "%u" $1` if [ $CURRENT_UID = $DEST_UID ]; then return fi DEST_GID=`stat -c "%g" $1` if [ -e /home/$DEST_UID ]; then return fi groupadd -g $DEST_GID $DEST_GID useradd -u $DEST_UID -g $DEST_GID $DEST_UID mkdir -p /home/$DEST_UID chown $DEST_UID:$DEST_GID /home/$DEST_UID}setuser $1这是包装脚本,以用户身份运行命令,其中具有权限的目录指定为$ USER_DIR或在/ etc / user_dir中
#!/bin/bashif [ -z "$USER_DIR" ]; then if [ -e /etc/user_dir ]; then export USER_DIR=`head -n 1 /etc/user_dir` fifiif [ -n "$USER_DIR" ]; then if [ ! -d "$USER_DIR" ]; then echo "Please mount $USER_DIR before running this script" exit 1 fi . `dirname $BASH_SOURCE`/setuser.sh $USER_DIRfiif [ -n "$USER_DIR" ]; then cd $USER_DIRfiif [ -e /etc/user_script ]; then . /etc/user_scriptfiif [ $CURRENT_UID = $DEST_UID ]; then "$@"else su $DEST_UID -p -c "$@"fi
PS
Alleo建议使用不同的方法:将用户和组文件映射到容器中,并指定uid和gid。因此,您的容器不依赖于内置用户/组,您可以在没有其他脚本的情况下使用它。



