docker 中的 docker 沒有特權模式

docker 中的 docker 沒有特權模式

上次我在 docker for runners 中使用了 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/

我有一台個人電腦。我有一個 Gitlab 團隊,需要使用 Gitlab CI來執行docker build或編寫腳本。docker-compose up我真的很想加快 CI 速度。這就是為什麼我分享我的主持人泊塢窗與跑者,現在他們有 Docker 快取(映像等),當一個階段建立映像而另一個階段需要它時,速度非常快。

我和詹金斯有同樣的問題。我需要與工作節點共用主機 docker。

上次我想測試新方法並使用自己的 docker 運行跑步者。我幾乎沒有 2 件重要的事情: - 資源限制(我想共享 8 個 CPU 核心中的 7 個、16 GB 記憶體中的 10 個、一些 HDD 限制) - 安全性

需要補充的是:我沒有需要 GPU、網路功能、掛載某些裝置等的 CI 腳本。他們通常做的很簡單docker builddocker push有時我需要用 來抓取工件docker cp,僅此而已。主要問題:如何在 docker 中執行 docker,無需主機的 root 權限

套接字共享或特權模式都會為主機帶來漏洞,而虛擬機器(如 VirtualBox 等)速度緩慢且難以做到,而且我想共享資源,並且想要那個 docker使用 16 GB 中的 10 個,但 10 GB 在不使用時應該是空閒的。

當我使用通常的權限來運行它時,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組來在docker(dind)中運行docker而無需sudo權限,

我沒有看到共享套接字的安全性,因為它失去了完整性,但我建議使用帶有特權參數的作曲家實例化 dind:true

相關內容