Visual Studio Code для ИТ-специалистов: обновите свои навыки работы с контейнерами Docker
В прошлом году я написал здесь, в TechGenix, две статьи о контейнерах. Первый — «Начало работы с контейнерами», а второй — «Управление контейнерами с помощью клиента Docker». В сегодняшней статье мы освежим вашу память, поработав с парой образов, запустив их, выполнив некоторые команды, а затем используя Visual Studio Code (VS Code) для управления Docker.
Получение нового образа и изучение командной строки Docker
Из командной строки или сеанса PowerShell мы будем использовать утилиту Docker для управления нашей средой Docker на наших рабочих станциях. Утилита Docker состоит из двух областей: команды управления и команды. Команды управления — это вторая строка, и под ними есть несколько команд, связанных с командой управления. Первая команда, которую мы собираемся выполнить, — это поиск образов в Docker Hub. Вы должны иметь представление о том, что вы ищете при создании контейнеров. Если у вас его еще нет, не волнуйтесь, продолжайте, и к концу этой статьи у вас появятся собственные идеи.
Мы собираемся начать с Alpine Linux, небольшого образа, что означает быстрое развертывание, которое мы собираемся использовать в качестве основы для этой статьи. Мы можем искать его с помощью команды docker search alpine . Результатом будут все образы, которые у нас есть в Пожалуйста, обратите внимание на официальную колонку, которая помогает при выборе образов, которые вы хотите использовать в качестве основы для ваших новых контейнеров/приложений.
Чтобы скачать образ локально, мы собираемся использовать docker pull alpine. По умолчанию изображения имеют теги, связанные с версией. Поскольку мы не указываем его, он загрузит последнюю версию, предоставленную владельцем изображения.
После загрузки изображения мы можем использовать список образов Docker, чтобы показать нам все доступные изображения, как показано на изображении ниже. Вы правильно читаете — весь образ меньше 6 МБ.
Давайте загрузим образ из Docker Hub. Просто введите docker pull nginx и дождитесь завершения процесса загрузки.
Запускаем наш первый контейнер
Теперь, когда у нас есть пара локальных образов, мы можем развернуть наш первый контейнер с образом. Мы собираемся запустить команду ниже, и у нас будет доступ к консоли контейнера, где у нас есть root-доступ к консоли Alpine Linux. Если мы введем exit внутри контейнера, контейнер будет автоматически остановлен, и мы всегда сможем создать новый контейнер.
docker container run --name <NewContainerName> -it <Image-Name> <Command внутри контейнера>
Чаще всего контейнер используется для запуска в режиме. Контейнер будет работать до тех пор, пока служба не будет запущена. Однако мы не можем «видеть» контейнер или взаимодействовать с ним из командной строки.
Есть несколько разных переключателей по сравнению с предыдущей попыткой. Во-первых, мы заменили -it на -d, что означает отсоединенный режим. Второе изменение заключалось в том, чтобы открыть порт 80 контейнера (в конце концов, это образ nginx и по умолчанию работает веб-сервер) для порта 9090 на хосте. Результаты можно увидеть в веб-браузере, работающем на хосте, который обращается к начальной странице nginx, работающего в контейнере, который мы только что создали.
запуск контейнера докеров --name nginx01 -d -p 9090:80 nginx
Вход и выход из прикрепленного контейнера
Когда мы запускаем контейнер, мы определяем службу/приложение для запуска контейнера. Когда такое приложение завершается, контейнер автоматически останавливается. В предыдущем разделе мы создали контейнер, используя -it, что означает интерактивный сеанс.
Иногда мы хотим, чтобы контейнер работал в фоновом режиме, и это особенно полезно, когда мы запускаем контейнер, использующий сеанс оболочки. Чтобы выйти из контейнера, мы можем нажать Ctrl + Q или Ctrl + P, чтобы выйти из сеанса.
Вернувшись в командную строку, мы можем перечислить существующие контейнеры, и мы заметим, что наш контейнер все еще работает, что является хорошим знаком. Чтобы вернуться к контейнеру, мы можем ввести docker attach <ContainerName-or-ContainerId>. Вся последовательность команд описана ниже, и мы можем увидеть ее в действии на изображении ниже.
hostname ls /etc docker container ls docker attach <имя хоста-ContainerName-or-ContainerID
Очистка неиспользуемых контейнеров
Каждый раз, когда мы запускаем новый контейнер, имя будет сохраняться и не может быть использовано повторно. После серии тестов мы можем получить тонны остановленных контейнеров, которые мы не планируем использовать снова. Используя команды, перечисленные ниже, мы можем вывести список всех контейнеров и удалить все остановленные.
Список контейнеров Docker -a Контейнер Docker prune Список контейнеров Docker -a
Использование правильного инструмента имеет большое значение: Visual Studio Code вам в помощь!
Мы использовали командную строку docker и рассмотрели некоторые основные задачи, которые следует знать при работе с Docker. Однако есть несколько инструментов, помогающих управлять контейнерами, и один из моих любимых — Visual Studio Code. Я написал статью о коде Visual Studio здесь, в TechGenix. Пожалуйста, проверьте это здесь.
Visual Studio имеет расширение Docker. Щелкните значок «Расширения» и введите docker, выберите расширение от Microsoft. Нажмите «Установить», и в левом меню появится новый .
На изображении ниже показана часть интеграции между Docker и Visual Studio Code. Вот простое объяснение функций, доступных с помощью Visual Studio Code:
- Список контейнеров на текущем хосте (элемент 1).
- Все существующие образы (пункт 2).
- Мы можем проверить реестр (пункт 3), откуда мы можем извлекать и отправлять образы.
- Все существующие сети (пункт 4).
- Все тома (статья 5).
- Команды, которые могут быть выполнены (пункт 6) в любое время.
Помимо просмотра объектов, мы можем управлять ими, в том числе удалять.
Если мы хотим заглянуть внутрь контейнера с помощью VS Code, щелкните правой кнопкой мыши нужный контейнер и нажмите «Прикрепить оболочку». В правом нижнем углу вы получите доступ к контейнеру. Довольно круто, а?
Visual Studio Code и Docker: подведение итогов
Готовы вращать свои контейнеры самостоятельно? Надеюсь, вы, как и я, в восторге от контейнеров и от того, как их может использовать ИТ-специалист.
Одним из основных преимуществ контейнеров является портативность. В нашем путешествии мы учимся управлять ими с самых основ. Нашей следующей остановкой будет создание наших образов, и с этого момента мы можем перейти к более масштабируемым и организованным решениям. Да, я говорю о Kubernetes, а точнее о том, как использовать AKS (Azure Kubernetes Services) для доставки современных приложений вашим пользователям и клиентам. Следите за обновлениями!