Docker

Предисловие

Docker - это ПО, заточенное под Linux и для Linux. В настоящее время есть реализация docker для Windows, MacOS, FreeBSD, но все эти реализации изначально ущербны (то есть имеют ограниченный функционал) и работают при поддержке виртуализации на хостовой системе.

Соответственно, при организации рабочего docker-окружения избежать слоя виртуализации никак нельзя. Итак, процесс «докеризации» разбивается на три логические части:

  1. Установить гостевую linux-систему на FreeBSD
  2. Настроить взаимодействие между хостом и гостевой системой.
  3. Настроить docker в гостевой системе.

Установка гостевой системы

В качестве гостевой системы будем использовать Alpine linux.

Создаем том с именем alpine размером 8G в zfs-пуле guests:

alpha# zfs create -V8G -o volmode=dev guests/alpine

Также создаем том, в котором будем хранить данные докера ( будем монтировать этот том в систему )

alpha# zfs create -V64G -o volmode=dev guests/dockerdata

Загружаем актуальный образ диска:

alpha# wget http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/x86_64/alpine-virt-3.8.0-x86_64.iso

Убеждаемся, что сетевые интерфейсы настроены правильно или же настраиваем их:

alpha# sysctl net.link.tap.up_on_open=1
alpha# ifconfig tap1 create
alpha# ifconfig bridge0 create
alpha# ifconfig bridge0 addm em0 addm tap1
alpha# ifconfig bridge0 up

Если состояние должно быть перманентным, то:

alpha# echo "net.link.tap.up_on_open=1" >> /etc/sysctl.conf
alpha# echo 'if_bridge_load="YES"' >> /boot/loader.conf
alpha# echo 'if_tap_load="YES"' >> /boot/loader.conf
alpha# sysrc cloned_interfaces="bridge0 tap1"
alpha# sysrc ifconfig_bridge0="addm em0 addm tap1"
alpha# sysrc  kld_list="nmdm vmm"

Здесь em0 - имя сетевого интерфейса хоста.

Устанавливаем систему из образа:

alpha# kldload vmm
alpha# pkg install bhyve-firmware
alpha# bhyve -APH -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap1 -s 3:0,virtio-blk,/dev/zvol/guests/alpine -s 4:0,virtio-blk,/dev/zvol/guests/dockerdata \
-s 5:0,ahci-cd,iso-images/alpine-virt-3.8.0-x86_64.iso  -c 2 -m 4G -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd -l com1,stdio alpine

Далее, загрузившись в систему выполняем настройку с помощью утилиты setup-alpine. Перезагружаемся.

alpha# bhyve -APH -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap1 -s 3:0,virtio-blk,/dev/zvol/guests/alpine \
-s 4:0,virtio-blk,/dev/zvol/guests/dockerdata -c 2 -m 4G -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd -l com1,stdio alpine

Завершаем настройку, создаем нового пользователя. Также форматируем диск под данные докера.

theta# fdisk /dev/vdb && mkfs.ext4 /dev/vdb1

Монтируем раздел.

…И переходим к установке и настройке docker.

Настройка хоста для работы с Docker

Настроим вход в систему по ключу. Для этого сначала поправим конфигурационный файл демона sshd:

alpine# vi /etc/ssh/sshd_config

чтобы в нем присутствовали строки

PermitRootLogin prohibit-password
PasswordAuthentication no

Публичный ключ пропишем в файле /root/.ssh/authorized_keys:

alpine# mkdir .ssh
alpine# chmod 0700 .ssh
alpine# vi .ssh/authorized_keys

Управлять виртуальными машинами мы будем с помощью ansible, поэтому установим python:

alpine# apk add python

Основы работы с Docker

freebsd/docker.txt · Последние изменения: 22.10.2018 20:09:00 — Ладилова Анна
Наверх
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0