如何在Docker中为.bashrc
我想在( centos:6
)Docker容器中给我的root用户一个.bashrc
。 但是,当我运行我的容器时,我发现.bashrc
尚未find。 可以这样做吗?
我的build立命令:
... RUN touch .bashrc RUN echo "iptables -t nat -A OUTPUT -d hostA -p tcp --dport 3306 -j DNAT --to hostB" >> .bashrc ...
我的运行命令:
docker run -it --cap-add=NET_ADMIN myImage /bin/bash
原来我正在添加文件不正确。 它应该是/root/.bashrc
而不仅仅是.bashrc
。 将文件添加到正确的位置,不需要运行命令或CMD。
build立
... ADD iptables /iptables RUN touch /root/.bashrc \ && cat iptables >> /root/.bashrc ...
跑
docker run -it --cap-add=NET_ADMIN myImage /bin/bash
bash manpage指出.bashrc
被读取,因为shell是交互式的。 因此,如果你想要一个读取.bashrc
的bash,你需要用-i启动bash。
看:
root@host:~# echo 'echo this is .bashrc' > /tmp/bashrc root@host:~# docker run -ti -v /tmp/bashrc:/root/.bashrc debian bash -i this is .bashrc root@01da3a7e9594:/#
但是,像这样在容器中执行bash -i
会覆盖入口点或cmd,所以你可能会更好地将iptables命令和最初使用的入口点放在一个shell脚本中,该入口点将成为您的入口点/ cmd。