OpenVZ VPS의 LXC 컨테이너

OpenVZ VPS의 LXC 컨테이너

OpenVZ에서 호스팅되는 VPN에서 LXC를 실행하려고 합니다. 다양한 이미지 맛인 우분투를 사용하여 이 작업을 시도했습니다. 센토스, 데비안... 운이 없군요. LXC는 올바르게 설치되지만 네트워킹으로 인해 컨테이너가 시작되지 않습니다. 이는 인터페이스 브리징과 관련된 것 같습니다!

이와 비슷한 문제가 있는 사람이 있나요? 이것이 OpenVZ의 한계인지 아는 사람이 있습니까?

새로운 우분투 14.04 설치부터 시작:

sudo apt-get update 
sudo apt-get install lxc
sudo lxc-create -n p1 -t ubuntu 
sudo lxc-start -n p1 --logfile log.txt
cat log.txt
    lxc-start 1434379565.265 ERROR    lxc_conf - conf.c:instantiate_veth:2949 - failed to create veth pair (vethP4LPC8 and vethO6MP73): Operation not supported
    lxc-start 1434379565.265 ERROR    lxc_conf - conf.c:lxc_create_network:3261 - failed to create netdev
    lxc-start 1434379565.265 ERROR    lxc_start - start.c:lxc_spawn:826 - failed to create the network
    lxc-start 1434379565.265 ERROR    lxc_start - start.c:__lxc_start:1080 - failed to spawn 'p1'
    lxc-start 1434379565.265 ERROR    lxc_start_ui - lxc_start.c:main:342 - The container failed to start.
    lxc-start 1434379565.265 ERROR    lxc_start_ui - lxc_start.c:main:346 - Additional information can be obtained by setting the --logfile and --logpriority options.

그리고 노력하고 있습니다:

sudo brctl addbr lxcbr0
  add bridge failed: Invalid argument

답변1

OpenVZ는 LXC 및 Docker와 유사하지만 다양한 커널 패치를 기반으로 하는 운영 체제 가상화 기술이며 많은 경우 주류 커널과 통합되지 않습니다.

OpenVZ는 현재 컨테이너(주로 cgroup)를 관리하는 데 필요한 것이 많지 않은 오래된 커널(2.6.x)을 기반으로 했습니다. 안타깝게도 OpenVZ 가상 환경에서는 LXC 컨테이너를 실행할 수 없습니다.

답변2

다른 답변을 줄이지 마십시오. OpenVZ 컨테이너가 올바르게 명시되어 있기 때문입니다.컨테이너입니다) 하지만 다음 흥미로운 링크를 참조하세요. OVZ CT의 도커("OpenVZ 커널 042stab105.4부터 컨테이너 내부에서 Docker를 실행할 수 있습니다. 이 문서에서는 방법을 설명합니다.")

문제에 대한 해결책을 제공할 수도 있고 제공하지 않을 수도 있지만 이론적으로는 CT에서 cgroup을 사용하는 것이 가능합니다(보다 최신 커널에서).042stab105.4그리고 다소 새로운 것을 사용함으로써vzctl). 기본적으로 다음이 필요합니다.

  • 커널 구성을 확인하십시오. lxc-checkconfig주어진 커널에서 시도하거나 CONFIG=/boot/config-2.6.32-openvz-042stab108.2-amd64 lxc-checkconfig설치된 커널에 사용하십시오.

괜찮을 것 같으면 앞으로 나아갈 수 있습니다.

vzctl set $veid --save --features bridge:on --netif_add eth0 --netfilter full --devnodes net/tun:rw

그리고 CT에 사용자 정의 cgroup을 마운트합니다.

mount -t tmpfs tmpfs /sys/fs/cgroup
mkdir /sys/fs/cgroup/freezer,devices
mount -t cgroup cgroup /sys/fs/cgroup/freezer,devices -o freezer,devices
mkdir /sys/fs/cgroup/cpu,cpuacct,cpuset
mount -t cgroup cgroup /sys/fs/cgroup/cpu,cpuacct,cpuset/ -o cpu,cpuacct,cpuset

실제로 재미있는 구성이지만 ovz 컨트롤과 cgroup은 본질적으로 호환되지 않습니다(많은 cgroup 기능은 빈 스텁 기능입니다. 예를 들어 아무것도 하지 않고 오류 메시지를 표시하지 않습니다).

면책 조항: 아직 시도하지 않았습니다(내 커널에 cgroup 네임스페이스가 없습니다).

또 다른 유용한 링크는이 Docker 문제 추적기 설명필요한 기능으로 OVZ 커널을 컴파일하는 방법에 대해 알아보세요.

관련 정보