¿Cómo ejecuto una instancia de Docker desde un DockerFile?
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?
Descargar Dockerfile
y crear una imagen de Docker
Descargue el Dockerfile
a un directorio de su máquina y, desde ese mismo directorio, ejecute el siguiente docker build
comando. Asegúrese de reemplazarlo image_name
con 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 run
comando. Asegúrese de reemplazar image_name
con el nombre que nombró su imagen en el comando anterior.
docker run --detach 'image_name'
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
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 import
una imagen desde un tarball o nuevamente docker load
.
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 .
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 {}