Docker görüntüsünü kapsayıcı olarak çalıştırma


604

Bir dockerfile'dan bir Docker görüntüsü oluşturdum. Görüntünün başarıyla oluşturulduğunu görüyorum, ancak bununla ne yapacağım? Konteyner olarak çalışamaz mı?

Yanıtlar:


855

Çalıştırmanın belirli yolu, resme bir etiket / ad verip vermediğinize bağlıdır.

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

Bir adla (haydi Ubuntu kullanalım ):

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

Bir ad olmadan, sadece kimliği kullanarak:

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

Daha fazla bilgi için Docker çalışma referansına bakın .


4
Peki 'NAME' altında basılan insan dostu isimler docker ps -aburada kullanışlı değil mi?
ThorSummoner

11
docker psResimleri değil kapları listeler. Bir kaptan resim oluşturmak istiyorsanız, yapmanız gerekir docker commit. NAME adlı kişiyi taahhütte kullanabilirsiniz (örn. docker commit _NAME_ _imagename_)
Andy

8
@Andy Neden sonunda / bin / bash kullanıyoruz? Ben de
yeniyim

6
@RaheelKhan Docker görüntünüzün çalışması için bir şeye ihtiyaç duyduğu için. Bunu, yüklediğiniz bir programla değiştirebilirsiniz. / bin / bash zaten kurulu olan kullanışlı bir kabuktur.
Ryan Shillington

Bir ortam değişkeni eklemeniz gerekiyorsa docker run -i -t -e ROOT_PASSWORD = root ubuntu: 12.04
Balaji Radhakrishnan

70

Aşağıdaki adımları uygulayın:

  1. $ docker images

    Etiketleri belirtilen tüm yerel Docker görüntülerinin bir listesini alırsınız.

  2. $ docker run image_name:tag_name

    Belirtmediyseniz tag_name, otomatik olarak 'en son' etiketli bir resim çalıştırılır.

    Bunun yerine, image_namebir resim kimliği de belirtebilirsiniz (etiket_adı yok).


35
  • Docker görüntülerini listelemek için

    $ docker images
    
  • Uygulamanız bağlantı noktası 80 ile çalışmak istiyorsa ve yerel olarak bağlanmak için farklı bir bağlantı noktası gösterebilirsiniz, örneğin 8080:

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

21

Kullanılabilir görüntülerinizi aşağıdakileri kullanarak görebilirsiniz:

docker images

Ardından, terminalinizin hala kullanılabilir olması için ayrılmış modda çalışabilirsiniz. Depo adı (etiketli veya etiketsiz) veya resim kimliği kullanarak çalıştırmak için birkaç seçeneğiniz vardır:

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

Ardından konteynerinizin çalışıp çalışmadığını kontrol edebilirsiniz.

docker ps

docker pssize bir kapsayıcı kimliği verir. Aşağıdakileri kullanarak kabınıza gitmek için onu veya yalnızca 2/3 ilk karakterini kullanabilirsiniz:

docker exec -it container_id /bin/bash

Ve kullanarak durdurabilirsiniz docker stop container_idve docker rm container_id.

Kapsayıcınızı -rmbağımsız değişkenlerle de çalıştırabilirsiniz, böylece kapsayıcıyı durdurursanız otomatik olarak kaldırılır.


1
--Rm (not: 2 tire tek değil) seçeneği altındır !!!, sistemim durdurulmuş (ölü) kaplarla doludur.
Johan Snowgoose

13

Bu komutla çalıştırmak istediğiniz resmin adını veya kimliğini alın:

docker images

Docker çalıştırma komutu aşağıdaki şekilde kullanılır:

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

Aşağıda görüntü adını veya kimliğini belirtmeden önce gönderme, ad, yayınlama, birim ve yeniden başlatma seçeneklerini ekledim:

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

Nerede:

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

Daha fazla bilgi için lütfen resmi Docker çalıştırma referansına bakın .


5

Docker'da bir webdev hizmeti çalıştırmak için bir örnek. Resmin adı morrisjobke / webdav . Docker Hub'dan çekebilirsiniz .

Bu görüntüleri çalıştırdıktan sonra, adresindeki WebDAV örneğine erişebilirsiniz http://localhost:8888/webdav. Dahili olarak klasör /var/webdavWebDAV kökü olarak kullanılır.

Bu kapsayıcıyı aşağıdaki şekilde çalıştırabilirsiniz:

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

Yeniden "bir webdev hizmeti çalıştırın" : "Bir WebDAV hizmeti çalıştırın" demek ? Veya "bir web geliştirme hizmeti yürütmek" mi?
Peter Mortensen

5

Ben de aynı problemi yaşadım. Docker görüntümü çalıştırdım ve belirli bir CONTAINER_ID içeren bir kap oluşturdu. Aynı konteynerle çalışmak istedim:

Önce Docker resminizi çalıştırın:

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

Ardından, yaptığınız tüm kapları listeleyin:

sudo docker ps -a

Ve çalışmak istediğiniz konteyneri seçin (benimki 167ddd6d7f15):

sudo docker start -ai 167ddd6d7f15

4

Dockerfile öğesinden bir görüntü oluşturduğunuzdan, görüntü şu anda etkin durumda değil. Çalışmak için bu görüntüyü bir kabın içinde çalıştırmanız gerekir.

$ docker imagesKomut birçok görseller şu yerel depoda mevcuttur açıklamaktadır. ve

docker ps -a

mevcut durumda kaç konteyner bulunduğunu, yani aktif ve çıkışlı konteynerlerin listesini gösterir.

Görüntüyü kapta çalıştırmanın iki yolu vardır:

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

Müstakil modda:

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

Etkileşimli modda:

-i :Keep STDIN open even if not attached

İşte Docker çalıştırma komutu

$ docker run image_name:tag_name

Docker çalıştırması hakkında daha fazla açıklama için Docker çalıştırma referansını ziyaret edebilirsiniz .

Docker'ı anlamak için en iyi malzeme.


2

Docker ana makinenizdeki tüm görüntülerin bir listesini görüntülemek için şunu çalıştırın:

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

Artık Docker görüntüsünü etkileşimli modda bir kapsayıcı olarak çalıştırabilirsiniz:

   $ docker run -it apache_snapshot /bin/bash

VEYA yerel olarak hiçbir resminiz yoksa indirmek için bir resim için Docker Hub'da arama yapın:

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

Docker çekme komutunu kullanarak Docker görüntüsünü bir havuzdan çekin:

     $ docker pull ubuntu

Docker görüntüsünü kapsayıcı olarak çalıştırın:

     $ 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
Bir açıklama yapılabilir.
Peter Mortensen

-1

Aynı sorunu yaşayan, ancak benzer bir hatayla karşılaşanlar için

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"

Benim için işe yarayan bir giriş noktası ekledim:

docker run -it --entrypoint /bin/sh Bash olmayan görüntüler için.

Örnek (onaylanmış örnekten):

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

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.