簡體   English   中英

/var/run/docker.sock在centos 7上運行的容器中無法訪問

[英]/var/run/docker.sock unaccessible in container running on centos 7

我正在啟動一個運行bash腳本的容器,該腳本使用Centos 7.0.1406上的docker 1.3.2在內部進行docker構建。 文件/命令位於https://gist.github.com/wrabbit-revisited/1d70d0f1805be1848c08

docker build需要訪問docker socket,所以我使用了一個常見的技巧,如http://nathanleclaire.com/blog/2014/07/12/10-docker-tips-and-tricks-that-will-make-你唱一首鯨魚之歌/

-v /var/run/docker.sock:/var/run/docker.sock

在構建之前,我在腳本中運行檢查:

if [ -e "/var/run/docker.sock" ];
then
  echo "docker.sock found"
else
  echo "docker.sock not found"
fi

並且“echo”顯示找不到docker.sock。 如果使用sudo在容器外部進行檢查,則會發現。

我嘗試在“docker run”命令行中添加“--permissive = true”,但沒有明顯的變化。

這里有一些類似問題的參考: https//github.com/dpw/selinux-dockersock 它針對Fedora / RHEL,但也沒有解決這個問題。 如果我使用“setenforce Permissive”和sestatus來確保selinux處於許可模式,問題仍未得到解決。

我還嘗試將“--security-opt = label:type:docker_t”添加到docker命令行,按照https://github.com/jwilder/nginx-proxy/issues/40 沒有明顯的效果。

這里描述了Docker的selinux策略: http//www.unix.com/man-page/centos/8/docker_selinux/

很多信息,但我不確定selinux是否有助於解決問題。 如果我編輯/ etc / selinux / config以禁用selinux然后重新啟動並運行sestatus它說selinux被禁用,但問題仍然存在。

看,它可能與此有關: https//github.com/docker/compose/issues/983 使用這個技巧在容器內運行docker是很常見的,但也許有更好的方法來做到這一點或一個好的解決方法。 我認為是dind,但這是工作,這是一個廣泛使用的,簡單的(表面上),在容器內運行docker構建的方法。 可能有一個簡單的解決方案。

任何幫助,將不勝感激! 謝謝

我認為您的問題可能是由於對docker run-v選項的誤解。 你說你做到了

-v /var/run/docker:/var/run/docker

這將在容器中為文件或目錄/var/run/docker創建綁定裝入。 但在你的情況下,沒有這樣的文件或目錄。 你想要文件/var/run/docker.sock 所以你需要這樣做

-v /var/run/docker.sock:/var/run/docker.sock

將該文件掛載到容器中。

由於/var/run/docker不存在,您可能想知道為什么docker沒有告訴您有關錯誤的信息。 但是-v選項具有令人驚訝的行為,如果主機上不存在該路徑,則docker會將其創建為目錄。 所以你最終在主機和容器上有一個無用的空/var/run/docker目錄。

原則上,您也可以執行-v /var/run:/var/run來綁定掛載包含目錄。 但是,給容器訪問主機的/var/run目錄樹可能是一個壞主意。

當您使用CentOS時,您還需要使用https://github.com/dpw/selinux-dockersock訪問/var/run/docker.sock,以便在執行模式下使用SELinux。

從長遠來看,確認安裝https://github.com/dpw/selinux-dockersock就足夠了。

一個快速的替代方法是在啟動容器時傳遞--privileged參數。

暫無
暫無

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

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