Jak mogę stworzyć własny obraz bazowy dla Dockera?

Zgodnie z dokumentacją Docker , aby zbudować własny obraz, należy zawsze podać obraz bazowy za pomocą instrukcji FROM.

Oczywiście, w indeksie Dockera jest wiele obrazów do wyboru, ale co, jeśli chciałbym zbudować własny? Czy to możliwe?

Obraz base jest zbudowany z Ubuntu, jeśli dobrze Rozumiem i chcę poeksperymentować z obrazem Debiana. Poza tym chcę naprawdę zrozumieć, jak działa Docker, a base obraz wciąż jest czarna skrzynka dla mnie.


Edytuj: oficjalna dokumentacja tworzenia obrazu bazowego

 82
Author: Thomasleveil, 2013-08-16

5 answers

Możesz spojrzeć na sposób tworzenia obrazów bazowych i przejść stamtąd.

Znajdziesz je tutaj: https://github.com/dotcloud/docker/tree/master/contrib . Jest mkimage-busybox.sh, mkimage-unittest.sh, mkimage-debian.sh

 31
Author: creack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-16 17:27:10

Cytowanie Salomon Hykes :

Możesz łatwo utworzyć nowy kontener z dowolnego tarballa za pomocą "Docker import". Na przykład:

debootstrap raring ./rootfs
tar -C ./rootfs -c . | docker import - flimm/mybase
 30
Author: Flimm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:15

(kredyt dla fatherlinux) Uzyskaj informacje z http://developerblog.redhat.com/2014/05/15/practical-introduction-to-docker-containers / , co wyjaśnia lepiej

  1. Utwórz pliki tar dla Twojego systemu plików, po prostu może to być

    tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar /
    
  2. Przenieś plik tar do innego systemu dokującego, jeśli nie jest zainstalowany lokalnie i import

    cat centos6-base.tar | docker import - centos6-base
    
  3. Teraz możesz sprawdzić, uruchamiając go.

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

Skrypty z dotcloud połącz dwa pierwsze kroki, które sprawiają, że jestem zdezorientowany i wygląda na skomplikowany na początku.

Docker official guideline using debootstrap również próbuje zrobić czysty system plików.

Możesz sam ocenić, jak zrobić krok 1.
 19
Author: Larry Cai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-02 02:07:01

Aby rozpocząć budowanie własnego obrazu od zera, możesz użyć obrazu scratch.

Użycie scratch "image" sygnalizuje procesowi budowania, że następne polecenie w pliku Dockerfile ma być pierwszą warstwą systemu plików w obrazie.

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

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

 12
Author: Mike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-11 09:22:56

Jeśli chcesz zrobić własny obraz bazowy, najpierw rzucę okiem na oficjalne zdjęcia , a konkretnie stackbrew wewnątrz tego repo.

W Przeciwnym Razie w repo Dockera znajdują się świetne odniesienia do minimalnych obrazów systemu operacyjnego.

Na przykład tutaj jest skrypt do tworzenia minimalnego obrazu łuku i jest więcej tutaj .

 6
Author: Jessie Frazelle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-27 13:53:17