После создания образа Docker из dockerfile
я вижу, что образ был создан успешно, но что мне с ним делать? Разве я не могу запустить его как контейнер?
Запустить образ Docker как контейнер
Ответы (11)
Конкретный способ его запуска зависит от того, присвоили ли вы изображению тег / имя или нет.
$ 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.
docker ps -a
, здесь бесполезны?
- person ThorSummoner; 23.08.2015
docker ps
перечисляет контейнеры, а не изображения. Если вы хотите создать изображение из контейнера, вы должны docker commit
. Вы можете использовать NAME в коммите (например, docker commit _NAME_ _imagename_
)
- person Andy; 24.08.2015
docker run -it <image>
, и он запускает оболочку по умолчанию. Хорошо сочетается, например, с альпинизмом. И, вероятно, с другими образами ОС, где точка входа не была изменена.
- person Alen Siljak; 23.04.2019
Сделайте следующие шаги:
$ docker images
Вы получите список всех локальных образов Docker с указанными тегами.
$ docker run image_name:tag_name
Если вы не указали
tag_name
, будет автоматически запущено изображение с тегом «последняя».Вместо
image_name
вы также можете указать идентификатор изображения (без имени тега).
Чтобы перечислить образы Docker
$ docker images
Если ваше приложение хочет работать с портом 80, и вы можете открыть другой порт для локальной привязки, скажем, 8080:
$ docker run -d --restart=always -p 8080:80 image_name:version
Вы можете увидеть доступные изображения, используя:
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
аргументами, поэтому, если вы остановите свой контейнер, он будет автоматически удален.
Получите имя или идентификатор изображения, которое вы хотите запустить, с помощью этой команды:
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.
У меня такая же проблема. Я запустил свой образ 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
Вот пример запуска службы веб-разработки в 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
Поскольку вы создали образ из 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 < / em>.
Это лучший материал для понимания Docker.
Чтобы просмотреть список всех образов на вашем хосте 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 из репозитория с помощью команды docker pull:
$ docker pull ubuntu
Запустите образ Docker как контейнер:
$ docker run -it ubuntu /bin/bash
Для тех, у кого была такая же проблема, но возникла такая ошибка, как
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