Introducción
Docker ha revolucionado la forma en que los desarrolladores construyen, empaquetan y despliegan aplicaciones. En este tutorial, aprenderás cómo ejecutar un programa Go dentro de un contenedor Docker, asegurando un entorno de ejecución consistente y confiable.
Introducción a Docker
Docker es una plataforma de contenedorización popular que permite a los desarrolladores empaquetar sus aplicaciones y todas sus dependencias en un solo contenedor portátil. Este contenedor puede desplegarse y ejecutarse fácilmente en cualquier sistema con Docker instalado, independientemente del sistema operativo subyacente o la infraestructura.
¿Qué es Docker?
Docker es una plataforma de software de código abierto que automatiza el despliegue, el escalado y la gestión de aplicaciones dentro de contenedores de software. Los contenedores son paquetes de software ligeros, autónomos y ejecutables que incluyen todo lo necesario para ejecutar una aplicación, incluyendo el código, el tiempo de ejecución, las herramientas del sistema y las bibliotecas.
¿Por qué usar Docker?
Docker ofrece varios beneficios para desarrolladores y profesionales de TI:
- Consistencia: Los contenedores Docker garantizan que las aplicaciones se ejecuten de la misma manera, independientemente de la infraestructura subyacente.
- Portabilidad: Los contenedores Docker se pueden mover fácilmente entre diferentes entornos, como desarrollo, pruebas y producción.
- Escalabilidad: Docker facilita el escalado de aplicaciones hacia arriba o hacia abajo, según la carga de trabajo.
- Eficiencia: Los contenedores Docker son ligeros y utilizan menos recursos que las máquinas virtuales tradicionales, lo que los hace más eficientes de ejecutar.
Introducción a Docker
Para comenzar con Docker, necesitarás instalar el motor Docker en tu sistema. Puedes descargar e instalar Docker desde el sitio web oficial de Docker (https://www.docker.com/get-started). Una vez que tengas Docker instalado, puedes comenzar a crear y ejecutar contenedores Docker.
graph TD
A[Instalar Docker] --> B[Crear Imagen Docker]
B --> C[Ejecutar Contenedor Docker]
C --> D[Desplegar Aplicación]
Tabla 1: Comandos de la CLI de Docker
| Comando | Descripción |
|---|---|
docker build |
Construir una imagen Docker desde un Dockerfile |
docker run |
Ejecutar un contenedor Docker |
docker ps |
Listar contenedores Docker en ejecución |
docker images |
Listar imágenes Docker |
docker push |
Empujar una imagen Docker a un repositorio |
docker pull |
Extraer una imagen Docker de un repositorio |
Ahora que tienes una comprensión básica de Docker, pasemos a la construcción de una aplicación Go dentro de un contenedor Docker.
Creando una Aplicación Go en Docker
Creando una Aplicación Go
Empecemos creando una sencilla aplicación Go. Crea un nuevo archivo llamado main.go con el siguiente contenido:
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, LabEx!")
})
fmt.Println("Iniciando servidor en :8080")
http.ListenAndServe(":8080", nil)
}
Esta aplicación Go escucha en el puerto 8080 y responde con el mensaje "¡Hola, LabEx!" cuando se realiza una solicitud a la URL raíz (/).
Creando una Imagen Docker
Para ejecutar esta aplicación Go en un contenedor Docker, necesitamos crear una imagen Docker. Crea un nuevo archivo llamado Dockerfile con el siguiente contenido:
FROM golang:1.18-alpine
WORKDIR /app
COPY . .
RUN go build -o main .
CMD ["./main"]
Este Dockerfile:
- Utiliza la imagen oficial
golang:1.18-alpinecomo imagen base. - Establece el directorio de trabajo en
/app. - Copia el código de la aplicación Go al contenedor.
- Compila la aplicación Go y crea un ejecutable llamado
main. - Define el comando para ejecutar el ejecutable
maincuando se inicia el contenedor.
Construyendo la Imagen Docker
Para construir la imagen Docker, ejecuta el siguiente comando en el mismo directorio que el Dockerfile:
docker build -t my-go-app .
Este comando construye una imagen Docker con la etiqueta my-go-app.
Verificando la Imagen Docker
Puedes listar las imágenes Docker disponibles en tu sistema ejecutando el siguiente comando:
docker images
Debes ver la imagen my-go-app en la lista.
Ahora que tenemos una imagen Docker para nuestra aplicación Go, ejecutémosla en un contenedor Docker.
Ejecutando la Aplicación Go en Docker
Ejecutando el Contenedor Docker
Para ejecutar la aplicación Go en un contenedor Docker, utiliza el siguiente comando:
docker run -p 8080:8080 my-go-app
Este comando:
- Ejecuta la imagen Docker
my-go-app. - Mapea el puerto 8080 del contenedor al puerto 8080 del host, lo que te permite acceder a la aplicación desde tu máquina local.
graph TD
A[Host Docker] --> B[Contenedor Docker]
B --> C[Aplicación Go]
A --"HTTP 8080"--> B
Verificando el Contenedor en Ejecución
Puedes listar los contenedores Docker en ejecución con el siguiente comando:
docker ps
Debes ver el contenedor my-go-app en la lista.
Accediendo a la Aplicación Go
Para acceder a la aplicación Go que se ejecuta en el contenedor Docker, abre un navegador web y navega a http://localhost:8080. Deberías ver el mensaje "¡Hola, LabEx!" mostrado.
Deteniendo el Contenedor Docker
Para detener el contenedor Docker en ejecución, utiliza el siguiente comando:
docker stop <container_id>
Reemplaza <container_id> con el ID del contenedor en ejecución, que puedes encontrar ejecutando el comando docker ps.
Conclusión
En este tutorial, has aprendido a:
- Crear una sencilla aplicación Go.
- Construir una imagen Docker para la aplicación Go.
- Ejecutar la aplicación Go en un contenedor Docker.
- Acceder a la aplicación Go que se ejecuta en el contenedor Docker.
Al contenedorizar tus aplicaciones Go con Docker, puedes asegurar un despliegue consistente y confiable en diferentes entornos, facilitando el desarrollo, las pruebas y el despliegue de tus aplicaciones.
Resumen
Al finalizar este tutorial, tendrás una comprensión sólida de cómo construir una aplicación Go dentro de un contenedor Docker y ejecutarla, facilitando la distribución y el despliegue de tu software en diferentes entornos. La tecnología de contenedorización de Docker simplifica el proceso de desarrollo y despliegue, permitiéndote concentrarte en escribir un gran código.



