我有一个基本的docker镜像,我将以此为基础构建自己的镜像。我没有基础镜像的Dockerfile。
基本上,基本镜像使用两个--env arg
,一个接受其许可证,一个选择在容器中激活哪个框架。我可以在没有ENTRYPOINT
作为docker run -it -p xxxx:xxxx --env ARG1=x --env ARG2=y <imageID> /bin/bash
的情况下运行我的容器,然后运行将在容器内的ENTRYPOINT
中运行的脚本,这没有问题。完美无瑕。但!我想使其与ENTRYPOINT ["/bin/bash", "-c", "myscript.sh"]
一起使用,这样我每次运行它时都不必进入容器。当我使用自己的入口点时,就像容器忽略了我的输入--env ARG1=x --env ARG2=y
。
基本镜像是否有自己的ENTRYPOINT
寻找这些环境变量?有什么方法可以确保基本镜像静止图像运行其启动脚本,然后再运行?
我的Dockerfile
:
FROM base-img
USER root
RUN apt-get update -y && apt-get upgrade -y \
&& apt-get install -y nano \
apache2 \
iputils-ping \
vim \
emacs
USER user1
ENV PATH="/opt/anaconda3/bin:${PATH}"
RUN conda install jupyter notebook -y
COPY jupyter_notebook_config.py /home/user1/.jupyter/
COPY run-jupyter.sh /home/user1
WORKDIR /home/user1
#ENTRYPOINT ["/bin/bash", "-c", "/home/user1/myscript.sh"]
我什至尝试在
~/.bashrc
中回显它们,但是没有起作用...就像我上面说的,我担心基本镜像中有一些脚本会在启动时运行,具体取决于
ARG2
设置为什么。 最佳答案
使用以下命令检查基本图像的ENTRYPOINT
:
docker inspect --format='{{.Config.Entrypoint}}' BASEIMAGE
(将
BASEIMAGE
替换为基本图像的名称。)如果您在自己的
ENTRYPOINT
中包含基本镜像的ENTRYPOINT
命令,则可能会起作用。关于docker - 传递--env变量现在可以与ENTRYPOINT一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52647267/