iva*_*eev 3 bash docker dockerfile
或者,换句话说,我是否需要运行docker run -it <container> bash或docker run -it <container> bash --login获得与它们运行相同的环境?
获得与他们运行时相同的环境?
我理解“因为它们默认运行而不指定命令”
这仅取决于您的容器实际配置如何运行:
ENTRYPOINT或CMD配置为运行登录 shell,则应使用登录 shellENTRYPOINT或CMD配置为运行非登录 shell,则应使用非登录 shell您可以通过docker inspect在容器上运行来识别这一点,或者docker image inspect它将给您ENTRYPOINT和CMD
如果您首先创建run容器,然后使用以下命令创建外壳,则原理相同docker exec -it bash [--login]
例如,使用这个Dockerfile:
FROM alpine
RUN apk add bash
RUN echo "export MYVAR=frombashrc" > /root/.bashrc
RUN echo "export MYVAR=fromprofile" > /root/.bash_profile
ENTRYPOINT ["/bin/sh", "-c"]
Run Code Online (Sandbox Code Playgroud)
并运行:
$ docker build . -t mybashimage
$ docker run -it --name bashcontainer mybashimage "bash --login -c 'env && sleep 60'"
HOSTNAME=4aeb776a8c56
MYVAR=fromprofile
...
Run Code Online (Sandbox Code Playgroud)
当容器运行时在另一个 shell 中:
# Running a non-login shell does not have same effect
$ docker exec -it bashcontainer bash
bash-4.4# env
HOSTNAME=5f44398152bf
MYVAR=frombashrc
...
# Running login shell doe
$ docker exec -it bashcontainer bash --login -c 'env'
HOSTNAME=5f44398152bf
MYVAR=fromprofile
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6324 次 |
| 最近记录: |