Docker için kendi temel imajımı nasıl oluşturabilirim?


97

Göre Docker belgelerinde , kendi imaj yaratmak için her zaman kullanan bir baz resim belirtmelisiniz FROMtalimat.

Açıkçası, Docker dizininde seçilebilecek çok sayıda görüntü var , ama ya kendi kendimi oluşturmak istersem? Mümkün mü?

baseDoğru anlarsam ve bir Debian görüntüsü ile deneyler yapmak istersem, görüntü Ubuntu'dan oluşturulmuştur. Artı, Docker'ın nasıl çalıştığını gerçekten anlamak istiyorum ve basegörüntü benim için hala bir kara kutu.


Düzenleme: temel görüntü oluşturmaya ilişkin resmi belgeler


Önemli değil. :-) Buradaki soruların yine de site yönergelerine göre konu üzerinde olması gerekir. Onlar üzerinde kaplısınız yardım merkezinin ve tur sayfalarında. (Buradaki bağlantı aynı zamanda Docker kapsayıcılarının geliştiricilerine de ait gibi görünüyor.) Kendi kapsayıcı görüntünüz hakkında soru soruyorsanız , sitelerinde
Ken White

@KenWhite: alakalı meta soru: meta.stackexchange.com/questions/179249/…
Flimm

:-) Şu andaki alakalı meta cevap , sizin yanıtınızın hemen üstünde. (Sorunuzun ne istediğinin netliği ile ilgili bağlantı kurduğum yanıta özellikle ikinci yoruma bakın.)
Ken White

9
@Ken White: Soru, bir 'görüntünün' nasıl dağıtılacağı değil, bir temel görüntünün nasıl 'oluşturulacağı'. Flimm daha sonra kendisi veya başkaları tarafından kullanılabilecek bir şey programlamaya çalışıyor. Amazon EC2 dağıtımla ilgilidir, ancak sanırım hala birkaç programcı programlama programım var :). Temel görüntüler oluşturmak, söyleyeceğim programımın bir örneğidir.
qkrijger

@qkrijger: Bu, bağlantılı meta soruda tartışılıyor. Bu tartışma açık olduğundan, lütfen konuyla ilgili herhangi bir tartışmayı oraya gönderin (burada fikir birliği "programlı şeyler" konusu değil gibi görünüyor).
Ken Beyaz

Yanıtlar:



33

Solomon Hykes'tan alıntı :

Herhangi bir tarball'dan "docker import" ile kolayca yeni bir konteyner oluşturabilirsiniz. Örneğin:

debootstrap raring ./rootfs
tar -C ./rootfs -c . | docker import - flimm/mybase

Belki de düzenlemeyi / güncellemeyi bir yoruma gönderin, böylece diğerleri onu görebilir ve belki birileri düzenlemeyi yeniden gönderebilir.
Bdoserror

1
@Flimm Bu durumda neden sudo kullanmam gerekiyor? Bu komutları kullanıcı dizininizde çalıştırın ve ayrıcalık yükseltme için hiçbir nedeniniz olmamalıdır. Bir görüntü oluşturuyorsunuz, onu kurmuyorsunuz.
rancidfishbreath

Normal Docker kullanımı için root'a bile ihtiyacınız yok; kendinizi dockergruba eklemeniz yeterli .
tekknolagi

1
Ancak, Flimm tarafından önerilen içe aktarma komutundaki kısa çizgi gereklidir: docker import - flimm/mybasebunun yerinedocker import flimm/mybase
Daniel Alder

Tar dosyasındaki dosyaların sahipliği, root olarak çalıştırıp çalıştırmamanıza bağlı olarak etkilenecektir. Kök olarak değilse, o zaman debootstrapve taren azından altında çalıştırılmalıdır fakeroot.
clacke

21

(fatherlinux'a kredi) http://developerblog.redhat.com/2014/05/15/practical-introduction-to-docker-containers/ adresinden bilgi alın , bu daha iyi açıklar

  1. Dosya sisteminiz için tar dosyalarını oluşturun, basitçe

    tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar /
    
  2. Yerel olarak yüklü değilse diğer liman işçisi sistemine katran dosyasını aktarın ve importbunu

    cat centos6-base.tar | docker import - centos6-base
    
  3. Şimdi çalıştırarak doğrulayabilirsiniz.

    docker run -i -t centos6-base cat /etc/redhat-release
    

Dotcloud gelen komut beni şaşkın ve görünüm başlangıçta karmaşık hale araya ilk iki adımı birleştirir.

Docker resmi kılavuzunu kullanarak debootstrapda temiz dosya sistemi yapmaya çalışır.

1. adımı nasıl yapacağınızı kendiniz yargılayabilirsiniz.


14

Sıfırdan kendi görüntünüzü oluşturmaya başlamak için scratchgörseli kullanabilirsiniz .

Çizik "görüntü" kullanımı, Dockerfile'daki sonraki komutun görüntünüzdeki ilk dosya sistemi katmanı olmasını istediğinizi oluşturma işlemine işaret eder.

FROM scratch
ADD hello /
CMD ["/hello"]

http://docs.docker.com/engine/articles/baseimages/#creating-a-simple-base-image-using-scratch


1
importTar dosyasından gelen bu artı , iki kanonik cevaptır ve bu bağlantı kanonik kaynaktır.
clacke

7

Kendi temel görüntünüzü oluşturmak istiyorsanız, önce özellikle bu deponun içindeki Resmi Görsellere bir göz atacağım stackbrew.

Aksi takdirde, docker deposunun kendisinde minimum işletim sistemi görüntüleri için bazı harika referanslar vardır .

Örneğin burada minimal bir kemer görüntüsü oluşturmak için bir komut dosyası var ve burada daha fazlası var .

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.