И снова про docker

И снова про 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/

You can leave a response, or trackback from your own site.

Leave a Reply