栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用特定的UID在主机系统和Docker容器之间共享文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用特定的UID在主机系统和Docker容器之间共享文件

该环境不是共享的,您可以使用-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。因此,您的容器不依赖于内置用户/组,您可以在没有其他脚本的情况下使用它。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/426407.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号