Computer >> 컴퓨터 >  >> 소프트웨어 >> 가상 기기

LXD 및 Docker 컨테이너 중첩 - 자습서

Arcane Weekly에 오신 것을 환영합니다. 오늘 저는 당신이 직면할 가능성이 없는 문제에 대해 이야기하고 싶습니다. 그러나 만약 그렇다면 빠르고 편리한 해결책을 원할 것입니다. 사용 가능한 도구:LXD 컨테이너, Docker. 당면한 임무:두 개를 동시에 실행하고 싶습니다. 보다 구체적으로 LXD 컨테이너를 생성한 다음 그 내부에서 Docker 컨테이너를 시작하려고 합니다. 왜요? 왜 안돼.

그렇다면 문제는 다음과 같습니다. 다음 오류와 함께 Docker 실행이 실패합니다. docker:Error response from daemon:OCI runtime create failed:container_linux.go:367:starting container process cause:process_linux.go:495:container init cause:rootfs_linux.go:60:mounting " "/proc"에서 rootfs에 대한 proc" 원인:권한 거부됨:알 수 없음. 거기에 많은 텍스트가 있습니다. 디버그해볼까요?

자세한 문제

일반적으로 Docker 컨테이너를 실행할 때 /proc에 액세스하는 데 문제가 없어야 합니다. 그러나 위의 오류는 이것이 가능하지 않음을 알려줍니다. 많은 정보를 포함하고 있어 오해의 소지가 있는 흔적을 남기기 때문에 다소 혼란스러운 메시지입니다. 사실, 문제가 발생할 수 있는 이유에는 여러 가지가 있을 수 있습니다. 내 경우 설정은 완전히 새로운 바닐라였으며 미친 사용자 정의가 없었습니다. 다른 오류는 없었으며 모든 실질적인 목적을 위해 Docker가 올바르게 설치되고 구성되었습니다.

그런 다음 LXD가 어떻게 작동하는지 살펴보고 싶고 이것이 내가 이 문제를 보고 있는 이유를 더 잘 이해할 수 있을 것이라고 생각했습니다. 사실, 나는 곧 상황을 설명하는 LXD에 대한 반 문서화 된 오래된 기사를 발견했습니다. 보안상의 이유로 컨테이너는 안전하지 않은 방식으로 /proc 및 /sys에 액세스할 수 없습니다. 관련 보안 관련 사항과 함께 이에 대한 해결 방법은 이러한 액세스를 허용하는 것입니다.

솔루션

당신이 해야 할 일은 영향을 받는 컨테이너에 대한 중첩을 허용하는 것입니다.

lxc 실행 "이미지" "컨테이너 이름" -c security.nesting=true

컨테이너가 있는 경우 시작하기 전에:

lxc 구성 설정 "컨테이너 이름" security.nesting true

그런 다음 컨테이너를 시작합니다.

lxc 시작 "컨테이너 이름"

이미 실행 중인 경우 컨테이너를 중지하고 정책을 설정한 다음 다시 시작합니다. 이 작업은 비파괴적이므로 컨테이너를 이미 생성한 후에만 문제가 발생하더라도 그 안에 있는 작업이나 데이터는 손실되지 않습니다. 설정도 완전히 뒤집을 수 있습니다. 그리고 여기서 우리 일을 끝내세요.

결론

약 5년 동안 있었던 문제를 이제서야 접하게 되었다는 사실이 흥미롭습니다. 또는 너무 많은 사람들이 이 문제에 직면하고 있지만 정보가 부족하고 흩어져 있습니다. 음, 중첩 컨테이너를 사용하려는 경우 LXD에서 영향을 받는 컨테이너에 대한 보안 정책을 편집하고 싶을 것입니다. 이것은 비교적 간단한 트릭입니다. 물론 권한이 있는 컨테이너와 권한이 없는 컨테이너의 개념 및 기타 보안 고려 사항과 같은 더 많은 사항이 있습니다. 그러나 귀하의 업무가 보안에 관한 것이 아니라면 이 변경으로 인한 단점은 없습니다.

더 나은 문서가 도움이 될 것입니다. 덜 비밀스러운 오류 메시지도 있습니다. 한편, 설정에서 수행하려는 작업에 대한 권한 오류가 있을 수 있는 이유를 생각하고 올바른 방향으로 안내해야 합니다. 문제 진술의 틀을 잡는 방법을 알게 되면 80%는 완료된 것입니다. 이제 컨테이너 내에서 컨테이너를 수행할 수 있습니다. 전체:Yo Dawn, I herd u like containers, 그래서 우리는 컨테이너를 컨테이너에 넣습니다. 시작. 보너스:우주가 폭발하기 전에 얼마나 많은 수준의 중첩을 할 수 있는지 확인해보세요.

건배.