Трогаем Docker в OS X
Появилось у меня немного свободного времени и я решил начать писать блог о всяких пробах различных технологий.
Заметка будет о контейнеризации и о том, как начать с ней работать на OS X.
Начну сначала. Итак, что-то дернуло меня попробовать Haskell, но, прежде чем его пробовать, я подумал, что наверное плохо будет захламлять систему всякими платформами, компиляторами и прочим. Тут, возможно, я не прав, и ничего там не захламляется, но тем не менее, появилось желание начать свои эксперименты именно в контейнере.
Установка Docker
Так как я люблю brew, устанавливал я через него.
brew install docker
brew install boot2docker
Вообще, сначала я не сразу понял как работает Docker у себя в потрохах, поэтому осознание, что нужен еще и boot2docker пришло далеко не сразу.
В двух словах, Docker – это тоже виртуализация, но контейнерная. Она легче, чем традиционные VM (гипервизоры), в которых эмулируется все, от процессора до памяти.
Имеем следующее, boot2docker
– это виртуальная машина, под которой работают контейнеры, а docker
– это клиент для нее.
Инициализируем и запускаем boot2docker
:
boot2docker init
boot2docker up
$(boot2docker shellinit)
В последней строке boot2docker
установит переменные окружения, необходимые для работы docker. В принципе, можно вполне подсмотреть эти переменные (с префиксом DOCKER_
) командой env
и добавить их в какой-нибудь .zshrc
или в .bashrc
, чтобы не запускать $(boot2docker shellinit)
для каждой открытой оболочки. У меня в .zshrc
эти строки выглядят так:
export DOCKER_HOST=tcp://192.168.59.103:2376
export DOCKER_CERT_PATH=/Users/alexey_detr/.boot2docker/certs/boot2docker-vm
export DOCKER_TLS_VERIFY=1
Небольшая справка: контейнерами называются непосредственно запущенные инстансы. А образами – отправная точная для старта контейнера.
Запускаем и пользуемся Ubuntu
Чтобы таки пощупать что-то в контейнере, давайте возьмем Ubuntu. Это официальный готовый образ с Ubuntu. Чтобы его установить и запустить, делаем следующее
docker run -it ubuntu
Тут придется немного подождать, когда контейнер скачается и будет готов к использованию. Когда процедура завершится, вы попадете в терминал докеризированной системы, там можно выполнить например apt-get update && apt-get install mc
.
Тут нужно иметь ввиду, что состояние контейнера само по себе не сохранится. Как только вы выйдете из него командой exit
, его изменения потеряются. Чтобы сохранить изменение контейнера, нужно сделать следующее. Для начала смотрим список текущих запущенных контейнеров командой
docker ps
Находим наш контейнер, смотрим его NAME и выполняем следующую команду:
docker commit <name>
Таким образом у нас сохранится новый готовый образ Ubuntu с mc
для запуска под Docker в любом окружении. Далее этот образ можно довольно просто поднимать с сохраненной отметки, достаточно открыть список образов
docker images
найти в нем необходимый образ и воспользоваться например IMAGE ID (намеренно не стал рассказывать о repository или tag, чтобы сократить объем заметки) для запуска
docker run -it 01dbf62fda7b
В этом случае вы уже обнаружите установленный mc
.
Рассматривать то, как переносить образы и вдаваться в другие детали, я в этой заметке не планировал, поэтому на этом закончу. В конце-то концов основной целью было опробовать Haskell.