Dockerfile'dan sahte bir TTY ayırmasıyla etkileşimli bir şekilde Docker kapsayıcısı oluşturabilir miyim?


12

Dockerfile altından konteyner inşa ediyorum:

FROM ubuntu:14.04
...
RUN apt-get update && apt-get install -y vim
#RUN ssh-keygen -f /root/.ssh/id_rsa -N strongpass123$%^
RUN ssh-keygen -f /root/.ssh/id_rsa
...

Çok nadiren yaparım, ancak kullanmadan önce ssh-keygenve sonra birçok komut vardır .

Ben komut dosyası üzerinden yapabilir docker exec -it thirsty_darwin sh script.shve daha sonra görüntü etiket ve sonra kapsayıcılar (görüntüler) zincirleme kullanabilirsiniz biliyorum, ama istediğim kadar net bir çözüm değil.

Bekleme ssh-add ~/.ssh/id_rsaaracını kullanmak zorunda olduğum zaman bile en kötü durum . Bekleme aracı şifremi kodladı. Yapmak istemiyorum.

Yanıtlar:


17

Genellikle Docker görüntülerine herhangi bir sır eklememelisiniz. Bu konu hakkında daha fazla bilgi için bu cevaba bakınız .

Docker, bu sayıda açıklandığı gibi iyi nedenlerle etkileşimli derlemeleri desteklemez .

Bunu gerçekten yapmanız gerekiyorsa, şu şekilde kullanabilirsiniz docker commit:

docker build -t thirsty_darwin_base /path/to/Dockerfile
docker run -it --name=thirsty_darwin_changes thirsty_darwin_base /bin/bash
# do interactive stuff in the shell, then exit
docker commit thirsty_darwin_changes thirsty_darwin

Şimdi thirsty_darwinetkileşimli değişiklikleriniz var.

Güncelleme: Docker, bu cevap yazıldığı için daha kapsamlı bir sır yönetimi yayınladı .


Bahsettiğim gibi bu çözümü buldum, ancak ilk bağlantı (bu cevap) benim sorunum için güzel bir çözüm var. VOLUMEKapsayıcıda kendi oluşturmak yerine ana bilgisayardan anahtar bağlayacağım. Teşekkürler!
koralgooll

1
docker commitNormal bir şekilde yapmamaya çalışıyorum - sizi bir 'altın görüntü' köşesine boyayabilir.
Sobrique

İyi bir nokta @Sobrique. Docker'ın interaktif veya deterministik olmayan yapıları caydırmasının nedenlerinden biri de budur
Matt Vollrath

Docker sadece makineler üretmek için mi kullanılıyor? Çünkü birçok kurulum kullanıcı etkileşimi gerektirecektir. Yapımda Dockerfile kullanıcısını kullanamıyorum çünkü SAGE'yi kurmam gerekiyor ve kullanıcıya bazı sorular soruyor.
Magno C

@MagnoC, hayır Docker ile her şeyi inşa edemezsiniz. Dockerfiles'in arkasındaki fikir, çalıştırıldığında her zaman aynı sonucu istemenizdir. Etkileşimli girdiler bunu değiştirebilir. Matt'in dediği gibi, değiştirilmiş bir konteyneri görüntüye koyabilirsiniz. En azından yaptığım şey bu ..
musicliftsme
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.