Dockerfile 和 docker-compose 文件中定义的用户有什么区别?
What is the difference in the user defined in Dockerfile and docker-compose file?
我有一个 Dockerfile 如下:
FROM jenkins/jenkins:latest
USER root
RUN whoami
USER jenkins
RUN whoami
和这个 docker-compose 文件
version: '2'
services:
test:
build:
context: .
dockerfile: Dockerfile
container_name: test
hostname: test
ports:
- '8080:8080'
user: root
我在想
docker-compose 中定义的用户与 dockerfile
中定义的用户有什么区别
如何查看构建阶段的日志?当我 RUN whoami
时,如何以及在哪里可以看到结果?
如果问题是如果我将 docker-compose 中的用户更改为 other
怎么办
version: '2'
services:
test:
build:
context: .
dockerfile: Dockerfile
container_name: test
hostname: test
ports:
- '8080:8080'
user: other
为什么不起作用
如果我将 docker 文件更改为
FROM jenkins/jenkins:latest
USER root
RUN whoami
RUN groupadd -g 999 docker && \
usermod -aG staff,docker jenkins
USER jenkins
RUN whoami
并将 docker-compose 更改为
version: '2'
services:
test:
build:
context: .
dockerfile: Dockerfile
container_name: test
hostname: test
ports:
- '8080:8080'
user: jenkins
还是不行。
问题是什么
另一个问题是我什么时候做 docker exec -it container_name bash
它以 root 用户身份访问容器。如何改变
docker-compose 文件中的 user
配置将覆盖用于在容器中执行命令的用户。如果省略它,它将使用 Dockerfile 中最后设置的 USER
。如果两者都没有,它应该默认为 root。
请注意,您的 whoami
命令是 运行 在 build-time(而不是 run-time),因此它们不应受到您在 [=20] 中指定的内容的影响=] 文件,它仅在 run-time 覆盖用户。
要查看整个构建日志,您可以使用 docker compose build --progress flat
。
我有一个 Dockerfile 如下:
FROM jenkins/jenkins:latest
USER root
RUN whoami
USER jenkins
RUN whoami
和这个 docker-compose 文件
version: '2'
services:
test:
build:
context: .
dockerfile: Dockerfile
container_name: test
hostname: test
ports:
- '8080:8080'
user: root
我在想
docker-compose 中定义的用户与 dockerfile
中定义的用户有什么区别如何查看构建阶段的日志?当我
RUN whoami
时,如何以及在哪里可以看到结果?
如果问题是如果我将 docker-compose 中的用户更改为 other
version: '2'
services:
test:
build:
context: .
dockerfile: Dockerfile
container_name: test
hostname: test
ports:
- '8080:8080'
user: other
为什么不起作用
如果我将 docker 文件更改为
FROM jenkins/jenkins:latest
USER root
RUN whoami
RUN groupadd -g 999 docker && \
usermod -aG staff,docker jenkins
USER jenkins
RUN whoami
并将 docker-compose 更改为
version: '2'
services:
test:
build:
context: .
dockerfile: Dockerfile
container_name: test
hostname: test
ports:
- '8080:8080'
user: jenkins
还是不行。
问题是什么
另一个问题是我什么时候做
docker exec -it container_name bash
它以 root 用户身份访问容器。如何改变
docker-compose 文件中的 user
配置将覆盖用于在容器中执行命令的用户。如果省略它,它将使用 Dockerfile 中最后设置的 USER
。如果两者都没有,它应该默认为 root。
请注意,您的 whoami
命令是 运行 在 build-time(而不是 run-time),因此它们不应受到您在 [=20] 中指定的内容的影响=] 文件,它仅在 run-time 覆盖用户。
要查看整个构建日志,您可以使用 docker compose build --progress flat
。