如何在Dockerfile中获取宿主用户名并创建对应容器家目录
实现方案
你可以通过Docker的构建参数(ARG) 功能实现需求,操作步骤如下:
- 第一步:修改你的Dockerfile,声明构建参数并替换你原来的目录创建命令
# 声明构建参数USERNAME,默认值可设为你的常用用户名josecz ARG USERNAME=josecz # 用变量创建对应家目录 RUN mkdir /home/${USERNAME} # 可选补充:如果需要同步创建容器内的同名用户、并给家目录设置对应权限,可以追加以下命令 RUN useradd -m ${USERNAME} && chown -R ${USERNAME}:${USERNAME} /home/${USERNAME} # 如果需要容器运行时也能读取到这个用户名变量,可追加环境变量声明 ENV DEFAULT_USER=${USERNAME} - 第二步:执行镜像构建命令,传入宿主当前用户名作为参数值
其中docker build --build-arg USERNAME=$(whoami) -t 你的镜像名 .$(whoami)会自动获取当前Linux宿主的登录用户名,也就是你示例中的josecz,构建完成后容器内就会自动生成/home/josecz目录。 - 简化方案:如果你固定使用josecz作为用户名,不需要动态适配其他用户,也可以直接在Dockerfile里把ARG的默认值设为josecz,构建时不需要加
--build-arg参数,直接执行普通docker build命令即可。
内容的提问来源于stack exchange,提问作者Jose Cabrera Zuniga
相关产品推荐
相关产品推荐

