Как запустить программу Go, созданную в Docker контейнере

DockerBeginner
Практиковаться сейчас

Введение

Docker произвел революцию в том, как разработчики создают, упаковывают и развертывают приложения. В этом руководстве вы узнаете, как запустить программу Go внутри контейнера Docker, обеспечивая согласованную и надёжную среду выполнения.

Введение в Docker

Docker — это популярная платформа контейнеризации, позволяющая разработчикам упаковывать свои приложения и все зависимости в единый, переносимый контейнер. Этот контейнер затем легко можно развернуть и запустить на любой системе, на которой установлен Docker, независимо от базовой операционной системы или инфраструктуры.

Что такое Docker?

Docker — это открытая платформа программного обеспечения, которая автоматизирует развертывание, масштабирование и управление приложениями внутри контейнеров. Контейнеры — это лёгкие, автономные, исполняемые пакеты программного обеспечения, включающие всё необходимое для запуска приложения, включая код, среду выполнения, системные инструменты и библиотеки.

Зачем использовать Docker?

Docker предоставляет ряд преимуществ для разработчиков и ИТ-специалистов:

  1. Согласованность: Контейнеры Docker гарантируют, что приложения будут работать одинаково независимо от базовой инфраструктуры.
  2. Переносимость: Контейнеры Docker легко перемещаются между различными средами, такими как разработка, тестирование и производство.
  3. Масштабируемость: Docker упрощает масштабирование приложений вверх или вниз в зависимости от рабочей нагрузки.
  4. Эффективность: Контейнеры Docker лёгкие и используют меньше ресурсов, чем традиционные виртуальные машины, что делает их более эффективными в работе.

Начало работы с Docker

Для начала работы с Docker вам необходимо установить движок Docker на вашей системе. Вы можете загрузить и установить Docker с официального сайта Docker (https://www.docker.com/get-started). После установки Docker вы можете начать создание и запуск контейнеров Docker.

graph TD
    A[Установить Docker] --> B[Создать Docker образ]
    B --> C[Запустить Docker контейнер]
    C --> D[Развернуть приложение]

Таблица 1: Команды Docker CLI

Команда Описание
docker build Сборка Docker образа из Docker файла
docker run Запуск Docker контейнера
docker ps Список запущенных Docker контейнеров
docker images Список Docker образов
docker push Загрузка Docker образа в репозиторий
docker pull Скачивание Docker образа из репозитория

Теперь, когда у вас есть базовое понимание Docker, перейдём к созданию приложения Go в Docker контейнере.

Создание приложения Go в Docker

Создание приложения Go

Начнём с создания простого приложения Go. Создайте новый файл с именем main.go и следующим содержимым:

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, LabEx!")
    })

    fmt.Println("Запуск сервера на порту :8080")
    http.ListenAndServe(":8080", nil)
}

Это приложение Go прослушивает порт 8080 и отвечает сообщением "Hello, LabEx!" при запросе к корневому URL (/).

Создание Docker образа

Для запуска этого приложения Go в контейнере Docker нам нужно создать Docker образ. Создайте новый файл с именем Dockerfile и следующим содержимым:

FROM golang:1.18-alpine
WORKDIR /app
COPY . .
RUN go build -o main .
CMD ["./main"]

Этот Dockerfile:

  1. Использует официальный образ golang:1.18-alpine в качестве базового.
  2. Устанавливает рабочую директорию в /app.
  3. Копирует код приложения Go в контейнер.
  4. Сборка приложения Go и создание исполняемого файла с именем main.
  5. Устанавливает команду для запуска исполняемого файла main при запуске контейнера.

Создание Docker образа

Для создания Docker образа выполните следующую команду в той же директории, что и Dockerfile:

docker build -t my-go-app .

Эта команда создаёт Docker образ с тэгом my-go-app.

Проверка Docker образа

Вы можете перечислить доступные Docker образы на вашей системе, выполнив следующую команду:

docker images

Вы должны увидеть образ my-go-app в списке.

Теперь, когда у нас есть Docker образ для нашего приложения Go, давайте запустим его в Docker контейнере.

Запуск приложения Go в Docker

Запуск Docker контейнера

Для запуска приложения Go в Docker контейнере используйте следующую команду:

docker run -p 8080:8080 my-go-app

Эта команда:

  1. Запускает Docker образ my-go-app.
  2. Отображает порт 8080 контейнера на порт 8080 хоста, позволяя получить доступ к приложению с вашего локального компьютера.
graph TD
    A[Хост Docker] --> B[Контейнер Docker]
    B --> C[Приложение Go]
    A --"HTTP 8080"--> B

Проверка запущенного контейнера

Вы можете перечислить запущенные Docker контейнеры, выполнив следующую команду:

docker ps

Вы должны увидеть контейнер my-go-app в списке.

Доступ к приложению Go

Чтобы получить доступ к приложению Go, запущенному в Docker контейнере, откройте веб-браузер и перейдите по адресу http://localhost:8080. Вы должны увидеть сообщение "Hello, LabEx!".

Остановка Docker контейнера

Чтобы остановить запущенный Docker контейнер, используйте следующую команду:

docker stop <container_id>

Замените <container_id> на идентификатор запущенного контейнера, который можно найти, выполнив команду docker ps.

Заключение

В этом руководстве вы узнали, как:

  1. Создать простое приложение Go.
  2. Собрать Docker образ для приложения Go.
  3. Запустить приложение Go в Docker контейнере.
  4. Получить доступ к приложению Go, запущенному в Docker контейнере.

Контейнеризация приложений Go с помощью Docker обеспечивает согласованное и надёжное развертывание в различных средах, что упрощает разработку, тестирование и развертывание ваших приложений.

Резюме

К концу этого руководства вы получите чёткое представление о том, как создать приложение Go в Docker контейнере и запустить его, что упростит распространение и развертывание вашего программного обеспечения в различных средах. Технология контейнеризации Docker упрощает процесс разработки и развертывания, позволяя сосредоточиться на написании качественного кода.