Ja po Dokumentacja CoreOS Docker i wspomina począwszy pojemników z poleceń takich jak:
docker run someImageName /bin/somebinary
Gdzie someImageName
jest obraz. Kiedy / bin / somebinary kończy pracę, obraz nie będzie już działał.
Chciałbym po prostu uruchomić obraz, nie określając żadnych plików binarnych do uruchomienia. Zamiast tego chcę po prostu uruchomić usługi (np. Systemd / sysvinit), które zwykle działają w systemie operacyjnym obrazów .
Wydaje się, że jest to najczęstsza rzecz, jaką każdy chciałby zrobić z Dockerem, ale próba uruchomienia obrazu bez polecenia zwraca:
2014/02/05 14:49:19 Error: create: No command specified
Jak uruchomić kontener Docker i uruchomić pełny system operacyjny, zamiast określać polecenie ?
Odpowiedzi:
Jak tu udokumentowano, po prostu uruchamiasz się
/sbin/init
jako polecenie, podobnie jak każdy inny system uniksowy uruchamiający się z jednego użytkownika do trybu wielu użytkowników./programming/19332662/start-full-container-in-docker
Kontenery mogą być pełnowymiarowymi systemami operacyjnymi, po prostu nie muszą tak być (podobnie jak maszyny wirtualne, konfiguracja i zarządzanie nimi jest bardziej skomplikowane).
Powiedziałbym, że głównym celem Dockera jest ułatwienie kontenerów aplikacji, tak że trzeba tylko skonfigurować aplikację, a nie cały system operacyjny.
źródło
docker ps -notrunc
, aby uzyskać identyfikator kontenera, a następniesudo /usr/sbin/lxc-attach -n containerID
przejść do działającego obrazu. Jako drugi plakat wspomina, ja naprawdę nie potrzebuje drugiego init, więc będę sprawdzić pojemniki jednorazowego polecenia obok ...Docker to system do zarządzania i wdrażania kontenerów aplikacji , a nie kontenerów systemu operacyjnego . Wygląda na to, że łączysz uruchamianie kontenera dokującego z uruchamianiem systemu operacyjnego.
Kontenery Docker powinny być aplikacjami przeznaczonymi do jednego celu, o bardzo wąskim zakresie, które można uruchomić za pomocą jednego polecenia. Jeśli szukasz czegoś bardziej złożonego, to Docker nie jest rozwiązaniem, którego szukasz. W takim przypadku sprawdź KVM, ESXi, OpenVZ, LXD itp.
Jeśli szukasz tylko sposobu określenia wartości domyślnej
CMD
iENTRYPOINT
kontenerów, możesz to zrobić w czasie kompilacji za pomocą pliku Docker.źródło
/sbin/init
, ale nie musi go mieć. Prawdopodobnie użyłeś domyślnego kontenera Ubuntu lub czegoś podobnego. W tych pojemnikach znajduje się wiele bitów, które można usunąć, jeśli chcesz.Aby uruchomić pełny system operacyjny w kontenerze, utwórz następujący plik Docker:
Następnie zbuduj i uruchom kontener i wprowadź do niego powłokę, aby zbadać działające w niej usługi:
Pełne usystematyzowane usługi w kontenerze. Piękny.
źródło
Po prostu uruchom z tego samego obrazu tyle razy, ile potrzeba. Zostaną utworzone nowe kontenery, które można będzie następnie uruchomić i zatrzymać, zapisując własną konfigurację. Dla Twojej wygody lepiej byłoby nadać każdemu swojemu kontenerowi nazwę z „--name”.
Fi:
to jest to!
Następnie masz kontenery utworzone na zawsze i możesz je uruchamiać i zatrzymywać jak maszyny wirtualne.
Aby dostać się do pojemnika i zrobić to, co chcesz:
źródło