簡體   English   中英

在容器內 chowning 主機綁定的 `docker.sock` 會破壞主機 docker

[英]chowning the host's bound `docker.sock` inside container breaks host docker

在 Docker for Mac 的 vanilla 安裝中,我的docker.sock歸我的本地用戶所有:

$ stat -c "%U:%G" /var/run/docker.sock

juliano:staff

即使我添加用戶和組對我的Dockerfile ,試圖運行DIND作為我來說,當該貼裝docker.sock與創建root:root

$ docker run -it --rm \
    --volume /var/run/docker.sock:/var/run/docker.sock \
    --group-add staff \
    --user $(id -u):$(id -g) \
    "your-average-container:latest" \
    /bin/bash -c 'ls -l /var/run/docker.sock' 

srw-rw---- 1 root root 0 Jun 17 07:34 /var/run/docker.sock

反過來說,以 root 身份運行 DinD, chown套接字,然后運行命令會破壞主機 docker

$ docker run -it --rm \
    --volume /var/run/docker.sock:/var/run/docker.sock \
    --group-add staff \
    "your-average-container:latest" \
    /bin/bash

$ chown juliano:staff /var/run/docker.sock
$ sudo su juliano
$ docker ps

[some valid docker output]

$ exit

$ docker ps

Error response from daemon: Bad response from Docker engine

我看到人們報告說chowning 是一種可行的方法,所以也許我做錯了什么。

問題:

  • 為什么主機docker會崩潰?
  • 有什么方法可以防止主機 docker 中斷並仍然允許我的用戶訪問 docker 內的套接字?

我相信,當您安裝卷時,所有者 UID/GID 設置為與主機中的相同(--user 標志僅允許您將命令作為特定 UID/GID 運行,它沒有影響關於安裝卷的權限)

主要問題是——你為什么需要chown? 你不能以 root 身份運行容器內的命令嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM