Dockerfile USER指令

用于指定用户

USER

指定运行容器时的用户名或 UID,后续的RUN等指令也会使用指定的用户身份

1
USER <user>[:<group>]  或 USER <UID>[:<GID>]

小栗子

1
USER www

当容器中运行的服务不需要管理员权限时,可以先建立一个特定的用户和用户组,为它分配必要的权限,使用 USER 切换到这个用户

重点

  • 使用 USER 指定用户时,可以使用用户名、UID 或 GID,或是两者的组合
  • 使用 USER 指定用户后,Dockerfile 中后续的命令 RUN、CMD、ENTRYPOINT 都将使用该用户

注意事项

  • 在 Windows 上,如果用户不是内置帐户,则必须先创建该用户
  • 可以通过 Dockerfile 的 RUN net user 命令来完成
1
FROM microsoft/windowsservercore # 在容器创建新用户 RUN net user /add patrick # 设置用户 USER patrick

也可以使用 docker run -u 指定用户

  • 替代默认设置的用户
  • 可以使用 uid 来指定用户
1
docker run -i -t -u 1001 busybox sh