Rulați o imagine Docker ca un container (Programare, Docker, Imagine Docker)

boom a intrebat.

După ce ați construit o imagine Docker dintr-o imagine dockerfile, , văd că imaginea a fost construită cu succes, dar ce să fac cu ea? Nu ar trebui să o pot rula ca un container?

11 răspunsuri
Andy

Modul specific de a o rula depinde de faptul dacă ați dat imaginii un tag/nume sau nu.

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

Cu un nume (să folosim Ubuntu):

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

Fără un nume, folosind doar ID-ul:

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

Vă rugăm să consultați Referința de execuție Docker pentru mai multe informații.

Comentarii

  • Astfel, numele prietenoase pentru oameni tipărite sub „NAME” în docker ps -a nu este utilă aici? –  > Por ThorSummoner.
  • docker ps listează containere, nu imagini. Dacă doriți să creați o imagine dintr-un container, trebuie să docker commit. Puteți utiliza funcția NAME în confirmare (de ex. docker commit _NAME_ _imagename_) –  > Por Andy.
  • @Andy De ce folosim /bin/bash la sfârșit ? Și eu sunt nou –  > Por Raheel.
  • @RaheelKhan Pentru că imaginea ta docker are nevoie de ceva pentru a rula. Ai putea înlocui asta cu un program pe care l-ai instalat. /bin/bash este doar un shell la îndemână care este deja instalat. –  > Por Ryan Shillington.
  • Dacă aveți nevoie să adăugați o variabilă de mediu, puteți docker run -i -t -e ROOT_PASSWORD=root ubuntu:12.04 -.  > Por Balaji Radhakrishnan.
kalyani chaudhari

Efectuați următorii pași:

  1. $ docker images

    Veți obține o listă cu toate imaginile Docker locale cu etichetele specificate.

  2. $ docker run image_name:tag_name

    Dacă nu ați specificat tag_name se va rula automat o imagine cu tag-ul „latest”.

    În loc de image_name, , puteți specifica, de asemenea, un ID de imagine (fără tag_name).

Comentarii

  • Sunt nou în docker, mă ajută, Mulțumesc. Mai departe putem verifica statusurile pentru imaginile care rulează sudo docker ps -a –  > Por WK5.
Murali Manchadikkal
  • Pentru a lista imaginile Docker

    $ docker images
    
  • Dacă aplicația dvs. dorește să ruleze cu portul 80 și puteți expune un alt port pentru a vă lega local, să zicem 8080:

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

amdev

Puteți vedea imaginile disponibile folosind:

docker images

Apoi, puteți rula în modul detașat, astfel încât terminalul dvs. să fie încă utilizabil. Aveți mai multe opțiuni pentru a-l rula folosind un nume de depozit (cu sau fără etichetă) sau ID-ul imaginii:

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

Apoi puteți verifica dacă containerul dvs. rulează folosind

docker ps

docker ps vă oferă un ID al containerului. Îl puteți folosi sau doar primele 2/3 caractere pentru a intra în containerul dvs. folosind:

docker exec -it container_id /bin/bash

Și îl puteți opri folosind docker stop container_id și docker rm container_id.

De asemenea, puteți rula containerul dvs. cu -rm astfel încât, dacă vă opriți containerul, acesta va fi eliminat automat.

Comentarii

  • Opțiunea –rm (notă: 2 liniuțe, nu una singură) este de aur!!!, sistemul meu este plin de containere oprite (moarte). –  > Por Johan Snowgoose.
JSON C11

Obțineți numele sau id-ul imaginii pe care doriți să o rulați, cu această comandă:

docker images

Comanda Docker run se utilizează în felul următor:

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

Mai jos am inclus opțiunile dispatch, name, publish, volume și restart înainte de a specifica numele sau id-ul imaginii:

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

Unde:

--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

Pentru mai multe informații, vă rugăm să consultați pagina oficială referință oficială Docker run.

farnaz jazayeri

Am avut aceeași problemă. Mi-am rulat imaginea Docker, iar aceasta a creat un container cu un anumit CONTAINER_ID. Am vrut să lucrez cu același container:

Mai întâi rulați imaginea Docker:

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

Apoi listați toate containerele pe care le-ați creat:

sudo docker ps -a

Și selectați containerul cu care doriți să lucrați (al meu este 167ddd6d7f15):

sudo docker start -ai 167ddd6d7f15

Yang Yu

Iată un exemplu pentru a rula un serviciu webdev în Docker. numele imaginii este morrisjobke/webdav. O puteți extrage din Docker Hub.

După ce rulați aceste imagini, puteți accesa WebDAV la http://localhost:8888/webdav. La nivel intern, dosarul /var/webdav este utilizat ca rădăcină WebDAV.

Puteți rula acest container în felul următor:

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

Comentarii

  • Re „run a webdev service”: Vă referiți la „a rula un serviciu WebDAV”? Sau „a rula un serviciu de dezvoltare web”? –  > Por Peter Mortensen.
Rajat Tyagi

Din moment ce ați creat o imagine din Dockerfile, imaginea nu este în prezent în stare activă. Pentru a funcționa, trebuie să rulați această imagine în interiorul unui container.

Adresa $ docker images comandă descrie câte imagini sunt disponibile în prezent în depozitul local.și

docker ps -a

arată câte containere sunt disponibile în prezent, adică lista containerelor active și ieșite.

Există două moduri de a rula imaginea în container:

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

În modul detașat:

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

În modul interactiv:

-i :Keep STDIN open even if not attached

Iată comanda de execuție Docker run

$ docker run image_name:tag_name

Pentru mai multe clarificări cu privire la Docker run, puteți vizita Referința Docker run.

Este cel mai bun material pentru a înțelege Docker.

Abhishek Patwa

Pentru a vizualiza o listă cu toate imaginile de pe gazda Docker, executați:

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

Acum puteți rula imaginea Docker ca un container în modul interactiv:

   $ docker run -it apache_snapshot /bin/bash

SAU dacă nu aveți nicio imagine la nivel local,Căutați în Docker Hub o imagine de descărcat:

    $ 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]

Extrageți imaginea Docker dintr-un depozit cu comanda docker pull:

     $ docker pull ubuntu

Rulați imaginea Docker ca un container:

     $ docker run -it ubuntu /bin/bash

Tiago Medici
$ 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*

Comentarii

  • O explicație ar fi necesară. –  > Por Peter Mortensen.
Raihanhbh

Pentru cei care au avut și ei aceeași problemă, dar au întâmpinat o eroare de genul

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"

Am adăugat un punct de intrare care a funcționat pentru mine:

docker run -it --entrypoint /bin/sh pentru imaginile fără Bash.

Exemplu (din exemplul aprobat):

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

Referință: https://gist.github.com/mitchwongho/11266726