Запустіть зображення Docker як контейнер


604

Я створив зображення Docker з dockerfile. Я бачу, що зображення було побудоване успішно, але що з ним робити? Чи не могла вона працювати як контейнер?

Відповіді:


855

Конкретний спосіб її запуску залежить від того, ви дали зображенню тег / ім’я чи ні.

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

З ім'ям (давайте скористаємося Ubuntu ):

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

Без імені, просто використовуючи ідентифікатор:

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

Для отримання додаткової інформації див. Посилання на запуск Docker .


4
Тож дружні імена, надруковані у розділі "NAME", docker ps -aтут не корисні?
ThorSummoner

11
docker psперелічує контейнери, а не зображення. Якщо ви хочете створити зображення з контейнера, ви повинні docker commit. Ви можете використовувати NAME у комітеті (наприклад docker commit _NAME_ _imagename_)
Енді,

8
@Andy Чому ми використовуємо / bin / bash в кінці? Я теж новий
Рахіль

6
@RaheelKhan Becaue ваше зображення докера потрібно щось запустити. Ви можете замінити це програмою, яку ви встановили. / bin / bash - це просто зручна оболонка, яка вже встановлена.
Райан Шиллінгтон

Якщо вам потрібно додати змінну середовища, ви можете зробити docker run -i -t -e ROOT_PASSWORD = root ubuntu: 12.04
Balaji Radhakrishnan

70

Виконайте наступні дії:

  1. $ docker images

    Ви отримаєте список усіх локальних зображень Docker із зазначеними тегами.

  2. $ docker run image_name:tag_name

    Якщо ви не вказали, tag_nameвоно автоматично запустить зображення з тегом 'остання'.

    Замість цього image_nameможна також вказати ідентифікатор зображення (без імені тега).


35
  • Щоб перелічити зображення Docker

    $ docker images
    
  • Якщо ваша програма хоче працювати з портом 80, і ви можете відкрити інший порт для прив'язки локально, скажімо, 8080:

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

21

Ви можете переглянути наявні зображення, використовуючи:

docker images

Тоді ви можете запускатись у відірваному режимі, щоб ваш термінал все ще був доступним. У вас є кілька варіантів запустити його за допомогою імені сховища (з тегом або без нього) або ідентифікатора зображення:

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

Потім ви можете перевірити, чи використовується ваш контейнер

docker ps

docker psнадає ідентифікатор контейнера Ви можете використовувати його або просто 2/3 перших символів, щоб перейти у ваш контейнер, використовуючи:

docker exec -it container_id /bin/bash

І ви можете зупинити це за допомогою docker stop container_idта docker rm container_id.

Ви також можете запустити контейнер з -rmаргументами, тож якщо ви зупините контейнер, він автоматично буде видалений.


1
Варіант --rm (зауважте: 2 тире не одиночний) - це золото !!!, у мене система засмічена зупиненими (мертвими) контейнерами.
Йохан Снігуз

13

Отримайте ім'я або ідентифікатор зображення, яке ви хочете запустити, за допомогою цієї команди:

docker images

Команда запуску Docker використовується наступним чином:

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

Нижче я включив параметри відправки, імені, публікації, обсягу та перезапуску перед тим, як вказати ім'я зображення або ідентифікатор:

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

Де:

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

Для отримання додаткової інформації ознайомтесь з офіційною довідкою про виконання програми Docker .


5

Ось приклад запуску послуги webdev в Docker. Назва зображення - morrisjobke / webdav . Ви можете витягнути його з Docker Hub .

Після запуску цих зображень ви можете отримати доступ до екземпляра WebDAV за адресою http://localhost:8888/webdav. Внутрішня папка /var/webdavвикористовується як корінь WebDAV.

Ви можете запустити цей контейнер наступним чином:

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

Повторно "запустити послугу webdev" : Ви маєте на увазі "запустити послугу WebDAV" ? Або "запустити послугу веб-розробки" ?
Пітер Мортенсен

5

У мене була така ж проблема. Я запустив своє зображення Docker, і він створив контейнер із певним CONTAINER_ID. Я хотів працювати з тим же контейнером:

Спочатку запустіть своє зображення Docker:

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

Потім перерахуйте всі зроблені вами контейнери:

sudo docker ps -a

І виберіть контейнер, з яким потрібно працювати (мій 167ddd6d7f15):

sudo docker start -ai 167ddd6d7f15

4

Оскільки ви створили зображення з Dockerfile, воно наразі не знаходиться в активному стані. Для роботи вам потрібно запустити це зображення всередині контейнера.

$ docker imagesКоманда описує , скільки зображень в даний час доступні в локальному сховищі. і

docker ps -a

показує, скільки контейнерів на даний момент є доступним, тобто список активних та вихідних контейнерів.

Існує два способи запуску зображення в контейнері:

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

У відірваному режимі:

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

В інтерактивному режимі:

-i :Keep STDIN open even if not attached

Ось команда запуску Docker

$ docker run image_name:tag_name

Щоб отримати додаткові роз'яснення щодо запуску Docker, ви можете відвідати довідку про виконання програми Docker .

Це найкращий матеріал для розуміння Докера.


2

Щоб переглянути список усіх зображень на хості Docker, запустіть:

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

Тепер ви можете запустити зображення Docker як контейнер в інтерактивному режимі:

   $ docker run -it apache_snapshot /bin/bash

АБО якщо у вас немає локальних зображень, знайдіть Docker Hub для завантаження зображення:

    $ 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 із сховища за допомогою команди pull docker:

     $ docker pull ubuntu

Запустіть зображення Docker як контейнер:

     $ docker run -it ubuntu /bin/bash


-1

Для тих, хто мав таку ж проблему, але зіткнувся з помилкою

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"

Я додав пункт входу, який працював для мене:

docker run -it --entrypoint /bin/sh для зображень без Bash.

Приклад (із затвердженого прикладу):

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

Довідка: https://gist.github.com/mitchwongho/11266726

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.