FastNetMon

Saturday, 30 March 2013

Установка и использование Docker на Ubuntu 12.04

Что это и зачем? Грубо говоря, это способ запустить любой процесс в полностью изолированном от текущей машины окружении. Задать можно и объем диска и объем озу и потребление процессора. Файловая система контейнера создается из полностью чистого 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


2 comments :

  1. Выглядит интересно, но в чем отличие от того-же OpenVZ ?
    В том что не нужно особое ядро и особые настройки на корневой системе?

    ReplyDelete
  2. Ну как сказать, тут тоже свои требования - нужен довольно новый дистрибутив (для нового ядра) + aufs в нем, что также редкость. А фишка в том - что это быстро создаваемые и быстро удаляемые контейнеры. Тоже самое поидее можно сделать на овз ( может быть даже лучше).

    ReplyDelete

Note: only a member of this blog may post a comment.