Próbuję pobrać kontener dokujący z jednego komputera i uruchomić go na innym i napotkałem błąd: „ Odpowiedź błędu od demona: Nie określono polecenia ”.
Poniżej znajduje się uproszczony przykład pokazujący problem:
docker --version
Docker version 1.10.1, build 9e83765
docker pull ubuntu
docker run --name u1 -dit ubuntu:latest
docker export -o exported u1
docker stop u1
docker rm u1
docker import exported ubuntu:imported
docker run --name u1 -dit ubuntu:imported
docker: Error response from daemon: No command specified.
W tym przykładzie najpierw pobieramy obraz (ubuntu) i z powodzeniem tworzymy / uruchamiamy u1
z niego kontener . Następnie eksportujemy ten kontener do pliku ( exported
), zatrzymujemy / usuwamy kontener, importujemy plik do nowego obrazu ( ubuntu:imported
) i próbujemy uruchomić z niego nowy kontener. To nie wyszło.
docker inspect imagename:tagname
porównanie oryginału i tego zaimportowanego. Nie miałem szczęścia zimport
/export
i--change
chociaż wszystko działa dobrze zsave
/load
.Wystąpił ten błąd podczas próby eksportowania i importowania okna dokowanego
microsoft/mssql-server-linux
.https://hub.docker.com/r/microsoft/mssql-server-linux/
Polecenia do eksportu i importu:
Nie mogliśmy jednak znaleźć polecenia, aby je uruchomić. Rozwiązaniem było wyświetlenie wszystkich kontenerów na maszynie eksportującej i sprawdzenie uruchomionego polecenia.
Stamtąd możemy dowiedzieć się, jak uruchomić poprawne polecenie:
źródło
Podczas eksportowania kontenera utracił on własną historię, która zawiera warstwy obrazu i metadane. Twój kontener stracił więc swoje stany pid.
Każdy kontener powinien mieć proces początkowy (root). Nadpisujesz domyślny punkt wejścia w pliku docker jako bash. [edytowany] Myślę, że nawet ty nie przesłonisz, używa domyślnego, nie zdefiniowanego w podstawowym obrazie ubuntu. Powinieneś więc rozpocząć swój początkowy proces poleceniem cmd. Myślę, że nie ma błędu. Jest to funkcja pliku dokowanego umożliwiająca ponowne użycie.
źródło
Pracuję z następującymi dodatkowymi krokami:
Utwórz plik Docker w następujący sposób:
Zbuduj nowy obraz:
Teraz będzie działać:
Jednak nadal nie jest jasne, dlaczego po prostu eksportowany, a następnie importowany obraz nie działa od razu. Czy to błąd?
źródło
możesz użyć
docker load
polecenia, aby załadować obrazy z pliku archiwum. to polecenie zaimportuje plik obrazu i argumenty razem.źródło
docker load
idocker save
operuj na obrazach kontenerów (z których tworzone są kontenery), podczas gdydocker import
idocker export
operuj na kontenerach.