Comandos:
$ docker run ubuntu (corre un ubuntu pero lo deja apagado)
$ docker ps -a (lista todos los contenedores)
$ docker -it ubuntu (lo corre y entro al shell de ubuntu)
-i: interactivo
-t: abre la consola
Introducción
Todo lo que aprenderás sobre Docker
Las tres áreas en el desarrollo de software profesional
Virtualización
Preparando tu entorno de trabajo
[Bonus] Play with Docker
Qué es y cómo funciona Docker
Contenedores
Primeros pasos: hola mundo
Conceptos fundamentales de Docker: contenedores
Comprendiendo el estado de Docker
El modo interactivo
Ciclo de vida de un contenedor
Exponiendo contenedores
Datos en Docker
Bind mounts
Volúmenes
Insertar y extraer archivos de un contenedor
Imágenes
Conceptos fundamentales de Docker: imágenes
Construyendo una imagen propia
El sistema de capas
Docker como herramienta de desarrollo
Usando Docker para desarrollar aplicaciones
Aprovechando el caché de capas para estructurar correctamente tus imágenes
Docker networking: colaboración entre contenedores
Docker compose
Docker Compose: la herramienta todo en uno
Subcomandos de Docker Compose
Docker Compose como herramienta de desarrollo
Compose en equipo: override
Docker Avanzado
Administrando tu ambiente de Docker
Deteniendo contenedores correctamente: SHELL vs. EXEC
Contenedores ejecutables: ENTRYPOINT vs CMD
El contexto de build
Multi-stage build
Docker-in-Docker
Cierre
Cierre del curso
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 81
Preguntas 28
Comandos:
$ docker run ubuntu (corre un ubuntu pero lo deja apagado)
$ docker ps -a (lista todos los contenedores)
$ docker -it ubuntu (lo corre y entro al shell de ubuntu)
-i: interactivo
-t: abre la consola
Para ejecutar un contenedor activando el modo interactivo pero dejándolo en background (con el fin de acceder a él después) usamos los parámetros “d”, “i” y “t”:
docker run --name [nameContainer] -dit ubuntu
Para acceder al contenedor usamos:
docker attach [name]
Los comandos mas utiles de esta clase
yo aquí., corriendo Linux Ubuntu en Docker, que esta corriendo en Linux Ubuntu con wsl, que a su vez estoy corriendo en Windows .
es como estar en pc con un emulador de xbox, emulando nintendo 64 y jugando con control de ps3 :V
start the container
docker start id-container
execute interactively bash in the container
docker exec -it id-container bash
-i: indicamos que será interactivo
-t: abre el TTY (consola)
exit para cerrar la consola de ubuntu
Cuando listamos los contenedores (con $ docker ps
), vemos unas columnas.
CONTAINER ID
: El ID del contenedor.IMAGE
: El nombre de la imagen.COMMAND
: El proceso que ejecuta el contenedor al arrancar.CREATED
: Muestra hace cuánto fue creado el contenedor.STATUS
: El estado del proceso ejecutado por el contenedor.PORTS
: Los puertos abiertos del contenedor.NAMES
: El nombre del contenedor.El modo interactivo nos permite ingresar a la interfaz de línea de comandos (CLI) del contenedor, como si ingresáramos a un servidor a través de Secure Shell. Para iniciar un contenedor con el modo interactivo, le añadimos al comando docker run
el flag -it
. Por ejemplo: $ docker run -it ubuntu
0 == a todo OK
1 o cualquier número >1 == algo paso (ERROR)
Instalé Ubutnu 20.0 en mi Docker sobre un sistema operativo Ubutnu 20.0 jajajaja creo que es lo más inútil que se puede hacer con Docker xD Pero ya me empiezo a dar ideas, creo que podría empezar a instalarle cosas!
Muy buenas gente !
una pregunta …
El contenedor de ubunto de esta clase. al ser ubuntu, puede ser usado en produccion… osea montarde un servidor web, acceder con ssh desde fuera, abrir puertos etc ? o tiene limitaciones por ser contenedor ?
Si quieres monitorear la ejecución de un comando, usa el comando: watch desde Linux/Mac;
Confundido con Docker -it
?
Algunas respuestas en StackOverFlow
O
Segun la pagina oficial del comando run de Docker explica que el modo Iterativo puede ser acompañado con
--it
de preferencia.
docker run -i
agregar una secuencia stdin (es decir, CMD | la ejecución de la ventana acoplable funciona)
docker run -t
Asigne un par pseudo-TTY maestro / esclavo con la parte esclava vinculada al proceso en ejecución en el contenedor y la parte maestra vinculada a su emulador de terminal.
Wao!!! Quien diría que se podría hacer esto me explotara la cabeza 😮
Esta es una de las cosas que más me gusta de Platzi, el hecho de que se toman el aprendizaje como algo que es para toda la vida. Y esto se refleja en que sus cursos se van actualizando.
Para alguno que le salga el error:
<<< the input device is not a TTY. If you are using mintty, try prefixing the command with ‘winpty’ >>>
Usen el prefijo “winpty” antes del “docker-run”:
<<< winpty docker run -it ubuntu >>>
Windows > Docker > Linux > Docker > Linux > Docker > Linux
XD
10. El modo interactivo
Al crear un nuevo contenedor de ubuntu y aplicar la instrucción $ sudo docker ps -a se puede visualizar que en la columna de comandos se puede visualizar el proceso que se está ejecutando o que se ejecutó en este caso es “bin/bash” que es el shell de linux y en la columna status se muestra el exit(0) esto último quiere decir que todo fue exitoso
Crear un contenedor nuevo partiendo de una imagen de ubuntu
$ sudo docker run <nombre imagen>
Ejemplo:
$ sudo docker run ubuntu
Crear un nuevo contenedor partiendo de una imagen de ubuntu y acceder a la terminal
$ sudo docker run -it <nombre imagen>
-i: interactivo
-t: abre la consola
Ejemplo:
$ sudo docker run -it ubuntu
Para ejecutar un contenedor activando el modo interactivo, pero dejándolo en background (con el fin de acceder a él después) usamos los parámetros “d”, “i” y “t”:
$ sudo docker run --name <nombre contenedor> -itd <nombre imagen>
$ sudo docker attach <nombre contenedor>
y luego para acceder
Ejemplo:
$ sudo docker run --name my-buntu -dit ubuntu
$ sudo docker attach my-ubuntu
Visualizar la versión de linux
cat /etc/lsb-release
++Iniciar un contendor de ubuntu ya existente ++
iniciar con el id o con el nombre del contenedor
$ sudo docker start <contenedor ID OR nombre contenedor >
Iniciar bash de un contenedor ya iniciado
$ sudo docker exec -it <contenedor ID OR nombre contenedor > bash
Resumen de la clase
– crear un contenedor de la imagen ubuntu:latest, (latest es la ultima version). Crea el contenedor y solamente lo corre, como no tiene nada en ejecución finaliza o se apaga.
docker run ubuntu
docker container run ubuntu
– crear un contenedor (-i:Mantenga STDIN abierto incluso si no está conectado, -t: Asignar un pseudo-TTY.) y te arroja directamente a la terminal del contenedor que creaste.
docker run -it ubuntu
# cat /etc/lsb-release
docker container run -it ubuntu
– Abrimos otra terminal y probamos listar contenedores todos
docker ps
docker container ls -a
En linux para ver los procesos en tiempo real se puede utilizar el comando:
top
Para demostrar de otra forma que se está ejecutando un sistema ubuntu con Docker es posible ejecutar dos comandos top : uno en la máquina ubuntu interactiva creada y otro en el sistema nativo.
En el sistema creado por docker podemos ver solo dos procesos: el bash ejecutado por el modo interactivo y top. Mientras que en el sistema nativo tenemos 422 procesos.
Para relanzar un contenedor en estado detenido y no lanzar uno nuevo…
docker start -i <container_name>
docker run -it ubuntu bash
$ sudo docker run --name ubuntu-prueba ubuntu
Para activar el modo interactivo al ejecutar un contenedor usamos los parámetros it
docker run -it <name/imageID>
Comandos docker:
docker ps -a => procesos
docker inspect CONTAINERID => especificacion del contenedor
docker inspect NAME => especificaciones del contenedor
docker run --name hello-platzi hello-world => especificar el nombre al contenedor
docker rename hello-platzi hi-platzi => renombrar el contenedor
docker rm hi-platzi => Eliminar contenedor
docker run -it <image-name> <command> => Correr un contenedor en modo interactivo
Es posible que al estar corriendo docker en Windows, se encuentren con este problema cuando quieran ejecutar:
docker run -it <nombre_de_contenedor>
the input device is not a TTY. If you are using mintty, try prefixing the command with ‘winpty’
Si bien el mismo mensaje dice como resolverlo, quizás es no es tan intuitivo. A lo que se refiere esta solución es agregar el comando winpty
winpty docker run -it ubuntu
winpty es un paquete de windows para utilizar la consola de comandos y viene instalado por default en Git-Bash. Es decir, no tienen que descargar ni instalar nada. Aún así, les dejo el repo en GitHub con su correspondiente introducción: https://github.com/rprichard/winpty
Adicionalmente, encontré esta solución / explicación en el video de de ErickMD: https://www.youtube.com/watch?v=V99tXo-BUmk
Saludos!!
Un dato adicional es que cuando creas el contenedor con el comando:
docker run -it ubuntu
entras al contenedor, configuras y juegas con lo que necesites y luego te sales con exit. Pero luego quieres volver a entrar a ese conenedor. Ya no podrás hacerlo porque ese conentedor se ha quedado sin un entrypoint expresamente definido, lo que significa que al intentar volver a iniciar el contenedor docker start ubuntu este se inicia pero no se mantiene encendido porque no hay entrypoint.
Para crear un contenedor al que puedas entrar y salir todo lo que quieras se debe definir expresamente un entrypoint como /bin/bash usando por ejemplo el siguiente comando:
docker run -it --entrypoint /bin/bash --name ubuntu ubuntu:latest
docker run ubuntu
docker run -it ubuntu
--Verificar carpeta
ls -lac
--Verificar Version
ls -ld /etc/\*release\* /etc/\*version\* gcc --version
cat /etc/lsb-release
uname -a
uname -mrs
cat /etc/*release
Cuando listo mis contenedores luego de corre ubuntu en la columna COMMAND me sale “bash” y no bin/bash.
Hay algún problema con esto?
Ha estado súper genial
Docker es lo mejor!
# ejecuta una imagen de ubuntu, si no está localmente la descarga
$ docker run ubuntu
# lista los contenedores detenidos y ejecución
$ docker ps -a
# ejecuta la imagen de ubuntu e ingresa a la terminal del contenedor CLI
# -i: modo interactivo
# -t: abre el TTY (consola)
$ docker run -it ubuntu
Si alguien tiene el error:
winpty: error: cannot start 'run': Not found in PATH
Pueden ejecutar el mismo comando pero en Windows PowerShell o bien la aplicación Terminal de Windows
Excelente, hace un tiempo use Virtual Machine, pero esto realmente ponía muy lento el equipo, la diferente realmente es abismal
MY NOTES FOR THE MOD INTERACTIVE
Comandos:
$ docker run ubuntu (corre un ubuntu pero lo deja apagado)
Si estas es relazionado con el manejo de linux este al iniciar un proceso devuelve un estado donde 0 indica que todo salio bien y si es diferente significa que hubieron errores
Como corre un comando bin/bash (bash es el binario de un shell) si el shell no tiene ningún input y ningún parámetro y en el comando no tiene ese va a ser un shell que va a arrancar y como no tiene nada se va a apagar.
$ docker ps -a (lista todos los contenedores)
$ docker run -it ubuntu (lo corre y entro al shell de ubuntu)
docker it se le suele llamar el menu interactivo, con esto podremos ver todas las carpetas que nos ofrece linux por defecto
i: interactivo-t: abre la consola
<h1>cat /etc/lsb-release (veo la versión de Linux)</h1>
Probando lo de instalar ubuntu en docker podremos notar lo facil que es manejar nuestras tecnologías en el debido a su gran capacidad.
🤯🤯🤯
Y si, es un Ubuntu. Como prueba hicé update de los repos y si es, jejeje
En sí el contenedor utiliza el Kernel del SO base para poder correrlo este caso seria el Daemon Docker que se comunica con el Kernel
Descargar y tener disponible Ubuntu en tan poco tiempo ya me hace dimensionar lo fuerte que puede ser docker, es impresionante lo rápido que lo hizo, la primera vez que yo lo hice tuve que esperar meses mientras llegaba el CD de Ubuntu, solo algunos contemporáneos entenderán el chiste
El modo interactivo
Al crear un nuevo contenedor de ubuntu y aplicar la instrucción $ sudo docker ps -a se puede visualizar que en la columna de comando “bin/bash” ese es el shell de linux y en la columna status se muestra el exit(0) esto último quiere decir que todo fue exitoso
Crear un contenedor nuevo partiendo de una imagen de ubuntu, se le asigna un nombre aleatorio
$ sudo docker run <nombre imagen>
Ejemplo:
$ sudo docker run ubuntu
Crear y ejecutar un nuevo contenedor partiendo de una imagen de ubuntu. Accedemos a la terminal de forma interactiva
$ sudo docker run -it <nombre imagen>
-i: interactivo
-t: abre la consola
Ejemplo:
$ sudo docker run -it ubuntu
Para ejecutar un contenedor activando el modo interactivo, pero dejándolo en background (con el fin de acceder a él después) usamos los parámetros “d”, “i” y “t”:
$ sudo docker run --name <nombre contenedor> -itd <nombre imagen>
y luego para acceder
$ sudo docker attach <nombre contenedor>
Ejemplo:
$ sudo docker run --name my-buntu -dit ubuntu
$ sudo docker attach my-ubuntu
Visualizar la versión de linux
cat /etc/lsb-release
Iniciar un contendor de ubuntu ya existente
puede ser de dos formas con el id o con el nombre del contenedor
$ sudo docker start <id-container>
$ sudo docker start <nombre de contenedor>
Iniciar bash de un contenedor ya iniciado
$ sudo docker exec -it <id-container> bash
$ sudo docker start <nombre de contenedor>
docker run -itd ubuntu:focal bash
Creo que cambiaron los videos, al menos el formato, porque ahora si se ve la parte de abajo, genial por Platzi si asi lo hicieorn
Ejemplo
$ docker run contenedor-ubuntu ubuntu
Ejemplo
$ sudo docker start contenedor-ubuntu
Ejemplo
$ docker exec -it contenedor-ubuntu bash
Combinación de teclas para salir de un contenedor y apagarlo
crtl + c
Combinación de teclas para salir del contenedor sin apgarlo
ctrl + d
docker exec -it nombrecontenedor comando
, para ejecutar un comando de manera iteractiva en el contenedor.para los que estén haciendo este curso en 2023 usando WLS en windows el comando para verificar la distro que se está corriendo es: cat etc/os-release
How to Run Ubuntu as a Docker Container
Cuando hacemos sudo docker ps -a
y tenemos:
CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES |
---|---|---|---|---|---|---|
4d268c84f0bf | ubuntu | “/bin/bash” | 21 seconds ago | Exited (0) 20 seconds ago | reverent_hertz |
El ‘COMMAND’ es el proceso que corre el contenedor al arrancar.
Para poder hacer uso del contenedor, hacemos sudo docker run -it ubuntu
(-it es el modo interactivo)
Dejo aporte del comando “ls -lac” : en la consola se utiliza para listar los archivos y directorios en el directorio actual, con información adicional acerca de cada archivo y directorio.
Cada letra en el comando representa una opción diferente:
“l”: muestra la lista en formato largo, lo que significa que se muestran más detalles de cada archivo o directorio.
“a”: muestra todos los archivos y directorios, incluyendo aquellos que comienzan con un punto (que normalmente se ocultan).
“c”: muestra información acerca del tamaño de cada archivo o directorio, ordenado por fecha y hora de creación.
En resumen, el comando “ls -lac” muestra una lista de todos los archivos y directorios en el directorio actual, junto con detalles adicionales, como los permisos de archivo, el propietario, la fecha de creación y el tamaño en bytes.
YUUUU ya voy sintiendo el potencial de Docker !!!
Excelente esta clase!
Cuando utilizan Git Bash:
# deben de cambiar el siguiente comando
docker run -it ubuntu
# por
winpty docker run -it ubuntu
No pude ejecutar $docker run ubuntu porque me sale este error
sudo docker run -it ubuntu
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
docker: no matching manifest for linux/386 in the manifest list entries.
See 'docker run --help'.
Tuve que buscar la imagen docker compatble de 32 bits que puedes conseguir en el Sitio web de Docker Hub y descargar la imagen con
docker pull i386/ubuntu
Ya que la imagen este descargada, ahora si puedes correrla con
sudo docker run -it i386/ubuntu
Fijate que no le cambie el nombre al proceso.
para ver las imágenes descargadas usa:
sudo docker images
y para eliminarlas:
docker rmi image_name_or_id
Para las personas que estén utilizando Windows, en git bash el comando correcto es:
winpty docker run -it ubuntu
tengan en cuenta que al hacer docker run -it ubuntu se crea otro contenedor
Vamos a ejecutar un linux ubuntu desde tu maquína con docker y muy fácil!
docker run --name prueba_ubuntu ubuntu
Esperamos a que se instale, es un poco más pesado que hello-world y listo.
Veamos los procesos y veremos que sí existe y se ejecuto aunque no hizo nada.
Ejecutamos como siempre “docker ps -a”, y tenemos información interesante.
Fijate que, en estatus, tendras el código “Exited(0)”, que en caso de que estes acostumbrado a linux, sabrás que significa que el proceso ya terminó.
Docker en command te indíca que el proceso “/bin/bash”, es decir el proceso principal que nuestro contenedor ejecutaba, ya se acabo, por lo que el ciclo de vida de nuestro contenedor se acabó al no tener ningún proceso que hacer.
Vamos a ejecutar nuestro contenedor de nuevo, pero con una nueva etiqueta.
docker run -it ubuntu
Notas algo nuevo, la etiqueta it(y muchas veces llamada modo interactivo) nos permite interactuar con nuestro contenedor con una terminal bash.
Si aún no te convence, prueba algunos comandos comunes en linux:
ls -lac
Esto muestra los archivos necesarios para el sistema operativo.
cat /etc/lsb-release
Tendrás un output con toda la información sobre la distribución.
Si quieres comprobar que el contenedor efectivamente está corriendo, puedes abrir una segunda terminal, y ver con docker ps la diferencia de tener un proceso activo.
$ docker run ‘container name’ (ejecutamos un contenedor pero al no darle ninguna función se apaga tras ejecutar lo básico)
$ docker run -it ‘container name’ (ejecutamos un contenedor y podemos utilizarlo de manera interactiva)
Una locura todo lo que se puede hacer con docker 💡
Brutal!
Corre contenedor de ubuntu el modo iteractivo
Docker run -it ubuntu
Manage Docker as a non-root user
https://docs.docker.com/engine/install/linux-postinstall/
Algo muy importante a tener encuenta son los conceptos de
Shell, consola, Terminal
sudo apt update
sudo apt install podman
alias docker='podman'
Para poder correr y trabajar en una distro de linux para un servidor:
// para descargar la imagen
$ docker pull ubuntu:18.04
// para ver que contenedores están corriendo
$docker ps
// para correr el contenedor de ubuntu
$ docker run -td --name ubuntu-platzi ubuntu:18.04
// para detener el contenedor
$ docker stop ubuntu-platzi
// para levantar nuevamente el servidor
$ docker start ubuntu-platzi
// para acceder al contenedor y correr comandos dentro de este
$ docker exec -it ubuntu-platzi bash
Correr un linux ubuntu
docker run ubuntu
**Porque aparece apagado? **
Porque el comando termino “/bin/bash”. Lo que se debe de hacer es conectarnos al shell y ver si existe:
docker run -it ubuntu
me estaba saliendo un mensaje de terminal tty en windows pq estaba usando un git-bash, mejor en win usar powerShell
Si en Windows desde la Git bash tienes el siguiente error:
docker run -it ubuntu
the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty
Debes ejecutar el comando de la siguiente manera:
winpty docker run -it ubuntu
Excelente Docker.
No me imagino que cosas se podrán hacer una vez que podamos poner ese contenedor de ubuntu en la red :0
Para sistemas Windows, ejecutando los comandos en git bash, posiblemente muestre este mensaje
the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'
Traten con el siguiente comando.
winpty docker run -it ubuntu
si no les funciona el comando para saber la version de linux revisen bien los espacios o prueben con :
cat /etc/*release
Cuando estaba tratado de correr el Hello world el mismo contenedor de Hello da las instrucciones para correr el contenedor de ubuntu en modo interactivo.
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Que clase de magia es esta 😮??!!!
$ docker run ubuntu
$ docker ps -a
command es el proceso que corre el comando al arrancar
$ docker run -it ubuntu
’ -t ’ nuestro it es el modo interactivo
$ docker run ubuntu (ejecuta una versión de ubuntu previo lo descarga y lo apaga)
$ docker run -it ubuntu (ejecuta el mismo contenedor solo que esta vez deja un promt de linux)
cat /etc/lsb-release (muestra la version de linux ejecutandose)
COMMAND: Es el proceso que corre el contenedor al arrancar
STATUS: Excited (0) Significa que todo salió bien, otro número significa que hubo un error
Modo Interactivo: Para conectarse al Shell se necesita estar en modo interactivo
Una ventaja de usar Docker es poder instalar entornos aislados y evitar mil cosas en nuestro sistema que luego termina siendo un desastre.
De igual manera puedes instalar de forma rápida software que quieras probar o aprender sin afectar tu sistema, ej. si vas a aprender un linux, instalas la imagen, si vas aprender jenkins, instalas la imagen y comienzas a probar, te ahorra tiempo para que te enfoques en lo esencial y no pierdas tiempo desconfigurando tu sistema principal.
Es posible combinar comandos como el de ejecutar comandos de forma interactiva y que se elimine un contenedor al momento que finaliza su ciclo de vida. Por ejemplo:
docker run -it --rm ubuntu echo Hola mundo
Corriendo contenedor Linux RedHAT Comandos: docker pull redhat/ubi8 docker run -it redhat/ubi8 En terminal del contenedor > cat /etc/redhat-release
Corriendo contenedor Linux RedHAT
Comandos:
docker pull redhat/ubi8
docker run -it redhat/ubi8
En terminal del contenedor > cat /etc/redhat-release
Genial!!!
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.