¿Cómo ejecuto una instancia de Docker desde un DockerFile?

Resuelto Michael Joseph Aubry asked hace 8 años • 8 respuestas

Finalmente descubrí cómo poner en funcionamiento Docker.

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

Lo vinculé a una instancia de Redis, genial.

Esto es desde cero y supongo que cuando creé la instancia de Redis

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

¿Extrae la imagen de un repositorio remoto?

NodeBB ofrece un Dockerfile https://github.com/NodeBB/NodeBB/blob/master/Dockerfile . No estoy muy seguro de cómo usarlo. Supongo que de alguna manera puedo crear un entorno local llamando a este Dockerfile en mi control remoto.

¿Es esto correcto? Si es así, ¿cómo puedo crear la instancia local que apunte al control remoto?

Michael Joseph Aubry avatar Mar 18 '16 10:03 Michael Joseph Aubry
Aceptado

Descargar Dockerfiley crear una imagen de Docker

Descargue el Dockerfilea un directorio de su máquina y, desde ese mismo directorio, ejecute el siguiente docker buildcomando. Asegúrese de reemplazarlo image_namecon el nombre que le gustaría nombrar a su imagen. Las restricciones de nomenclatura de imágenes de Docker se pueden encontrar aquí.

docker build --tag 'image_name' .

Esto le dará una imagen en su máquina local desde la cual podrá crear un contenedor. Para hacerlo, deberá ejecutar el siguiente docker runcomando. Asegúrese de reemplazar image_namecon el nombre que nombró su imagen en el comando anterior.

docker run --detach 'image_name'
Andreas Wederbrand avatar Mar 18 '2016 05:03 Andreas Wederbrand

Si bien se pudieron utilizar otras respuestas, esta realmente me ayudó, así que también la pongo aquí.

De la documentación :

En lugar de especificar un contexto, puede pasar un único Dockerfile en la URL o canalizar el archivo a través de STDIN. Para canalizar un Dockerfile desde STDIN:

$ docker build - < Dockerfile

Con Powershell puedes ejecutar:

Get-Content Dockerfile | docker build -

Cuando finalice la compilación, ejecute el comando:

docker image ls

Verás algo como esto:

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

Copie su ID de IMAGEN real y luego ejecute

docker run 123456789

Donde el número al final es la identificación de imagen real del paso anterior

Si no desea recordar la identificación de la imagen, puede etiquetar su imagen mediante

docker tag 123456789 pavel/pavel-build

Que etiquetará tu imagen comopavel/pavel-build

Pavel Janicek avatar Mar 07 '2019 09:03 Pavel Janicek

No puede iniciar un contenedor desde un Dockerfile.

El proceso es el siguiente:

Dockerfile =[ docker build]=> Imagen de Docker =[ docker run]=> Contenedor de Docker

Para iniciar (o ejecutar) un contenedor necesita una imagen. Para crear una imagen, necesita crear el Dockerfile[1].

[1]: también puedes docker importuna imagen desde un tarball o nuevamente docker load.

Auzias avatar Mar 18 '2016 06:03 Auzias

La solución sencilla y sencilla es:

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

3000- puede ser cualquier puerto

a3e628814c68- resultado hash proporcionado por el comando de compilación exitosa

NOTA : debe estar dentro del directorio que contiene Dockerfile .

zhisme avatar Oct 08 '2019 09:10 zhisme

El título es lo que me trajo aquí, ejecuta un contenedor directamente desde un Dockerfile.

docker build --no-cache . |  grep "Successfully built" | sed 's/Successfully built //g' | xargs -I{} docker run {}
FreeSoftwareServers avatar Mar 10 '2021 02:03 FreeSoftwareServers