특권 모드가 없는 도커의 도커

특권 모드가 없는 도커의 도커

지난번에는 주자를 위한 docker에서 docker를 사용했지만특권 모드가 필요합니다

파일 작성:

version: '3.7'
services:
  runner:
    image: gitlab/gitlab-runner:latest
    volumes:
      - ./config:/etc/gitlab-runner
      - ./run:/var/run/
#      - /var/run/docker.sock:/var/run/docker.sock

  docker:
    image: docker:dind
    restart: always
    privileged: true # <-- security problems
    volumes:
      - ./run:/var/run/

개인 PC가 있습니다. Gitlab CI를 사용하여 실행 docker build하거나 스크립트를 작성 해야 하는 Gitlab 팀이 있습니다 . docker-compose upCI 속도를 정말 높이고 싶습니다. 그래서 나는 내 것을 공유한다.주인도커주자, 이제 도커 캐시(이미지 등)가 있으며 한 단계 빌드 이미지와 다른 단계 빌드 이미지가 필요할 때 정말 빠릅니다.

Jenkins에도 동일한 문제가 있습니다. 호스트 Docker를 작업자 노드와 공유해야 합니다.

지난번에는 새로운 접근 방식을 테스트하고 자체 도커를 사용하여 러너를 실행하고 싶었습니다. 중요한 2가지가 거의 없습니다. - 리소스 제한(CPU 코어 8개 중 7개, 16GB 메모리 중 10개, 일부 HDD 제한을 공유하고 싶습니다) - 보안

추가하는 것이 중요합니다. GPU, 네트워크 기능, 일부 장치 마운트 등이 필요한 CI 스크립트가 없습니다. 그들은 일반적으로 간단 docker build하고 docker push때로는 유물을 잡아야 할 때도 있습니다 docker cp. 그게 전부입니다. 주요 질문: 방법호스트 시스템에 대한 루트 권한 없이 docker에서 docker를 실행합니다.?

둘 다 - 소켓 공유 또는 특권 모드는 호스트 시스템에 취약성을 제공하고 가상 시스템(VirtualBox 등)이 느리고 어렵습니다. 또한 리소스를 공유하고 싶고 해당 도커를 원합니다.~할 수 있다16GB 중 10GB를 사용하되, 사용하지 않을 때에는 10GB는 여유 공간이 있어야 합니다.

일반적인 권한으로 실행할 때 dind contatiner(실패 전)에서 정보가 없는 오류가 발생했습니다.

gitlab-runner-docker | mount: permission denied (are you root?)
gitlab-runner-docker | mount: permission denied (are you root?)
gitlab-runner-docker | Could not mount /sys/kernel/security.
gitlab-runner-docker | AppArmor detection and --privileged mode might break.

권한 모드 없이 docker에서 docker를 실행하려고 하면 어떤 문제가 발생합니까? 어떻게 하나요?

답변1

음, RAM 메모리의 로드 밸런싱과 관련하여 도움을 드릴 수는 없지만 현재 사용자를 docker 그룹에 추가하면 sudo 권한 없이 docker(dind)에서 docker를 실행할 수 있습니다.

무결성을 잃기 때문에 공유 소켓의 보안을 볼 수 없지만 특권 매개변수가 있는 작곡가 매개변수를 사용하여 dind를 인스턴스화하는 것이 좋습니다.

관련 정보