И снова про docker
Вы хотите иметь возможность развернуть свое программное обеспечение в любой системе? В данной заметке я приведу шаги для установки в системе на RedHat 6.4. Для прочих систем указания можно найти тут: Полезная ссылка:
Устанавливаем net-namespaces
Если у вас ядро RHEL/CentOS 6.4 kernel, то нужно будет проапдейтить его. Системы вроде RHEL 7.0, ubuntu 12.04 LTS уже поддерживают эту фичу, так что патчить ядро не придется. net-namespaces обеспечивает работу контейнеров.
Для системы RHEL 6.4 :
yum install -y http://rdo.fedorapeople.org/rdo-release.rpm yum install kernel iproute shutdown -Fr now |
Теперь ваше ядро пропатчено — обратите внимание на пометку в названии ядра openstack:
uname -a Linux myhost 2.6.32-358.123.2.openstack.el6.x86_64 #1 SMP Thu Sep 26 17:14:58 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux |
Проверяем установку
Данная команда должна отработать без ошибок:
ip netns list |
Устанавливаем docker и запускаем службу
Можно взять отсюда http://www.rackspace.com/knowledge_center/article/installing-rhel-epel-repo-on-centos-5x-or-6x
Выполняем команды:
yum install docker-io.x86_64
chkconfig docker on
service docker start |
После того, как все установилось, можно откатить настройки репозиториев yum:
mkdir /etc/yum.repos.d/disabled mv /etc/yum.repos.d/foreman.repo /etc/yum.repos.d/disabled mv /etc/yum.repos.d/rdo-release.repo /etc/yum.repos.d/disabled mv /etc/yum.repos.d/puppetlabs.repo /etc/yum.repos.d/disabled yum repolist |
Создаем CentOS систему в docker
Возьмем образ из репозитория докера и воспользуемся интерактивной установкой:
docker pull centos docker images docker run -i -t centos /bin/bash bash-4.1# hostname f6b4810a94cb bash-4.1# ifconfig -a eth0 Link encap:Ethernet HWaddr 24:94:C5:2e:40:45 inet addr:172.17.0.2 Bcast:0.0.0.0 Mask:255.255.0.0 inet6 addr: fe80::2896:cb33:fda5:4531/64 Scope:Link UP BROADCAST RUNNING MTU:1500 Metric:1 RX packets:5 errors:0 dropped:0 overruns:0 frame:0 TX packets:5 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:398 (398.0 b) TX bytes:398 (398.0 b) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) |
Пробуем пинговать:
bash-4.1# ping www.google.com bash: ping: command not found |
Как же так? Что случилось? Ничего страшного, но пока в системе нет даже команды ping.
Помните о ядре
Нужно помнить, что контейнеры работают в том же пространстве, что и хост система. Контейнеры расходуют ресурсы системы, но какой-то особенный гипервизор не нужен.
Обновляем версию docker
Если вы скачали новую версию, то не забудьте перезапустить службу. Docker функционирует как процесс и как демон, оба должны быть одной версии:
wget https://get.docker.io/builds/Linux/x86_64/docker-latest -O docker chmod a+x docker ./docker version |
Битый образ
Образ может быть поврежден, осторожней с этим: https://phusion.github.io/baseimage-docker/
Запустим docker из docker?
Начиная с версии 0.6 возможно и такое http://blog.docker.io/2013/09/docker-can-now-run-within-docker/