Что это и зачем? Грубо говоря, это способ запустить любой процесс в полностью изолированном от текущей машины окружении. Задать можно и объем диска и объем озу и потребление процессора. Файловая система контейнера создается из полностью чистого Ubuntu base (впрочем, это можно изменить).
Устанавливаем зависимости:
Далее нам вывалится следующее:
Это означает, что более-менее все окей и мы работаем внутри контейнера:
Устанавливаем зависимости:
apt-get updateСтягиваем дистрибутив:
apt-get install -y lxc wget bsdtar curl
wget "http://get.docker.io/builds/$(uname -s)/$(uname -m)/docker-master.tgz"Запускаем:
tar -xf docker-master.tgz
cd docker-master
./docker run -i -t base /bin/bash
Далее нам вывалится следующее:
docker run -i -t base /bin/bash
Image base not found, trying to pull it from registry.
Pulling repository base
Pulling tag base:ubuntu-12.10
Pulling b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc metadata
Pulling b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc fs layer
Pulling 27cf784147099545 metadata
Pulling 27cf784147099545 fs layer
Pulling tag base:latest
Pulling tag base:ubuntu-quantl
Pulling tag base:ubuntu-quantal
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
Это означает, что более-менее все окей и мы работаем внутри контейнера:
ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 18060 1956 ? S 11:30 0:00 /bin/bash
root 13 0.0 0.0 15528 1132 ? R 11:30 0:00 ps aux
Выход из него осуществляется по CTRL+D или exit.
Запускаем тестовое приложение, которое запускает шелл в отдельном контейнере и выдает результаты его работы на текущий шелл:
./docker run base /bin/echo hello world
2013/03/30 12:32:27 docker run base /bin/echo hello world
hello world
Источник: http://docs.docker.io/en/latest/
Выглядит интересно, но в чем отличие от того-же OpenVZ ?
ReplyDeleteВ том что не нужно особое ядро и особые настройки на корневой системе?
Ну как сказать, тут тоже свои требования - нужен довольно новый дистрибутив (для нового ядра) + aufs в нем, что также редкость. А фишка в том - что это быстро создаваемые и быстро удаляемые контейнеры. Тоже самое поидее можно сделать на овз ( может быть даже лучше).
ReplyDelete