在启动时将参数传递给交互式 docker 容器

使用在 Dockerfile中指定的 ENTRYPOINTDocker 命令,可以在启动时将参数传递给交互式 Docker 容器。
考虑以下Dockerfile内容:

FROM debian:8
ENTRYPOINT ["echo"]

现在,让我们构建一个示例 foobar容器:

# docker build -t="foobar" .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon 
Step 0 : FROM debian:8
 ---> 41b730702607
Step 1 : ENTRYPOINT echo
 ---> Running in 0ffdc9f73e8a
 ---> a9aad02a62e1
Removing intermediate container 0ffdc9f73e8a
Successfully built a9aad02a62e1

接下来,我们使用交互模式启动新的 foobar容器并提供一个参数 MY ARGUMENT

# docker run -t -i foobar MY ARGUMENT
MY ARGUMENT

或者,如果在容器启动期间没有提供用户定义的参数,我们可以使用 CMD命令来提供默认参数。
让我们更改我们的 Dockerfile以包含 CMD命令:

FROM debian:8
ENTRYPOINT ["echo"]
CMD ["DEFAULT ARGUMENT"]

重建 Docker 镜像:

# docker build -t="foobar" .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon 
Step 0 : FROM debian:8
 ---> 41b730702607
Step 1 : ENTRYPOINT echo
 ---> Using cache
 ---> a9aad02a62e1
Step 2 : CMD DEFAULT ARGUMENT
 ---> Running in 42b7040b336f
 ---> ca6c2cddf0ea
Removing intermediate container 42b7040b336f
Successfully built ca6c2cddf0ea

当没有提供参数时,将触发由 CMD命令定义的默认参数:

# docker run -t -i foobar
DEFAULT ARGUMENT
日期:2020-07-07 20:57:04 来源:oir作者:oir