- Что такое Docker?
- Docker Versus Virtualization
- Как установить Docker в Arch Linux
- 0. Перед тем, как вы начнете
- 1. Включение модуля цикла
- 2. Установить Docker
- 3. Запуск и включение Docker
- Конфигурация после установки
- Использование Docker в Arch Linux
- Первые шаги
- Загрузка образов Docker
- Создание новых контейнеров
- Мониторинг контейнеров Docker
- Конфигурация сети
- SSH в контейнер
- Обмен данными между контейнером Docker и хостом
- Заключение
Что такое Docker?
Если вы читаете веб-сайты с новостями о технологиях, вы, скорее всего, слышали о Docker и всех замечательных вещах этой открытой платформы, которая позволяет разработчикам и Системные администраторы для создания, доставки и запуска распределенных приложений могут это сделать. Но зачем просто читать о Docker, если вы можете попробовать его из первых рук? В этом руководстве мы научим вас устанавливать и настраивать Docker в Arch Linux, а также покажем вам несколько примеров того, что вы можете делать с Docker.
На его официальном сайте , Docker описывается как «ведущая в мире платформа для создания контейнеров программного обеспечения». Хорошо, а что такое контейнер? Контейнер — это автономный набор библиотек и настроек, который гарантирует, что часть программного обеспечения всегда будет работать одинаково, независимо от того, где она развернута.
Другими словами, контейнеры и Docker, решить проблему фрагментации, которая десятилетиями преследовала мир Unix. Наконец, разработчики могут легко переносить программное обеспечение с машин разработки на удаленные серверы и с уверенностью знать, что все будет работать так, как ожидалось.
Первоначально Docker был выпущен в 2013 году компанией Docker, Inc. Человек, который запустил Докер — это Соломон Хайкс, который был соучредителем и генеральным директором dotCloud, компании, предлагающей платформу как услугу. Несколько инженеров dotCloud внесли свой вклад в Docker, в том числе Андреа Луццарди и Франсуа-Ксавье Бурле.
Всего через три года после первого выпуска Docker анализ показал, что основными участниками Docker являются Red Hat, IBM, Microsoft, Huawei. , Google и Cisco. За короткое время Docker привлек внимание некоторых крупнейших компаний мира и зарекомендовал себя как ведущая платформа для создания контейнеров программного обеспечения.
Docker Versus Virtualization
В отличие от виртуальных машин, которые получают виртуальный доступ к ресурсам хоста через гипервизор, контейнеры Docker изначально работают в ядре хост-машины, каждый из которых работает как отдельный процесс и занимает не больше памяти, чем любой другой исполняемый файл.
В контейнерах Docker не работает гостевая операционная система. Вместо этого они содержат только исполняемый файл и его зависимости пакетов. Это делает контейнеры гораздо менее требовательными к ресурсам и позволяет запускать контейнерные приложения где угодно.
Как установить Docker в Arch Linux
0. Перед тем, как вы начнете
Несмотря на то, что Arch Linux все еще позволяет инсталляциям i686 получать обновленные пакеты, в соответствии с планами дистрибутива по постепенному отказу от поддержки этой архитектуры, Docker поддерживает только 64-битные системы. Эта пыльная старая машина, которая может быть у вас в шкафу, может быть отличным вариантом для ретро-игр, но вы не сможете запустить на ней Docker.
1. Включение модуля цикла
Помимо 64-битной архитектуры, Docker также зависит от модуля цикла, который представляет собой блочное устройство, которое отображает свои блоки данных не на физическое устройство, такое как жесткий диск или оптический диск. диск, но к блокам обычного файла в файловой системе или к другому блочному устройству, в соответствии с Руководством программиста Linux.
Docker должен автоматически включать модуль цикла во время установки. Проверьте, загружен ли цикл как модуль ядра:
# lsmod | grep loop
Если модуль цикла был загружен, вы можете перейти к следующему шагу. В противном случае выполните следующие две команды:
# tee/etc/modules-load.d/loop.confпервая команда передает слово «цикл» на стандартный ввод команды слева, которая является командой tee. Затем tee записывает слово «цикл» в файл loop.conf. Команда modprobe добавляет модуль цикла в ядро Linux.
2. Установить Docker
Вы можете выбрать, хотите ли вы установить стабильную версию Docker из репозитория сообщества или версию для разработки из AUR. Первый называется просто докером, а второй - docker-git. Если вы новичок в использовании Docker в целом или просто используете Docker в Arch Linux, мы настоятельно рекомендуем вам установить стабильный пакет:
# pacman -S docker3. Запуск и включение Docker
Прежде чем вы сможете использовать Docker в Arch Linux, вы должны запустить и включить демон Docker с помощью системы:
# systemctl start docker.service # systemctl enable docker.serviceПервая команда немедленно запускает демон Docker, а вторая команда гарантирует, что демон запустится автоматически при загрузке.
При желании можно использовать следующая команда для проверки установки и активации:
# docker infoОбратите внимание, что вы можете запускать Docker только от имени пользователя root. Чтобы запустить Docker от имени обычного пользователя, добавьте себя в группу докеров:
# groupadd docker # gpasswd -a user docker [замените пользователя своим именем пользователя]первая команда создает новую группу под названием docker, а вторая команда добавляет пользователя в группу. Не забудьте повторно войти в систему, чтобы применить изменения.
Конфигурация после установки
При условии, что ваш хост-компьютер изначально правильно настроен, там не так много осталось сделать после установки, прежде чем вы сможете начать использовать Docker в Arch Linux.
Однако вы можете изменить расположение образов Docker. Docker по умолчанию хранит изображения в/var/lib/docker. Чтобы изменить их местоположение, сначала остановите демон Docker:
# systemctl stop docker.serviceЗатем переместите изображения в целевое место назначения. Наконец, добавьте следующий параметр в ExecStart в/etc/systemd/system/docker.service.d/docker-storage. conf:
ExecStart =/usr/bin/dockerd --data-root =/path/to/new/location/docker -H fd://Дополнительные параметры настройки после установки см. На официальной вики-странице Docker в Arch.
Использование Docker в Arch Linux
После установки и настройки Docker пора наконец-то повеселиться с ним.
Первые шаги
Чтобы увидеть, что умеет Docker, попросите его перечислить все доступные команды:
# dockerВы также можете попросить Docker сообщить вам свою версию или предоставить общесистемную информацию:
# версия докера # информация о докереЗагрузка образов Docker
Когда вы будете готовы попробовать что-то более интересное, вы можете загрузить образ Arch Linux x86_64:
# docker pull base/archlinuxЕсли вы хотите загрузить другой образ Docker, найдите его, используя следующую команду (не забудьте заменить [имя образа] на предпочитаемый поисковый запрос:
# docker search [имя изображения]Поэкспериментируя с Docker, ваша коллекция образов Docker естественным образом увеличится, а объем доступного дискового пространства сократится. Когда Docker начинает занимать слишком много места, вы можете изменить его место хранения по умолчанию и переместить его на другой жесткий диск или раздел. По умолчанию Docker хранит образы и контейнеры в/var/lib/docker. Чтобы установить новое место хранения, остановите демон Docker:
# systemctl stop docker.serviceЗатем создайте подключаемый файл «docker.conf» по адресу новый подключаемый каталог/etc/systemd/system/docker.service.d. Все файлы с суффиксом «.conf» из нового подключаемого каталога будут проанализированы после анализа исходного файла конфигурации, что позволит вам переопределить его настройки, не изменяя их напрямую.
# mkdir/etc/systemd/system/docker.service.d# touch/etc/systemd/system/docker.service.d/docker.confЗатем откройте вновь созданный файл drop-in в ваш любимый текстовый редактор и добавьте следующие строки:
[Service] ExecStart = ExecStart =/usr/bin/dockerd --graph = "/mnt/new_volume" --storage-driver = devicemapperНе забудьте изменить «new_volume» на ваше предпочтительное новое место хранения и «devicemapper» на текущий драйвер хранилища, который контролирует, как изображения и контейнеры хранятся и управляются на вашем хосте Docker. Вы можете узнать, какой драйвер хранилища в настоящее время используется Docker, используя следующую команду, с которой вы должны быть уже знакомы:
# docker infoЕдинственное, что осталось - перезагрузить сервисный демон для поиска новых или измененных модулей и снова запустить Docker:
# systemctl daemon-reload # systemctl start docker. serviceСоздание новых контейнеров
После того, как вы загрузили свой первый образ Docker, вы можете использовать его для создания нового контейнера, указав команду для запуска с использованием образа :
# docker run [имя изображения] [команда для запуска]Если контейнер внезапно останавливается, вы можете запустить его снова:
# docker run [идентификатор контейнера]И если вы хотите, чтобы он остановился, вы также можете сделать это:
# docker stop [идентификатор контейнера]Время от времени вы можете захотеть зафиксировать изменения или настройки файла контейнера в новом образе. Перечислите все запущенные контейнеры Docker, чтобы найти контейнер, который вы хотите зафиксировать в новом образе:
# docker psВыполните следующую команду, чтобы зафиксировать изменения и создать новый образ:
# docker commit [ID контейнера] [имя изображения]Просто имейте в виду, что когда вы фиксируете изменения или настройки файла контейнера в новый образ, вновь созданный образ не будет включать никаких данных, содержащихся в томах, смонтированных внутри контейнера.
Наконец, вы можете легко удалить контейнер и начать с нуля:
# docker rm [идентификатор контейнера]Мониторинг контейнеров Docker
Существует несколько доступных вариантов сбора полезных метрик из контейнеров Docker. Одним из доступных вариантов является команда docker stats, которая дает доступ к ЦП, памяти, сети и использованию диска для всех контейнеров, запущенных на вашем хосте.
# docker statsЕсли вы запускаете несколько контейнеров Docker одновременно, вы можете ограничить вывод команды только одним или несколькими контейнерами, указав идентификаторы контейнеров, разделенные пробелом:
# docker stats [идентификатор контейнера] [идентификатор контейнера] [идентификатор контейнера]Чтобы получить одноразовый снимок текущего использования ресурсов контейнера, добавьте параметр –no-stream:
# docker stats --no-steamВы также можете использовать параметр –all, который отображает остановленные контейнеры:
# docker stats --allПомимо статистики докеров, вы также можете использовать cAdvisor (инструмент мониторинга контейнеров от Google), Prometheus (систему мониторинга с открытым исходным кодом и базу данных временных рядов) или Agentless System Crawler (ASC) (облачный инструмент мониторинга от IBM с поддержкой контейнеров), среди прочего пороки.
Конфигурация сети
По умолчанию Docker автоматически создает три сети, и вы можете перечислить их, используя следующую команду:
# docker network lsВы должны увидеть что-то вроде этого:
ИМЯ ИДЕНТИФИКАЦИИ СЕТИ DRIVER7fca4eb8c647 bridge bridge9f904ee27bf5 none nullcf03ee007fb4 host hostМост network соответствует сети docker0, которая присутствует во всех установках Docker. Сеть none не имеет доступа к внешней сети, но ее можно использовать для выполнения пакетных заданий. Наконец, хост-сеть добавляет контейнер в сетевой стек хоста без какой-либо изоляции между хост-машиной и контейнером..
Используйте следующую команду для просмотра информации о сети моста по умолчанию:
# docker network inspect bridgeDocker рекомендует использовать user- определенные мостовые сети для управления тем, какие контейнеры могут взаимодействовать друг с другом. Docker не ограничивает количество новых сетей, которые пользователи могут создать, используя сети по умолчанию в качестве шаблонов, а контейнеры могут быть подключены к нескольким сетям одновременно. Создайте новую мостовую сеть:
# docker network create --driver bridge bridge_newИ проверьте ее:
# docker network inspect bridge_newЗапустить контейнер busybox (или любой другой), подключенный к вновь созданной сети:
# docker run --network = bridge_new -itd --name = [ ID контейнера] busyboxSSH в контейнер
Чтобы использовать SSH в контейнерах Docker, вы можете установить SSH-сервер в образах, которые вы хотите использовать ssh, и запускать каждый контейнер, отображающий порт ssh на один из портов хоста. Однако это неправильный подход. «Чтобы уменьшить сложность, зависимости, размеры файлов и время сборки, вам следует избегать установки дополнительных или ненужных пакетов только потому, что они могут быть« полезными »», - говорится в руководстве пользователя Docker.
Вместо этого лучше использовать контейнерный SSH-сервер и прикрепить его к любому работающему контейнеру. Единственное требование - в контейнере должен быть bash. Пользователь Jeroen Peeters приводит следующий пример на Stack Exchange и призывает читателей посетить его GitHub для получения дополнительной информации:
$ docker run -d -p 2222: 22 -v/var/run/docker. sock:/var/run/docker.sock -e CONTAINER = my-container -e AUTH_MECHANISM = noAuth jeroenpeeters/docker-ssh $ ssh -p 2222 localhostВ качестве альтернативы вы можете использовать docker exec команда для запуска команды в работающем контейнере. Например:
# docker exec -it bashОбмен данными между контейнером Docker и хостом
Вы можете используйте тома Docker для обмена файлами между хост-системой и контейнером Docker. Это может быть удобно, например, если вы хотите создать постоянную копию файла журнала для последующего анализа.
Сначала создайте каталог на хосте в месте, которое пользователь Docker будет иметь доступ к:
# mkdir ~/container-shareЗатем прикрепите каталог хоста к тому контейнера, расположенному в каталоге/data внутри контейнера:
#docker run -d -P --name test-container -v/home/user/container-share:/data archlinuxВы увидите идентификатор вновь созданный контейнер. Получите доступ оболочки к контейнеру:
docker attach [идентификатор контейнера]После того, как вы введете команду выше, вы станете каталогом данных, который мы добавили в контейнер время выполнения. Любой файл, который вы добавляете в этот каталог, будет доступен из папки хоста.
Заключение
Docker - чрезвычайно мощная программная технология, и это руководство является лишь введением для те, кто никогда не пользовался этим раньше. Вы можете узнать больше о Docker из официальной документации, которая постоянно обновляется. Если вы хотите узнать, как определять и развертывать приложения с помощью Docker, ознакомьтесь с руководством «Начало работы с Docker». Если у вас возникнут какие-либо проблемы с Docker, страница "Устранение неполадок" - лучшее место, где можно найти решение.