<- Dlite - Docker с человеческим лицом в OS X

Ali Aliyev [2016-04-17]

Введение

Как оказалось существует более простой и удобный способ установки Docker в OS X. Маленькая утилита под названием Dlite. В предыдущем посте я писал о том, как установить и настроить Docker под OS X без использования VirtualBox, что сэкономит достаточно места на жестком диске и памяти.

Установка

Dlite это маленькая утилита написанная на языке Go и использующая libxhyve для управления гипервизиром xhyve, о котором я так же писал в предыдущем посте. Она установит и настроит все необходимое для работы с докером. Все что необходимо сделать - это скачать бинарник dlite по ссылке https://github.com/nlf/dlite/releases и кинуть куда нибудь в /usr/local/bin/, а затем запустить sudo dlite install и dlite start. Виртуальная машина будет автоматически активироваться после перезагрузки системы, что согласитесь очень удобно.

Для работы с контейнерами докера вам будет доступен хост local.docker, после установки. Так же можно подключиться к данному хосту по ssh:

➜  ~ ssh docker@local.docker
DhyveOS version 2.2.0
Docker version 1.10.0, build 590d5108
$

Для установки Dlite я прошел следующие этапы:

brew install xhyve # не уверен надо ли
brew install docker # я думаю docker лучше установить
wget -O /usr/local/bin/dlite https://github.com/nlf/dlite/releases/download/1.1.5/dlite
chmod +x /usr/local/bin/dlite
sudo dlite install
dlite start # запуск из под tmux может вызвать ошибку, об этом сказано в "Troubleshooting"

Проверяем сам docker

➜  ~ docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.10.0
Storage Driver: btrfs
Execution Driver: native-0.2
Logging Driver: json-file
Plugins:
 Volume: local
 Network: bridge null host
Kernel Version: 4.3.3-dhyve
Operating System: Buildroot 2015.11.1
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.957 GiB
Name: dlite
ID: BIOA:AMNG:RV6H:NWDY:XLTG:GNCB:5SBM:LVM4:2MOD:VEXL:ZFUD:24SV
➜  ~

Все работает.

Работа с удаленными директориями

Работа с удаленными директориями так же поддерживается так сказать "из коробки". Dlite автоматически примонтирует директорию /Users в гостевую машину. Если посмотреть корневую директорию на гостевой машине можно увидеть примонтированную директорию Users:

➜  ~ ssh docker@local.docker
DhyveOS version 2.2.0
Docker version 1.10.0, build 590d5108
$ ls /
Users    dev      home     lib      linuxrc  mnt      proc     run      sys      usr
bin      etc      init     lib64    media    opt      root     sbin     tmp      var
$

Поэтому у вас есть возможность сделать что то вроде этого:

docker run --rm \
--name web \
-v "/Users/<username>/webapp:/webapp" \
-it alpine sh

Директория /Users/<username>/webapp будет доступна в контейнере "web" по адресу /webapp

Немного полезной информации

  1. Dlite хранит файл настроек, включая образы системы в директории ~/.dlite
  2. После установки в файл /etc/hosts будет добавлена строка 192.168.64.2 local.docker # added by dlite
  3. По умолчанию, если не указывать параметры для команды docker, Docker будет использовать файл /var/run/docker.sock для соединения с гостевой машиной. Данный файл уже создает dlite.
  4. Подключиться к гостевой машине можно командой ssh docker@local.docker
  5. Если вы переустановите dlite, то он будет использовать уже другой IP адрес. Например, если во время первой установки IP адрес был 192.168.64.2 после переустановки dlite IP будет заменен на 192.168.64.3. Чтобы этого избежать и вернуть старый IP можно удалить файл /var/db/dhcpd_leases
  6. Запуск демона dlite из под tmux может не произойти, поэтому лучше этого не делать.
  7. После перезапуска системы dlite будет автоматически запущен
Tweet to @ali_aliev