도커 내부의 도커
다음은 세 가지 방법입니다. (1) 및 (2)는 docker 데몬에 대한 더 많은 권한이 있으므로 보안이 필요합니다. docker에서 방화벽을 사용하거나 rootless로 만들 수 있습니다.
다음 문서가 도움이 될 수 있습니다.
Docker에 방화벽 추가
manish srivastava ・ 7월 4일 ・ 2분 읽기
#devops
#docker
#beginners
#linux
해커가 도커 컨테이너를 '첫사랑'으로 여기는 이유는 무엇입니까? 해킹 도커
manish srivastava ・ 2020년 6월 4일 ・ 21분 읽기
#docker
#linux
#showdev
#devops
그리고
새로운 유형의 Docker: Rootless + Safer: 모든 Docker 사용자를 위한 것입니다.
manish srivastava ・ 2020년 6월 1일 ・ 9분 읽기
#docker
#linux
#devops
#showdev
세 가지 방법에서는 sysbox를 사용합니다.
방법 1: [/var/run/docker.sock]을 사용하는 Docker의 Docker
Docker 데몬이 실행 중인 동일한 호스트에 있는 경우/var/run/docker.sock을 사용하여 컨테이너를 관리할 수 있습니다.
docker 내부에서 docker를 실행하려면 기본 Unix 소켓 docker.sock을 볼륨으로 사용하여 docker를 실행하기만 하면 됩니다.
docker run -v /var/run/docker.sock:/var/run/docker.sock \
-ti docker
이제 컨테이너 내에서 이미지를 빌드하고 레지스트리에 푸시하기 위한 docker 명령을 실행할 수 있어야 합니다.
docker.sock을 볼륨으로 마운트하는 대화형 모드에서 Docker 컨테이너를 시작합니다. 공식 도커 이미지를 사용하겠습니다.
docker run -v /var/run/docker.sock:/var/run/docker.sock -ti docker
#Inside Container
docker pull ubuntu
#When you list the docker images, you should see the ubuntu image along with other docker images in your host VM
docker images
# Now create a Dockerfile inside test directory
and RUN DOCKER FILE
docker build -t test-image .
방법 2: dind를 사용하는 Docker의 Docker
참고: 이렇게 하려면 컨테이너를 권한 있는 모드로 실행해야 합니다.
docker run --privileged -d --name dind-test docker:dind
docker exec -it dind-test /bin/sh
docker pull ubuntu
docker images
mkdir test && cd test
vi Dockerfile
#Create Docker file and then run
docker build -t test-image
방법 3: Sysbox 런타임을 사용하는 Docker의 Docker
방법 1과 2는 기본 컨테이너를 권한 모드로 실행하기 때문에 보안 측면에서 몇 가지 단점이 있습니다. Nestybox는 sysbox Docker 런타임을 통해 이 문제를 해결하려고 합니다. 그러나 방화벽을 구현하면 보안 계층을 얻을 수 있습니다. 위의 내 기사를 확인하십시오.
(1) 시스박스 CE 받기
오픈 소스 Sysbox를 기반으로 하는 커뮤니티 에디션.
네스티박스
/
시스박스
루트가 없는 컨테이너가 VM처럼 Systemd, Docker, Kubernetes와 같은 워크로드를 실행할 수 있도록 지원하는 오픈 소스 차세대 "runc"입니다.
소개
Sysbox는 원래 개발된 오픈 소스 컨테이너 런타임(일명 runc)입니다.
by Nestybox , 컨테이너를 두 가지로 향상
주요 방법:
컨테이너 격리 개선: Sysbox는 항상 Linux를 활성화합니다.
컨테이너의 사용자 네임스페이스(즉, 컨테이너의 루트 사용자는
호스트에 대한 권한), 컨테이너 내부의 호스트 정보를 숨기고
컨테이너의 초기 마운트 등.
컨테이너가 VM으로 작동하도록 지원: Sysbox를 사용하면 컨테이너가 가능해집니다.
다음을 포함하여 물리적 호스트 또는 VM에서 실행되는 대부분의 워크로드 실행
systemd, Docker, Kubernetes 등을 원활하고 적절하게 격리
(특권 컨테이너 없음, 복잡한 이미지 없음, 까다로운 진입점 없음, 없음
특수 볼륨 마운트 등)
Sysbox는 OCI 기반 "runc"입니다. 즉, 일반적으로 Docker를 사용하고
이러한 향상된 컨테이너를 배포하기 위한 Kubernetes(실제로 Sysbox는
덮개, 직접 상호 작용하지 않음). 따라서 새로운 것을 배울 필요가 없습니다.
도구를 사용하거나 기존 컨테이너를 수정하십시오…
View on GitHub
기사 작성 당시supported distros는 다음과 같습니다.
Ubuntu Bionic(18.04),Ubuntu Focal(20.04),Debian Buster(10),Debian Bullseye(11),Fedora 31,Fedora 32,CentOS 8
설치 중:
git clone --recursive [email protected]:nestybox/sysbox.git
make sysbox
sudo make install
#Once Sysbox is installed, you start it with:
sudo ./scr/sysbox
#Configuring Docker
sudo ./scr/docker-cfg --sysbox-runtime=enable
(2)시스템박스 사용
docker run --runtime=sysbox-runc --name sysbox-dind -d docker:dind
docker exec -it sysbox-dind /bin/sh
축하합니다 :)
여기는 nice article
더 나아가 :
나는 이 회의의 참석자 중 한 명이었습니다. sysboxhttps://bluejeans.com/s/Qq_IsjrnOaG에 대해 말하는 공동 창립자를 찾을 수 있습니다. 20.05분
내 팀에 가입하려면 여기를 클릭하십시오.
Reference
이 문제에 관하여(도커 내부의 도커), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/manishfoodtechs/docker-inside-docker-57fj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)