Учебник. Создание приложения Docker и предоставление к нему общего доступа с помощью Visual Studio Code
Этот учебник является первым в серии из трех частей, посвященной использованию Docker с помощью Visual Studio Code (VS Code). Вы узнаете, как создавать и запускать контейнеры, сохранять данные и развертывать контейнерные приложения в Azure.
Из этого первого учебника вы узнаете, как создавать и развертывать приложения Docker. Затем вы можете обновить контейнерное приложение и предоставить к нему общий доступ.
Контейнеры — это компактные виртуализованные окружения, такие как виртуальные машины, которые предоставляют платформу для создания и запуска приложений. Контейнерам не требуется объем и издержки полной операционной системы. Docker — это сторонний поставщик стандартных контейнеров и система управления контейнерами.
Служба Docker Desktop запускается на компьютере и используется для управления локальными контейнерами. Средства разработки, такие как Visual Studio и VS Code, предлагают расширения, позволяющие работать с локальной службой Docker Desktop. Вы можете создавать контейнерные приложения, развертывать приложения в контейнеры и отлаживать приложения, выполняющиеся в контейнерах.
В этом руководстве описано следующее:
- Создайте контейнер.
- Сборка образа контейнера.
- Запуск контейнера приложения.
- Обновление кода и замена контейнера.
- Предоставление общего доступа к образу.
- Запуск образа в новом экземпляре.
Предварительные требования
- Visual Studio Code.
- Расширение Docker для VS Code.
- Docker Desktop.
- Учетная запись Docker Hub. Учетную запись можно создать бесплатно.
Это руководство работает с Windows 10 или более поздней версии и Docker Desktop, настроенными для использования контейнеров Linux.
Создание контейнера
Контейнер — это процесс на компьютере. Он изолирован от всех других процессов на главном компьютере. Для такой изоляции используются пространства имен ядра и группы управления.
Контейнер использует изолированную файловую систему. Эта пользовательская файловая система предоставляется образом контейнера. Образ содержит все необходимое для запуска приложения, например все зависимости, конфигурацию, скрипты и двоичные файлы. Образ также содержит другую конфигурацию для контейнера, например переменные среды, команду, выполняемую по умолчанию, и другие метаданные.
Установив расширение Docker для VS Code, можно приступить к работе с контейнерами в VS Code. Помимо использования контекстных меню в области Docker, можно выбрать Терминал>Новый терминал, чтобы открыть окно командной строки. Кроме того, команды можно выполнять в окне Bash. Если не указано иное, в окне Bash или в терминале VS Code можно выполнять любую команду, помеченную как Bash.
Установите для Docker режим контейнера Linux. Чтобы переключиться на контейнеры Linux, щелкните правой кнопкой мыши значок Docker на панели задач и выберите Переключиться на контейнеры Linux.
В VS Code выберите Терминал>Новый терминал.
Выполните эту команду в окне терминала или в окне 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
В VS Code щелкните значок Docker слева, чтобы просмотреть расширение Docker.
Расширение Docker для VS Code отображает контейнеры, запущенные на компьютере. Вы можете получить доступ к журналам контейнеров и управлять жизненным циклом контейнеров, например останавливать или удалять их.
Имя контейнера (в этом примере modest_schockly) создано случайным образом. У вашего контейнера будет другое имя.
Щелкните правой кнопкой мыши docker/getting-started, чтобы открыть контекстное меню. Выберите Открыть в браузере.
Или откройте браузер и введите
http://localhost/tutorial/
.Вы увидите размещенную локально страницу о DockerLabs.
Щелкните правой кнопкой мыши docker/getting-started, чтобы открыть контекстное меню. Выберите Удалить, чтобы удалить этот контейнер.
Чтобы удалить контейнер с помощью командной строки, выполните следующую команду для получения идентификатора контейнера:
docker ps
Затем остановите и удалите контейнер:
docker stop <container-id> docker rm <container-id>
Обновите свой браузер. Страница "Начало работы", которую вы видели недавно, больше не отображается.
Создание образа контейнера для приложения
В этом учебнике используется простое приложение Todo.
Приложение позволяет создавать рабочие элементы и помечать их как завершенные или удалять их.
Чтобы создать приложение, создайте Dockerfile. Dockerfile — это текстовый сценарий инструкций, который используется для создания образа контейнера.
Перейдите в репозиторий Учебник по началу работы с Docker, а затем выберите Код>Скачать ZIP-файл. Извлеките содержимое в локальную папку.
В VS Code выберите Файл>Открыть папку. Перейдите в папку app в извлеченном проекте и откройте ее. Вы увидите файл с именем package.json и две папки с именами src и spec.
Создайте файл с именем Dockerfile в той же папке, где находится файл package.json со следующим содержимым.
FROM node:12-alpine RUN apk add --no-cache python2 g++ make WORKDIR /app COPY . . RUN yarn install --production CMD ["node", "/app/src/index.js"]
Примечание
Убедитесь, что файл не имеет расширения файла, например
.txt
.В проводнике в левой части в VS Code щелкните правой кнопкой мыши Dockerfile и выберите пункт Собрать образ. В поле ввода текста введите getting-started в качестве тега для образа.
Тег — это понятное имя для образа.
Чтобы создать образ контейнера из командной строки, используйте следующую команду.
docker build -t getting-started .
Примечание
Чтобы выполнить эту команду, во внешнем окне Bash перейдите в папку
app
с параметром Dockerfile.
Вы создали образ контейнера с помощью Dockerfile.
Возможно, вы заметили, что было скачано много слоев.
Dockerfile начинается с образа node:12-alpine
.
Если его еще нет на компьютере, скачайте его.
После скачивания образа Dockerfile копирует ваше приложение и использует yarn
для установки зависимостей приложения.
Значение CMD
в Dockerfile указывает команду по умолчанию, которую необходимо выполнить при запуске контейнера из этого образа.
.
в конце команды docker build
указывает, что Docker должен искать Dockerfile в текущем каталоге.
Запуск контейнера приложения
Теперь, когда у вас есть образ, можно запустить приложение.
Чтобы запустить контейнер, используйте следующую команду.
docker run -dp 3000:3000 getting-started
Параметр
-d
указывает, что вы запускаете контейнер в отключенном режиме в фоне. Значение-p
создает сопоставление между портом узла 3000 и портом контейнера 3000. Без сопоставления портов вы не сможете получить доступ к приложению.Через несколько секунд в VS Code в области Docker в разделе КОНТЕЙНЕРЫ щелкните правой кнопкой мыши getting-started и выберите команду Открыть в браузере. Или перейдите в веб-браузере по адресу
http://localhost:3000
.Вы должны увидеть выполняющееся приложение.
Добавьте элемент или два, чтобы увидеть, что приложение работает, как ожидалось. Элементы можно пометить как завершенные и удалить элементы. Внешний интерфейс успешно сохраняет элементы в серверной части.
Обновление кода и замена контейнера
На этом этапе у вас есть работающий диспетчер списка задач с несколькими элементами. Теперь сделаем несколько изменений и изучим управление контейнерами.
В файле
src/static/js/app.js
обновите строку 56 для использования новой текстовой метки:- <p className="text-center">No items yet! Add one above!</p> + <p className="text-center">You have no todo items yet! Add one above!</p>
Сохраните изменения.
Остановите и удалите текущую версию контейнера. Несколько контейнеров не могут использовать один и тот же порт.
Щелкните правой кнопкой мыши контейнер getting-started и выберите команду Удалить.
Или в командной строке выполните следующую команду, чтобы получить идентификатор контейнера.
docker ps
Затем остановите и удалите контейнер:
docker stop <container-id> docker rm <container-id>
Создайте обновленную версию образа. В проводнике щелкните правой кнопкой мыши Dockerfileи выберите команду Собрать образ.
Или, чтобы выполнить сборку с помощью командной строки, выполните ту же команду, которая использовалась ранее.
docker build -t getting-started .
Запустите новый контейнер с обновленным кодом.
docker run -dp 3000:3000 getting-started
Обновите страницу
http://localhost:3000
в браузере, и вы увидите новый текст справки.
Предоставление общего доступа к образу
Теперь, когда вы создали образ, к нему можно предоставить общий доступ. Для предоставления общего доступа к образам Docker используется реестр Docker. Реестр по умолчанию — это Docker Hub, откуда берутся все используемые нами образы.
Чтобы отправить образ, необходимо сначала создать репозиторий в Docker Hub.
Перейдите в Docker Hub и войдите в свою учетную запись.
Щелкните Создать репозиторий.
В качестве имени репозитория введите
getting-started
. Убедитесь, что параметру Видимость задано значение Общедоступная.Нажмите кнопку создания.
С правой стороны страницы вы увидите раздел с названием Команды Docker. В нем приводится пример команды для отправки в репозиторий.
В представлении Docker в VS Code в разделе ОБРАЗЫ щелкните тег образа правой кнопкой мыши и выберите команду Отправить. Выберите Подключить реестр, а затем — Docker Hub.
Вам потребуется ввести учетную запись Docker Hub, пароль и пространство имен.
Чтобы выполнить отправку в Docker Hub с помощью командной строки, выполните следующую процедуру.
Войдите в Docker Hub:
docker login -u <username>
Используйте следующую команду, чтобы присвоить образу getting-started новое имя.
docker tag getting-started <username>/getting-started
Используйте следующую команду, чтобы отправить контейнер.
docker push <username>/getting-started
Запуск образа в новом экземпляре
Теперь, когда образ создан и отправлен в реестр, попробуйте запустить приложение в совершенно новом экземпляре, которому незнаком этот образ контейнера. Чтобы запустить приложение, используйте сайт Play with Docker.
Откройте Play with Docker в браузере.
Войдите со своей учетной записью Docker Hub.
Нажмите кнопку Пуск, а затем щелкните ссылку + Добавить новый экземпляр в левой части. Через несколько секунд в браузере откроется окно терминала.
Запустите приложение в окне терминала.
docker run -dp 3000:3000 <username>/getting-started
Play with Docker извлекает образ и запускает его.
Щелкните значок 3000 рядом с пунктом ОТКРЫТЬ ПОРТ. Вы должны увидеть приложение с внесенными изменениями.
Если значок 3000 не отображается, выберите ОТКРЫТЬ ПОРТ и введите "3000".
Очистка ресурсов
Чтобы продолжить работу с этой серией учебников, оставьте все настройки, сделанные на данный момент.
Дальнейшие действия
Вы завершили работу с этим учебником. Вы узнали, как создавать образы контейнеров, запускать контейнерные приложения, обновлять код и запускать образ в новом экземпляре.
Ниже приведены некоторые ресурсы, которые могут быть полезны:
Далее выполните инструкции из следующего учебника в этой серии: