Mat*_*bst 23 .bash-profile docker
我想在root(centos:6)Docker容器中给我的root用户a .bashrc.但是,当我运行我的容器时,我发现.bashrc它还没有来源.可以这样做吗?
我的构建命令:
...
RUN touch .bashrc
RUN echo "iptables -t nat -A OUTPUT -d hostA -p tcp --dport 3306 -j DNAT --to hostB" >> .bashrc
...
Run Code Online (Sandbox Code Playgroud)
我的运行命令:
docker run -it --cap-add=NET_ADMIN myImage /bin/bash
Run Code Online (Sandbox Code Playgroud)
Mat*_*bst 23
结果我错误地添加了文件.应该/root/.bashrc而不仅仅是.bashrc.将文件添加到正确的位置,不需要运行命令或CMD.
建立
...
ADD iptables /iptables
RUN touch /root/.bashrc \
&& cat iptables >> /root/.bashrc
...
Run Code Online (Sandbox Code Playgroud)
跑
docker run -it --cap-add=NET_ADMIN myImage /bin/bash
Run Code Online (Sandbox Code Playgroud)
在bash的手册页,各国.bashrc当shell是交互式的阅读。因此,如果您想要一个读取 .bash 的 bash .bashrc,您需要使用 .bashrc 启动 bash -i。
看到:
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:/#
Run Code Online (Sandbox Code Playgroud)
但是,bash -i在容器中像这样执行会覆盖入口点或 cmd,因此您最好将 iptables 命令和您最初使用的入口点包装在成为您的入口点 / cmd 的 shell 脚本中。
| 归档时间: |
|
| 查看次数: |
27037 次 |
| 最近记录: |