dpa*_*kar 5 docker miniconda ubuntu-18.04
我正在创建一个 docker 容器,该容器具有带有一些包(pip 和 conda)的 miniconda 环境设置。Dockerfile :
# Use an official Miniconda runtime as a parent image
FROM continuumio/miniconda3
# Create the conda environment.
# RUN conda create -n dev_env Python=3.6
RUN conda update conda -y \
&& conda create -y -n dev_env Python=3.6 pip
ENV PATH /opt/conda/envs/dev_env/bin:$PATH
RUN /bin/bash -c "source activate dev_env" \
&& pip install azure-cli \
&& conda install -y nb_conda
Run Code Online (Sandbox Code Playgroud)
我想要的行为是,当容器启动时,它应该自动切换到“dev_env”conda 环境,但我无法让它工作。日志:
dparkar@mymachine:~/src/dev/setupsdk$ docker build .
Sending build context to Docker daemon 2.56kB
Step 1/4 : FROM continuumio/miniconda3
---> 1284db959d5d
Step 2/4 : RUN conda update conda -y && conda create -y -n dev_env Python=3.6 pip
---> Using cache
---> cb2313f4d8a8
Step 3/4 : ENV PATH /opt/conda/envs/dev_env/bin:$PATH
---> Using cache
---> 320d4fd2b964
Step 4/4 : RUN /bin/bash -c "source activate dev_env" && pip install azure-cli && conda install -y nb_conda
---> Using cache
---> 3c0299dfbe57
Successfully built 3c0299dfbe57
dparkar@mymachine:~/src/dev/setupsdk$ docker run -it 3c0299dfbe57
(base) root@3db861098892:/# source activate dev_env
(dev_env) root@3db861098892:/# exit
exit
dparkar@mymachine:~/src/dev/setupsdk$ docker run -it 3c0299dfbe57 source activate dev_env
[FATAL tini (7)] exec source failed: No such file or directory
dparkar@mymachine:~/src/dev/setupsdk$ docker run -it 3c0299dfbe57 /bin/bash source activate dev_env
/bin/bash: source: No such file or directory
dparkar@mymachine:~/src/dev/setupsdk$ docker run -it 3c0299dfbe57 /bin/bash "source activate dev_env"
/bin/bash: source activate dev_env: No such file or directory
dparkar@mymachine:~/src/dev/setupsdk$ docker run -it 3c0299dfbe57 /bin/bash -c "source activate dev_env"
dparkar@mymachine:~/src/dev/setupsdk$
Run Code Online (Sandbox Code Playgroud)
如上所示,当我在容器内时,我可以成功运行“source activate dev_env”并且环境切换。但是我希望在启动容器时自动发生这种情况。
这也发生在构建期间的 Dockerfile 中。同样,我不确定这是否也有任何影响。
小智 0
您应该将该命令用于CMD与运行时相关的任何内容。
之后键入的任何内容都RUN只会在创建映像时运行,而不是在实际运行容器时运行。用于运行此类命令的 shell 在映像创建过程结束时关闭,从而使环境激活在这种情况下变得非持久性。
因此,您的附加行可能如下所示:
环境激活后运行时可能需要的其他命令在
CMD ["conda activate <your-env-name> && <other commands>"]
哪里。<other commands>
| 归档时间: |
|
| 查看次数: |
1764 次 |
| 最近记录: |