Uruchom obraz Docker jako kontener


604

Zbudowałem obraz Dockera z pliku docker. Widzę, że obraz został pomyślnie zbudowany, ale co mam z tym zrobić? Czy nie powinno być w stanie działać jako kontener?

Odpowiedzi:


855

Konkretny sposób uruchomienia zależy od tego, czy nadałeś obrazowi tag / nazwę, czy nie.

$ docker images
REPOSITORY          TAG                 ID                  CREATED             SIZE
ubuntu              12.04               8dbd9e392a96        4 months ago        131.5 MB (virtual 131.5 MB)

Z nazwą (użyjmy Ubuntu ):

$ docker run -i -t ubuntu:12.04 /bin/bash

Bez nazwy, wystarczy użyć identyfikatora:

$ docker run -i -t 8dbd9e392a96 /bin/bash

Aby uzyskać więcej informacji, zobacz odniesienie do uruchomienia Docker .


4
Czy więc przyjazne dla ludzi nazwiska wydrukowane pod „NAZWA” docker ps -anie są tutaj przydatne?
ThorSummoner,

11
docker pswymienia pojemniki, a nie obrazy. Jeśli chcesz utworzyć obraz z kontenera, musisz docker commit. Możesz użyć NAZWY w zatwierdzeniu (np. docker commit _NAME_ _imagename_)
Andy,

8
@Andy Dlaczego używamy / bin / bash na końcu? Jestem również nowy
Raheel,

6
@RaheelKhan Zostań obrazem dokera potrzebuje czegoś do uruchomienia. Możesz zastąpić to zainstalowanym programem. / bin / bash to po prostu przydatna powłoka, która jest już zainstalowana.
Ryan Shillington

Jeśli chcesz dodać zmienną środowiskową, możesz uruchomić okno dokowane -i -t -e ROOT_PASSWORD = root Ubuntu: 12.04
Balaji Radhakrishnan

70

Wykonaj następujące czynności:

  1. $ docker images

    Otrzymasz listę wszystkich lokalnych obrazów Dockera z określonymi tagami.

  2. $ docker run image_name:tag_name

    Jeśli nie określiłeś tag_name , automatycznie uruchomi obraz ze znacznikiem „najnowszy”.

    Zamiast tego image_namemożesz także podać identyfikator obrazu (bez nazwy tagu).


35
  • Aby wyświetlić listę obrazów Docker

    $ docker images
    
  • Jeśli twoja aplikacja chce uruchomić się z portem 80 i możesz udostępnić inny port do lokalnego powiązania, powiedz 8080:

    $ docker run -d --restart=always -p 8080:80 image_name:version
    

21

Możesz zobaczyć dostępne obrazy, używając:

docker images

Następnie możesz uruchomić w trybie odłączonym, aby twój terminal był nadal użyteczny. Masz kilka opcji, aby uruchomić go przy użyciu nazwy repozytorium (z tagiem lub bez) lub identyfikatora obrazu:

docker run -d repository
docker run -d repository:tag
docker run -d image_id

Następnie możesz sprawdzić, czy Twój kontener działa

docker ps

docker psdaje identyfikator kontenera. Możesz go użyć lub tylko 2/3 pierwszych znaków, aby przejść do kontenera, używając:

docker exec -it container_id /bin/bash

Możesz zatrzymać to za pomocą docker stop container_idi docker rm container_id.

Możesz również uruchomić swój kontener za pomocą -rm argumentami, więc jeśli go zatrzymasz, zostanie on automatycznie usunięty.


1
Opcja --rm (uwaga: 2 kreski nie pojedyncze) jest złota !!!, mój system jest zaśmiecony zatrzymanymi (martwymi) pojemnikami.
Johan Snowgoose

13

Uzyskaj nazwę lub identyfikator obrazu, który chcesz uruchomić, za pomocą tego polecenia:

docker images

Polecenie uruchomienia Docker jest używane w następujący sposób:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Poniżej podałem opcje wysyłki, nazwy, publikacji, woluminu i restartu przed podaniem nazwy obrazu lub identyfikatora:

docker run -d --name  container-name -p localhost:80:80 -v $HOME/myContainer/configDir:/myImage/configDir --restart=always image-name

Gdzie:

--detach , -d        Run container in background and print container ID
--name                Assign a name to the container
--publish , -p        Publish a container’s port(s) to the host
--volume , -v        Bind mount a volume
--restart            Restart policy to apply when a container exits

Aby uzyskać więcej informacji, sprawdź oficjalną informację o uruchomieniu Docker .


5

Oto przykład uruchomienia usługi webdev w Docker. Obraz nazywa się morrisjobke / webdav . Możesz go pobrać z Docker Hub .

Po uruchomieniu tych obrazów można uzyskać dostęp do instancji WebDAV pod adresem http://localhost:8888/webdav. Wewnętrznie folder /var/webdavjest używany jako katalog główny WebDAV.

Możesz uruchomić ten kontener w następujący sposób:

$ docker run -d -e USERNAME=test -e PASSWORD=test -p 8888:80 morrisjobke/webdav

Odp. „Uruchom usługę WebDev” : Czy masz na myśli „Uruchom usługę WebDAV” ? Lub „uruchomić usługę programistyczną” ?
Peter Mortensen,

5

Miałem ten sam problem. Uruchomiłem obraz Dockera, który utworzył kontener o określonym identyfikatorze CONTAINER_ID. Chciałem pracować z tym samym kontenerem:

Najpierw uruchom obraz Dockera:

docker run -it -p 8888:8888 -p 6006:6006 -v ~/:/host waleedka/modern-deep-learning

Następnie wypisz wszystkie wykonane pojemniki:

sudo docker ps -a

I wybierz pojemnik, z którym chcesz pracować (mój to 167ddd6d7f15):

sudo docker start -ai 167ddd6d7f15

4

Ponieważ utworzyłeś obraz z pliku Docker, obraz obecnie nie jest w stanie aktywnym. Aby pracować, musisz uruchomić ten obraz w kontenerze.

$ docker imagesKomenda opisuje, jak wiele obrazów są obecnie dostępne w lokalnym repozytorium. i

docker ps -a

pokazuje, ile kontenerów jest aktualnie dostępnych, tj. listę aktywnych i opuszczonych kontenerów.

Istnieją dwa sposoby uruchomienia obrazu w kontenerze:

$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

W trybie odłączonym:

-d=false: Detached mode: Run container in the background, print new container id

W trybie interaktywnym:

-i :Keep STDIN open even if not attached

Oto polecenie uruchomienia Docker

$ docker run image_name:tag_name

Aby uzyskać więcej wyjaśnień na temat uruchomienia Docker, odwiedź stronę referencyjną Docker run .

To najlepszy materiał do zrozumienia Dockera.


2

Aby wyświetlić listę wszystkich obrazów na hoście Docker, uruchom:

  $ docker images
   REPOSITORY          TAG           IMAGE ID            CREATED             SIZE
   apache_snapshot     latest        13037686eac3        22 seconds ago      249MB
   ubuntu              latest        00fd29ccc6f1        3 weeks ago         111MB

Teraz możesz uruchomić obraz Dockera jako kontener w trybie interaktywnym:

   $ docker run -it apache_snapshot /bin/bash

LUB jeśli nie masz żadnych zdjęć lokalnie, wyszukaj w Docker Hub obraz, który chcesz pobrać:

    $ docker search ubuntu
    NAME                            DESCRIPTION             STARS  OFFICIAL  AUTOMATED
    ubuntu                          Ubuntu is a Debian...   6759   [OK]       
    dorowu/ubuntu-desktop-lxde-vnc  Ubuntu with openss...   141              [OK]
    rastasheep/ubuntu-sshd          Dockerized SSH ser...   114              [OK]
    ansible/ubuntu14.04-ansible     Ubuntu 14.04 LTS w...   88               [OK]
    ubuntu-upstart                  Upstart is an even...   80     [OK]

Wyciągnij obraz Docker z repozytorium za pomocą polecenia pull dokera:

     $ docker pull ubuntu

Uruchom obraz Dockera jako kontener:

     $ docker run -it ubuntu /bin/bash

0
$ docker images
REPOSITORY                TAG                 IMAGE ID            CREATED            
jamesmedice/marketplace   latest              e78c49b5f380        2 days ago          
jamesmedice/marketplace   v1.0.0              *e78c49b5f380*        2 days ago          


$ docker run -p 6001:8585 *e78c49b5f380*

1
Wytłumaczenie byłoby w porządku.
Peter Mortensen

-1

Dla tych, którzy mieli ten sam problem, ale napotkali błąd podobny do

rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "exec: \"bash\": executable file not found in $PATH"

Dodałem punkt wejścia, który został dla mnie opracowany:

docker run -it --entrypoint /bin/sh dla zdjęć bez Bash.

Przykład (z zatwierdzonego przykładu):

run -it --entrypoint /bin/sh ubuntu:12.04

Odniesienie: https://gist.github.com/mitchwongho/11266726

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.