Как использовать Docker для безопасного опробования программного обеспечения — CloudSavvy IT

Docker позволяет упаковывать программное обеспечение в виде самодостаточных контейнеров, которые совместно используют ядро ​​своего хоста, но выглядят и выглядят как независимые виртуальные машины. Программное обеспечение внутри работает с производительностью, близкой к родной. Это делает контейнеры Docker отличным способом безопасно опробовать новые пакеты, не устанавливая их «на чистом железе» на вашем компьютере. Вот некоторые из приемов, которые вы можете использовать.

Зачем использовать Docker для тестирования программного обеспечения?

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

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

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

Пакеты, которые вы устанавливаете внутри контейнера, изменят файловую систему этого контейнера, оставляя данные вашего хоста нетронутыми. Вредоносным пакетам будет намного сложнее поставить под угрозу вашу систему, поскольку им нужно будет вырваться из контейнера, чтобы добраться до вашего хоста. Установщики, которые ищут интересные файлы конфигурации из других пакетов, увидят новую файловую систему вместо ваших пользовательских данных.

Если окажется, что пакет вам не подходит, «удалите» его, просто удалив контейнер Docker в песочнице. В вашей системе не останется никаких следов.

Поиск образов Docker

Если вы хотите попробовать что-то новое, лучше сначала выполнить поиск в Docker Hub и посмотреть, есть ли уже образ контейнера для выбранного вами пакета. Образы предоставляют готовые к использованию развертывания определенного программного обеспечения, аналогичные ISO-образу виртуальной машины, предварительно настроенному с помощью набора пакетов.

Многие популярные проекты теперь предлагают официальные образы Docker в составе своих выпусков. Они четко обозначены на Docker Hub зеленым значком «Официальный образ».

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

Вы также должны убедиться, что изображение имеет вариант для той версии программного обеспечения, которую вы хотите. Образы будут различать разные версии с помощью тегов Docker, таких как mongo: 5 для MongoDB 5 и mongo: 4 для MongoDB 4. Используйте представление «Теги» Docker Hub, чтобы увидеть доступные параметры и время их последнего обновления.

Использование изображения

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

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

docker run -it пример-изображение: последний

Вместо этого начальные образы, которые предоставляют фоновые процессы, с флагом -d:

docker run -d пример-изображение: последний

Команда docker run запускает контейнер с использованием указанного образа. Теперь ваше программное обеспечение работает в изолированной среде с собственной файловой системой. Вы можете запустить несколько независимых экземпляров одновременно, запустив несколько контейнеров из образа.

Что делать, если изображения нет?

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

Вот пример, который запускает новую среду Ubuntu в Docker:

docker run -it ubuntu: 20.04

Флаги -it означают, что вы попадете в интерактивную оболочку, работающую в терминале. Теперь вы можете использовать apt, curl, wget или любые другие необходимые шаги для установки и опробования целевого пакета.

apt update apt install example-package example-package —example-flags

Если вы захотите повторить эти шаги еще раз в будущем, напишите Dockerfile, который позволит вам создать свой собственный образ:

ИЗ ubuntu: 20.04 apt update apt install example-package ENTRYPOINT [«example-package»]CMD [«»]

Создайте свой образ:

docker build -t пример-пакет: последний.

Теперь используйте свой образ, чтобы запустить контейнер, который автоматически запускает двоичный файл пакета примера, добавленный в базовый образ Ubuntu:

docker run -it пример-пакет: последний —example-flags

Это работает, потому что двоичный файл установлен как команда образа Docker в вашем Dockerfile. Он будет запускаться автоматически при запуске контейнера, получая флаги, которые вы передаете в docker run.

Снимки

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

Используйте команду docker commit, чтобы создать новый образ из файловой системы контейнера:

docker commit my-container package-snapshot: последний

Вы должны заменить my-container идентификатором или именем вашего контейнера. Вы можете получить эти сведения, запустив docker ps, который показывает все запущенные контейнеры в том порядке, в котором они были запущены. Команда пометит созданный снимок как package-snapshot: latest.

Теперь вы можете применить любые необходимые изменения к существующему контейнеру, не беспокоясь о нарушении текущего состояния. Если вы хотите выполнить откат, используйте docker run, чтобы запустить другой контейнер из образа package-snapshot: latest.

Убираться

Когда вы закончите экспериментировать, Docker позволяет легко «удалить» ваше программное обеспечение, не оставив следов. Сначала удалите свои контейнеры:

docker rm мой контейнер

Затем очистите загруженные изображения:

docker rmi пример-образ: последний

Теперь вы вернулись в чистое состояние. Поскольку все, что связано с программным обеспечением, существовало только внутри вашего контейнера, файловая система вашего хоста останется неизменной.

Постоянные данные

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

Вы можете решить эту проблему, подключив тома к контейнеру, чтобы важные файлы оставались на вашем хосте. Для этого используйте флаг -v с docker run.

docker run -it -v config-volume: /etc/example-package/conf.d example-package: latest

Тома переживают отдельные контейнеры, поэтому вы можете восстановить свои файлы в новый контейнер, указав те же флаги -v. Удалите тома с помощью команды docker volume rm.

Вывод

Docker — это быстрый и простой способ безопасно опробовать программное обеспечение, не загрязняя среду вашего хоста. Это позволяет вам сортировать новые пакеты перед тем, как внедрить их в чувствительные системы и «голое железо».

Использование Docker дает возможность сканировать программное обеспечение перед его запуском. Встроенный компонент Docker Scan выявляет уязвимости в пакетах в образе, давая вам обзор последствий для безопасности. Используйте docker scan example-package: latest для сканирования загруженных изображений.

Вы можете продолжить использовать установку Dockerized после первоначального эксперимента. В качестве альтернативы вы можете использовать то, что вы узнали, для настройки работающей установки на «голое железо» с повышенной уверенностью в том, что пакет делает то, на что он претендует.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.