如何在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。

Interesting Posts