docker运行-i-t image/bin/bash-先运行源文件
这项工作:docker运行-i-t image/bin/bash-先运行源文件,bash,docker,Bash,Docker,这项工作: # echo 1 and exit: $ docker run -i -t image /bin/bash -c "echo 1" 1 # exit # echo 1 and return shell in docker container: $ docker run -i -t image /bin/bash -c "echo 1; /bin/bash" 1 root@4c064f2554de:/# 问题:我怎样才能将文件导入shell?(这不起作用) $docker run
# echo 1 and exit:
$ docker run -i -t image /bin/bash -c "echo 1"
1
# exit
# echo 1 and return shell in docker container:
$ docker run -i -t image /bin/bash -c "echo 1; /bin/bash"
1
root@4c064f2554de:/#
问题:我怎样才能将文件导入shell?(这不起作用)
$docker run-i-t image/bin/bash-c”source我认为您不能这样做,至少现在不能。您可以做的是修改您的图像,并添加您想要的源文件,如下所示:
FROM image
ADD my-file /my-file
RUN ["source", "/my-file", "&&", "/bin/bash"]
在我的例子中,我在Dockerfile中使用runsource
命令(将使用/bin/bash运行)来安装node.js的nvm
这里有一个例子
FROM ubuntu:14.04
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
...
...
RUN source ~/.nvm/nvm.sh && nvm install 0.11.14
我想要一些类似的东西,并对你的想法进行了一些扩展,得出以下结论:
docker run -ti --rm ubuntu \
bash -c 'exec /bin/bash --rcfile /dev/fd/1001 \
1002<&0 \
<<<$(echo PS1=it_worked: ) \
1001<&0 \
0<&1002'
docker运行-ti--rm ubuntu\
bash-c'exec/bin/bash--rcfile/dev/fd/1001\
1002您可以在交互式容器中使用.bashrc
:
RUN curl -O git.io/apeepg.sh && \
echo 'source apeepg.sh' >> ~/.bashrc
然后像往常一样运行dockerrun-it--rmsome/image bash
请注意,这将仅对交互式容器起作用。source
是内置的。它不作为命令存在,因此这只会给出一个错误。这仅在docker build
期间起作用,并且仅适用于相同的RUN
指令。当生成的图像延迟时,文件将不会被来源r以分离或交互容器的形式启动。
RUN curl -O git.io/apeepg.sh && \
echo 'source apeepg.sh' >> ~/.bashrc