Как запустить экземпляр docker из DockerFile?

Я наконец понял, как настроить докер и запустить его.

docker run --name my-forum-nodebb --link my-forum-redis:redis -p 80:80 -p 443:443 -p 4567:4567 -P -t -i nodebb/docker:ubuntu

Я связал это с экземпляром Redis, круто.

Это с нуля, и я предполагаю, что когда я создал экземпляр Redis

docker run --name my-forum-redis -d -p 6379:6379 nodebb/docker:ubuntu-redis

это тянет изображение с удаленного репо?

NodeBB предлагает Dockerfile https://github.com/NodeBB/NodeBB/blob/master/Dockerfile. Я не совсем уверен, как его использовать. Я предполагаю, что я могу каким-то образом создать локальную среду, вызывая этот Dockerfile на своем пульте.

Это правильно? Если так, как я могу создать локальный экземпляр, указывающий на удаленный?

Ответ 1

Загрузите файл и из той же директории docker build -t <nodebb> .

Это даст вам изображение на вашем локальном компьютере с именем nodebb, с которого вы можете запустить контейнер с помощью docker run -d nodebb

Ответ 2

Вы не можете запустить контейнер из файла Docker.

Процесс выполняется следующим образом:

Dockerfile = [docker build] = > Изображение докеров = [docker run] = > Контейнер докеров

Чтобы запустить (или запустить) контейнер, вам понадобится изображение. Чтобы создать изображение, вам нужно создать файл Dockerfile [1].

[1]: вы можете также docker import изображение из tarball или снова docker load.

Ответ 3

Хотя приведенные выше ответы были пригодны для использования, это действительно помогло мне, поэтому я добавлю их и здесь.

Из документации:

Вместо указания контекста вы можете передать один Dockerfile в URL или передать файл через STDIN. Для передачи Dockerfile из STDIN:

$ docker build - < Dockerfile

С помощью Powershell для Windows вы можете запустить:

Get-Content Dockerfile | docker build -

Когда сборка будет завершена, выполните команду:

docker image ls

Вы увидите что-то вроде этого:

REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
<none>                     <none>              123456789        39 seconds ago      422MB

Скопируйте свой фактический ID ИЗОБРАЖЕНИЯ и запустите

docker run 123456789

Где число в конце - это фактический идентификатор изображения с предыдущего шага

Если вы не хотите запоминать идентификатор изображения, вы можете пометить его как.

docker tag 123456789 pavel/pavel-build

Который пометит ваше изображение как pavel/pavel-build

Ответ 4

Я рекомендую создать requirements.txt файл. Внутри вы можете объявить пакеты для установки.

В Dockerfile добавьте эту строку:

RUN pip install -r requirements.txt

Ответ 5

Простое и простое решение:

docker build .
=> ....
=> Successfully built a3e628814c67
docker run -p 3000:3000 a3e628814c67

3000 - может быть любой порт

a3e628814c68 - результат хеширования, полученный командой успешной сборки