Руководство. Создание приложения Docker с помощью Visual Studio Code

Это руководство является началом четырех частей серии, введя Docker для использования с Visual Studio Code (VS Code). Вы узнаете, как создавать и запускать контейнеры Docker, сохранять данные и управлять несколькими контейнерами с помощью Docker Compose.

VS Code предлагает расширение Docker, которое позволяет работать с локальной службой Docker Desktop. Docker Desktop работает на компьютере и управляет локальными контейнерами, которые являются компактными виртуализированными средами, предоставляющими платформу для создания и запуска приложений. Контейнерам не требуется объем и издержки полной операционной системы.

В первом учебнике вы узнаете, как:

  • Создайте контейнер Docker.
  • Сборка образа контейнера.
  • Запуск контейнера приложения.

Необходимые компоненты

В этом руководстве работает с Windows 10 или более поздней версии и Docker Desktop, настроенными для использования контейнеров Linux.

Создание контейнера

Контейнер — это процесс на компьютере. Он изолирован от всех других процессов на главном компьютере. Для такой изоляции используются пространства имен ядра и группы управления.

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

Установив расширение Docker для VS Code, можно приступить к работе с контейнерами в VS Code. Помимо использования контекстных меню в области Docker, можно выбрать Терминал>Новый терминал, чтобы открыть окно командной строки. Кроме того, команды можно выполнять в окне Bash. Если не указано иное, в окне Bash или в терминале VS Code можно выполнять любую команду, помеченную как Bash.

  1. Установите для Docker режим контейнера Linux. Чтобы переключиться на контейнеры Linux, если вы в настоящее время настроены на контейнеры Windows, щелкните правой кнопкой мыши значок Docker в области системы во время работы Docker Desktop и выберите "Переключиться на контейнеры Linux".

  2. В VS Code выберите Терминал>Новый терминал.

  3. Выполните эту команду в окне терминала или в окне Bash.

    docker run -d -p 80:80 docker/getting-started
    

    Эта команда содержит следующие параметры:

    • -d — запуск контейнера в отключенном режиме (в фоновом окне).
    • -p 80:80 — сопоставление порта 80 узла с портом 80 в контейнере.
    • docker/getting-started — указывает образ, который будет использоваться.

    Совет

    Для сокращения полной команды можно использовать однозначные флаги. Например, приведенная выше команда может быть написана следующим образом:

    docker run -dp 80:80 docker/getting-started
    
  4. В VS Code щелкните значок Docker слева, чтобы просмотреть расширение Docker.

    Screenshot shows the Docker extension with the docker/getting-started tutorial running.

    Расширение Docker для VS Code отображает контейнеры, запущенные на компьютере. Вы можете получить доступ к журналам контейнеров и управлять жизненным циклом контейнеров, например останавливать или удалять их.

    Имя контейнера, modest_shockley в этом примере, создается случайным образом. У вашего контейнера будет другое имя.

  5. Щелкните правой кнопкой мыши docker/getting-started, чтобы открыть контекстное меню. Выберите Открыть в браузере.

    Или откройте браузер и введите http://localhost/tutorial/.

    Вы увидите размещенную локально страницу о DockerLabs.

  6. Щелкните правой кнопкой мыши docker/getting-started, чтобы открыть контекстное меню. Выберите Удалить, чтобы удалить этот контейнер.

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

    docker ps
    

    Затем остановите и удалите контейнер:

    docker stop <container-id>
    docker rm <container-id>
    
  7. Обновите свой браузер. Страница "Начало работы", которую вы видели недавно, больше не отображается.

Создание образа контейнера для приложения

В этом учебнике используется простое приложение Todo.

Screenshot shows the sample application with several items added and a text box and button to add new items.

Приложение позволяет создавать рабочие элементы и помечать их как завершенные или удалять их.

Чтобы создать приложение, создайте Dockerfile. Dockerfile — это текстовый сценарий инструкций, который используется для создания образа контейнера.

  1. Перейдите в репозиторий Учебник по началу работы с Docker, а затем выберите Код>Скачать ZIP-файл. Извлеките содержимое в локальную папку.

    Screenshot shows part of the Github site, with the green Code button and Download ZIP option highlighted.

  2. В VS Code выберите Файл>Открыть папку. Перейдите в папку app в извлеченном проекте и откройте ее. Вы увидите файл с именем package.json и две папки с именами src и spec.

    Screenshot of Visual Studio Code showing the package.json file open with the app loaded.

  3. Создайте файл с именем Dockerfile в той же папке, где находится файл package.json со следующим содержимым.

    FROM node:20-alpine
    RUN apk add --no-cache python3 g++ make
    WORKDIR /app
    COPY . .
    RUN yarn install --production
    CMD ["node", "/app/src/index.js"]
    

    Примечание.

    Убедитесь, что файл не имеет расширения файла, например .txt.

  4. В проводнике в левой части в VS Code щелкните правой кнопкой мыши Dockerfile и выберите пункт Собрать образ. В поле ввода текста введите getting-started в качестве тега для образа.

    Тег — это понятное имя для образа.

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

    docker build -t getting-started .
    

    Примечание.

    Чтобы выполнить эту команду, во внешнем окне Bash перейдите в папку app с параметром Dockerfile.

Вы создали образ контейнера с помощью Dockerfile. Возможно, вы заметили, что было скачано много слоев. Dockerfile начинается с образа node:20-alpine. Если этот образ еще не был на компьютере, этот образ должен быть скачан.

После скачивания образа Dockerfile копирует ваше приложение и использует yarn для установки зависимостей приложения. Значение CMD в Dockerfile указывает команду по умолчанию, которую необходимо выполнить при запуске контейнера из этого образа.

. в конце команды docker build указывает, что Docker должен искать Dockerfile в текущем каталоге.

Запуск контейнера приложения

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

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

    docker run -dp 3000:3000 getting-started
    

    Параметр -d указывает, что вы запускаете контейнер в отключенном режиме в фоне. Значение -p создает сопоставление между портом узла 3000 и портом контейнера 3000. Без сопоставления портов вы не сможете получить доступ к приложению.

  2. Через несколько секунд в VS Code в области Docker в разделе КОНТЕЙНЕРЫ щелкните правой кнопкой мыши getting-started и выберите команду Открыть в браузере. Или перейдите в веб-браузере по адресу http://localhost:3000.

    Вы должны увидеть выполняющееся приложение.

    Screenshot shows the sample app with no items and the text No items yet Add one above.

  3. Добавьте элемент или два, чтобы проверить, работает ли оно должным образом. Элементы можно пометить как завершенные и удалить элементы. Внешний интерфейс успешно сохраняет элементы в серверной части.

Следующие шаги

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

Чтобы продолжить работу с этой серией учебников, оставьте все настройки, сделанные на данный момент. Затем попробуйте часть II этой серии:

Ниже приведены некоторые ресурсы, которые могут быть полезны: