docker - 在 “docker run”时间覆盖Dockerfile覆盖环境变量

标签 docker dockerfile

Docker文件

FROM ubuntu
ENV UID "1234"
ENV USERNAME "default"

RUN addgroup $USERNAME && useradd -u $UID -g $USERNAME -ms /bin/bash $USERNAME
CMD ["/usr/bin/id", "-u", "myname"]

并通过以下方式运行docker:
docker build -t setuser .    
docker run -e UID=5555 -e USERNAME=myname setuser

输出值
/usr/bin/id: 'myname': no such user

此错误告诉我,在“docker run”期间未执行Dockerfile中的useradd

我怎样才能做到这一点?
CMD ["/usr/bin/id", "-u", "default"]可以工作,但是我希望能够在运行时而不是在Dockerfile构建时提供UID和USERNAME

最佳答案

详细说明Henry's answer

构建镜像时,将执行以下Dockerfile部分。

FROM ubuntu
ENV UID "1234"
ENV USERNAME "default"

RUN addgroup $USERNAME && useradd -u $UID -g $USERNAME -ms /bin/bash $USERNAME

因此,这次设置了UID=1234USERNAME=default

运行图像时,它以ENTRYPOINT&CMD开头。它对RUN addgroup $USERNAME ...没有影响

因此,您需要运行脚本来使用传递的ENV。
#!/bin/bash

addgroup $USERNAME && useradd -u $UID -g $USERNAME -ms /bin/bash $USERNAME

id -u $USERNAME

在这里,将使用您传递的ENV值。

关于docker - 在 “docker run”时间覆盖Dockerfile覆盖环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48610525/

相关文章:

node.js - 从另一个容器连接 couchdb 容器

docker - 端口转发 Ubuntu - Docker

完成 RUN 语句后 Docker 构建不会继续

php - ImageMagick PHP Docker版本问题

python - 找不到docker python自定义模块

docker - 如何在 pom.xml 中使用 docker-maven-plugin 添加 RUN 命令

docker - 将 bash 命令转换为 dockers CMD

docker - 我如何在主管中执行脚本?

docker - 在 Kubernetes 中遇到端口转发的连接超时问题?

docker - "kubectl get pods"显示状态 - ImagePullbackOff