No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Docker

Curso de Docker

Guido Vilariño

Guido Vilariño

El modo interactivo

10/32
Recursos

Aportes 81

Preguntas 28

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

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

<h1>cat /etc/lsb-release (veo la versión de Linux)</h1>

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

With an Existing container

  1. start the container

    docker start id-container
    
    
  2. 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 ?

Disculpame... No te creo que este corriendo en Linux.

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

  • crear un contenedor
    $ docker run --name <nombre-contenedor> <nombre de la imagen>

Ejemplo
$ docker run contenedor-ubuntu ubuntu

  • iniciar un contenedo creado pero no activo
    $ docker start <nombre-contenedor o id-contenedor>

Ejemplo
$ sudo docker start contenedor-ubuntu

  • Entrar al bash de un contenedor
    $ docker exec -it <nombre-contenedor> bash

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

El modo interactivo

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

Para los que estan viendo el curso en una computadora con linux de 32bits

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.

Pero ¿porque no pasó nada?

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.

Status

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ó.

Command

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.

El modo interactivo

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.

Probemos ubuntu

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.

Contenedores activos

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

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:

  • it es el modo interactivo
    basicamente nos conectamos al shell del ubuntu instalado
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

Para más información leer este artículo

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:

  1. The Docker client contacted the Docker daemon.
  2. The Docker daemon pulled the “hello-world” image from the Docker Hub.
    (amd64)
  3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
  4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

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

Ver referencia

Genial!!!