Hands on: Comandos básicos
Hello world
# 1.1. Veamos todos los comandos
$ docker
# 1.2. Descarguemos una imagen
$ docker pull hello-world
# 1.3. Listemos nuestras imágenes
$ docker images
# 1.4. Ejecutemos nuestro primer container
$ docker run hello-world
# 1.5. Listemos los containers en ejecución
$ docker ps -a
¡Felicitaciones! Ejecutaste tu primer container. Ahora... ¿qué fue lo que pasó? ¿Podés decir paso a paso que fue lo que hicimos?
Estos comandos iniciales son los que tal vez más vayas a usar e ilustran el ciclo de vida de un container básico. Vamos a hacer una lista y explicar que para que sirve cada uno de estos comandos.
- docker: Siempre que tengas alguna duda sobre los subcomandos disponibles, ejecutando "docker" sin parámetros vas a obtener una lista de todas las opciones que están disponibles para tu versión de Docker, así como una breve descripción de las mismas.
- docker pull <nombre-del-programa>: Aquí estamos haciendo uso del Docker hub. Con este comando estamos descargando la imagen de un container determinado a nuestro repositorio local.
- docker images: Usando docker images Podemos ver todas las imágenes disponibles en nuestro sistema.
- docker run <nombre-del-programa>: Ejecutamos una imagen e instanciamos un container usando el comando docker run. Dependiendo del container, podrán pasar diferentes configuraciones. Algo que veremos más adelante.
- docker ps -a: Así como en GNU/Linux listamos todos los procesos del sistema con el comando ps -a, en Docker podemos listar todos los containers con docker ps -a.
Whalesay
# 2.1. Ahora probemos un programa más divertido
$ docker run docker/whalesay cowsay "Hola Edrans!"
# 2.2. Extendamos este programa
$ mkdir mydockerbuild && cd mydockerbuild/
$ vim Dockerfile
¿Por qué no hicimos un docker pull <nombre-del-programa> primero? ¿ya teníamos este programa?
No, no teníamos este programa en nuestro repositorio local. Esto es una propiedad de docker run: si no encuentra la imagen en el repositorio local va a buscar la imagen en Docker hub, la descarga, y luego la instancia. Según la disponibilidad de Internet y de requerimentos de eficiencia va a ser más fácil contar con las imágenes en el repositorio local, pero en la mayoría de los casos solo van a usar docker run.
En este ejemplo estamos usando el editor de texto vim, pero vos podés usar el que quieras (en Play with Docker solamente tenés vim/vi, en tu compu seguramente tengas otros editores).
Creamos el archivo Dockerfile con el siguiente contenido:
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay
Cerramos y guardamos el archivo, y a continuación:
# 2.3. Creamos nuestra imagen
$ docker build -t docker-whale .
# 2.4. Comprobamos que nuestra imagen está lista para usar
$ docker images
# 2.5. Ejecutemos un container con esa imagen
$ docker run docker-whale
¿Qué fue lo que pasó ahora? ¿qué ves en tu consola?
#TODO. Explicación creación de imágenes
Vamos a subir nuestra imagen a nuestro repositorio en Docker hub.
# 2.6. Creamos una etiqueta para nuestra imagen <docker-hub-user>/<nombre-del-programa>
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker-whale latest 1704e64ef77c 3 minutes ago 277MB
$ docker tag 1704e64ef77c vkmc/docker-whale:latest
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
vkmc/docker-whale latest 7d9495d03763 5 minutes ago 273.7 MB
# 2.7. Accedemos a nuestra cuenta
$ docker login
# 2.8. Subimos nuestra imagen al repositorio (!)
$ docker push vkmc/docker-whale