Руководство Arch Linux 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 docker 

3. Запуск и включение 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 bridge 

Docker рекомендует использовать user- определенные мостовые сети для управления тем, какие контейнеры могут взаимодействовать друг с другом. Docker не ограничивает количество новых сетей, которые пользователи могут создать, используя сети по умолчанию в качестве шаблонов, а контейнеры могут быть подключены к нескольким сетям одновременно. Создайте новую мостовую сеть:

 # docker network create --driver bridge bridge_new 

И проверьте ее:

 # docker network inspect  bridge_new 

Запустить контейнер busybox (или любой другой), подключенный к вновь созданной сети:

 # docker run --network = bridge_new -itd --name = [  ID контейнера] busybox 

SSH в контейнер

Чтобы использовать 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, страница "Устранение неполадок" - лучшее место, где можно найти решение.

Оцените статью
nanomode.ru
Добавить комментарий