Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Curso de Docker

Curso de Docker

Guido Vilariño

Guido Vilariño

El modo interactivo

10/32
Recursos

Aportes 59

Preguntas 20

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta 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

-i: indicamos que será interactivo
-t: abre el TTY (consola)

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 
    
    

0 == a todo OK
1 o cualquier número >1 == algo paso (ERROR)

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 ?

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

exit para cerrar la consola de ubuntu

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

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.

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!

Si quieres monitorear la ejecución de un comando, usa el comando: watch desde Linux/Mac;

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

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

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

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.

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

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.

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

Windows > Docker > Linux > Docker > Linux > Docker > Linux

XD

  • docker exec -it nombrecontenedor comando, para ejecutar un comando de manera iteractiva en el contenedor.

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)

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

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

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

Genial!!!