Докер внутри OpenVZ VPS

Я проверил https://openvz.org/Docker_inside_CT.

В моем VPS версия ядра 2.6.32-042stab120.11

Хостинг подтвердил, что некоторые из их клиентов используют Openvz с установленным докером. Так что я должен иметь возможность запускать Docker.

Я пытался найти решение своей проблемы, но безуспешно.

Я могу установить CentOS; дебиан7,8; убунту 14,16. Я попробовал Debian 8 и Ubuntu 16.04, и у меня возникают те же проблемы. В процессе установки я получаю сообщение об ошибке:

Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
invoke-rc.d: initscript docker, action "start" failed.
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sat 2017-07-22 08:01:57 EDT; 38ms ago
     Docs: https://docs.docker.com
  Process: 22638 ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS (code=exited, status=1/FAILURE)
 Main PID: 22638 (code=exited, status=1/FAILURE)

Jul 22 08:01:57 xyz systemd[1]: Starting Docker Application Container Engine...
Jul 22 08:01:57 xyz docker[22638]: time="2017-07-22T08:01:57.543399289-04:00" level=fatal msg="Your Linux kernel version 2.6.32-042stab120.11 is unstable running Docker. Please upgrade your kernel to 3.10+."
Jul 22 08:01:57 xyz systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
Jul 22 08:01:57 xyz systemd[1]: Failed to start Docker Application Container Engine.
Jul 22 08:01:57 xyz systemd[1]: docker.service: Unit entered failed state.
Jul 22 08:01:57 xyz systemd[1]: docker.service: Failed with result 'exit-code'.
dpkg: error processing package docker.io (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 docker.io
E: Sub-process /usr/bin/dpkg returned an error code (1)

Вывод из версии докера

Client:
 Version:      1.10.3
 API version:  1.22
 Go version:   go1.6.1
 Git commit:   20f81dd
 Built:        Wed, 20 Apr 2016 14:19:16 -0700
 OS/Arch:      linux/amd64
An error occurred trying to connect: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.22/version: read unix @->/var/run/docker.sock: read: connection reset by peer

Я не знаю, почему версия докера не возвращает мне версию сервера и как я могу заставить докер работать на этой машине.

Если я устанавливаю docker-engine 1.9.1, я получаю

Jul 22 11:09:32 xyz docker[32115]: time="2017-07-22T11:09:32.413474210-04:00" level=warning msg="Your Linux kernel version 2.6.32-042stab120.11 can be unstable running docker. Please upgrade your kernel to 3.10.0."
Jul 22 11:09:32 xyz docker[32115]: time="2017-07-22T11:09:32.417040756-04:00" level=error msg="'overlay' not found as a supported filesystem on this host. Please ensure kernel is new enough and has overlay support loaded."
Jul 22 11:09:32 xyz docker[32115]: time="2017-07-22T11:09:32.420093045-04:00" level=warning msg="Running modprobe bridge br_netfilter failed with message: modprobe: ERROR: ../libkmod/libkmod.c:514 lookup_builtin_fil...be: WARNING: Modul
Jul 22 11:09:32 xyz docker[32115]: time="2017-07-22T11:09:32.421785030-04:00" level=warning msg="Running modprobe nf_nat failed with message: `modprobe: ERROR: ../libkmod/libkmod.c:514 lookup_builtin_file() could not open builtin fil...
Jul 22 11:09:32 xyz docker[32115]: time="2017-07-22T11:09:32.446647894-04:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"
Jul 22 11:09:32 xyz docker[32115]: time="2017-07-22T11:09:32.457352813-04:00" level=fatal msg="Error starting daemon: Error initializing network controller: Error creating default \"bridge\" network: package not installed"
Jul 22 11:09:32 xyz systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
Jul 22 11:09:32 xyz systemd[1]: Failed to start Docker Application Container Engine.
Jul 22 11:09:32 xyz systemd[1]: docker.service: Unit entered failed state.
Jul 22 11:09:32 xyz systemd[1]: docker.service: Failed with result 'exit-code'.
Hint: Some lines were ellipsized, use -l to show in full.
dpkg: error processing package docker-engine (--configure):
 subprocess installed post-installation script returned error exit status 1
Processing triggers for libc-bin (2.23-0ubuntu9) ...
Processing triggers for systemd (229-4ubuntu19) ...
Errors were encountered while processing:
 docker-engine
E: Sub-process /usr/bin/dpkg returned an error code (1)

person skicek    schedule 22.07.2017    source источник


Ответы (1)


Мне удалось запустить докер внутри контейнера CentOS 7 на хосте OpenVZ 6, используя документацию из их вики. , но я не пробовал это с другими дистрибутивами.

Если вы посмотрите на вики, обратите внимание на ограничения. Он сможет запускать только Драйвер хранилища "vfs", поэтому вы теряете многие преимущества хранилища Docker.

Убедитесь, что ваш контейнер имеет интерфейс veth, а не venet по умолчанию, или докер не запустится и будет жаловаться на проблемы с мостом (может дополнительно потребоваться включение функции моста для вашего контейнера).

Вам также необходимо настроить докер для использования драйвера хранилища vfs, я заметил из опубликованной вами ошибки 1.9.1, что он жаловался на попытку использовать оверлейное хранилище.

Я видел еще одну ошибку, связанную с nf_nat, которая указывает, что хост ограничивает сетевой фильтр в контейнере, сетевой фильтр должен быть установлен на полный для вашего контейнера, как описано в вики.

person GracefulRestart    schedule 02.08.2017
comment
хм, так что мне нужен veth, хм, это может быть проблемой, да. Вам также необходимо настроить докер для использования драйвера хранилища vfs, но как я могу настроить его перед установкой? или вы упоминаете об этом, чтобы настроить его после установки? - person skicek; 03.08.2017
comment
Я использовал для этого только CentOS 7, и при использовании RPM Docker не запускается автоматически при установке. Чтобы apt/dpkg не запускал докер после установки, чтобы вы могли его настроить, вы должны иметь возможность использовать /usr/sbin/policy-rc.d. Там должно быть много онлайн-документации, посвященной этому. - person GracefulRestart; 03.08.2017