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 鈥榳inpty鈥 >>>

Usen el prefijo 鈥渨inpty鈥 antes del 鈥渄ocker-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 鈥渂in/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 鈥渄鈥, 鈥渋鈥 y 鈥渢鈥:

$ 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 鈥榳inpty鈥

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 鈥渂ash鈥 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 鈥渂in/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 鈥渄鈥, 鈥渋鈥 y 鈥渢鈥:

$ 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 鈥楥OMMAND鈥 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 鈥渓s -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:

鈥渓鈥: muestra la lista en formato largo, lo que significa que se muestran m谩s detalles de cada archivo o directorio.
鈥渁鈥: muestra todos los archivos y directorios, incluyendo aquellos que comienzan con un punto (que normalmente se ocultan).
鈥渃鈥: muestra informaci贸n acerca del tama帽o de cada archivo o directorio, ordenado por fecha y hora de creaci贸n.
En resumen, el comando 鈥渓s -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 鈥渄ocker ps -a鈥, y tenemos informaci贸n interesante.

Status

Fijate que, en estatus, tendras el c贸digo 鈥淓xited(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 鈥榗ontainer name鈥 (ejecutamos un contenedor pero al no darle ninguna funci贸n se apaga tras ejecutar lo b谩sico)
$ docker run -it 鈥榗ontainer 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 鈥渉ello-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!!!