2016-05-17 16 views
9

Kök kullanıcıma bir (centos:6) Docker kapsayıcısına bir .bashrc vermek istiyorum. Ancak, kapsayıcıyı çalıştırdığımda, .bashrc kaynağından kaynaklanmadığını buldum. Bu yapılabilir mi?Docker'da kök için .bashrc nasıl yapılır

My yapı komut:

... 
RUN touch .bashrc 
RUN echo "iptables -t nat -A OUTPUT -d hostA -p tcp --dport 3306 -j DNAT --to hostB" >> .bashrc 
... 

Benim çalışma komutu:

docker run -it --cap-add=NET_ADMIN myImage /bin/bash 
+0

deneyin bir 'ayrılmış bir' CMD' içinde 2 komutları koymak için; 've/yeniden Bunu yaparsanız, Yani – user2915097

+0

yeniden başlatmasını ve çalıştırın run komutunun '/ bin/bash 'kısmı olmadan çalışır, ancak konteynerin etkileşimli kontrolünü bana vermez. –

+0

Yeni resminiz oluşturulduğunda, "docker run -it --cap-add = NET_ADMIN mynewimage/bin/bash" – user2915097

cevap

5

Dosyayı yanlış eklediğimde çıkıyor. Sadece .bashrc yerine /root/.bashrc olmalıdır. Dosya doğru yerde eklendiğinde, çalıştırma komutu veya CMD gerekmez.

Yapı

... 
ADD iptables /iptables 
RUN touch /root/.bashrc \ 
&& cat iptables >> /root/.bashrc 
... 

Run

docker run -it --cap-add=NET_ADMIN myImage /bin/bash 
0

bash manpage kabuk etkileşimli wheb .bashrc okunur belirtiyor. Böylece, .bashrc'u okuyan bir bash istiyorsanız, -h ile bash başlatmanız gerekir. Daha iyi iptables komutu sarma ve girişnoktası başlangıçta bir kabuk içinde kullandığınız ile olabilir, böylece girişnoktası veya cmd geçersiz kılar, konteynerde böyle bash -i yürütülmesi,

[email protected]:~# echo 'echo this is .bashrc' > /tmp/bashrc 
[email protected]:~# docker run -ti -v /tmp/bashrc:/root/.bashrc debian bash -i 
this is .bashrc 
[email protected]:/# 

Ama:

Görüyor giriş noktası/cmd olan komut dosyası.