簡體   English   中英

Docker:/var/run/docker.sock:沒有這樣的文件或目錄

[英]Docker : /var/run/docker.sock: no such file or directory

紅外

我正在嘗試設置一個mesos <->馬拉松集群分發容器。 在我的主服務器上,我有:

  1. 動物園管理員
  2. Docker Registry v2(端口5000)wo憑據
  3. 裝有監督+中壓+馬拉松的容器

此外,我有一個從屬服務器(在同一服務器上)。

$docker ps 
192.168.0.38:5000/mesos-slave:prod                                                                                  mesos-slave-1
192.168.0.38:5000/mesos-master:generic                                                                              mesos-master
jplock/zookeeper                           0.0.0.0:2181->2181/tcp, 0.0.0.0:2888->2888/tcp, 0.0.0.0:3888->3888/tcp   nostalgic_visvesvaraya
registry:2                                 0.0.0.0:5000->5000/tcp                                                   registry

問題

我的問題是我不能馬拉松式將docker映像發送到從屬服務器。

我認為這來自於從站的配置。

$ docker exec -ti mesos-slave-1 /bin/bash
root@xw8600-Workstation:/# docker info
Get http:///var/run/docker.sock/v1.19/info: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?

問題出在{dial unix /var/run/docker.sock:沒有這樣的文件或目錄}上。

從站的Dockerfile

從站的Dockerfile看起來大致像這樣:

FROM 192.168.0.38:5000/supervisor:prod

RUN apt-get -y --fix-missing update
RUN apt-get install -y --force-yes mesos

#Mesos
RUN echo 'docker,mesos' > /etc/mesos-slave/containerizers
RUN echo '5mins' > /etc/mesos-slave/executor_registration_timeout

COPY mesos-slave.conf /etc/supervisor/conf.d/mesos-slave.conf

CMD  supervisord -c /etc/supervisor.conf

mesos-slave.conf看起來像這樣:

[program:mesos-slave]
command=mesos-slave --master=%(ENV_MASTER)s --ip=%(ENV_IP)s --hostname=%(ENV_HOSTNAME)s --resources=%(ENV_RESOURCES)s --attributes=%(ENV_ATTRIBUTES)s --port=%(ENV_SLAVE_PORT)s --log_dir=/etc/mesos/logs --containerizers=docker,mesos --no-switch_user

我在錯誤日志上總是遇到相同的錯誤。 拉rstudio的示例:

failed to start: Failed to 'docker -H unix:///var/run/docker.sock pull 192.168.0.38:5000:rocker/rstudio': exit status = exited with status 1 stderr = Post http:///var/run/docker.sock/v1.19/images/create?fromImage=192.168.0.38%3A5000%3Arocker%2Frstudio%3Alatest: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?

我做錯了什么?

編輯

看來我無法啟動docker

root@xw8600-Workstation:/var/log/upstart# sudo /etc/init.d/docker status
 * Docker is not running
root@xw8600-Workstation:/var/log/upstart# sudo /etc/init.d/docker start
 * Starting Docker: docker
   ...done.
root@xw8600-Workstation:/var/log/upstart# sudo /etc/init.d/docker status
 * Docker is not running

編輯2

這里回答我的問題:我有一個mesos slave(v1.7),我試圖在該奴隸上運行一個docker。 當我進入容器時,出現以下錯誤日志:

$ cat /var/log/docker.log 
time="2015-10-17T12:27:40.963674511Z" level=fatal msg="Error starting daemon: error initializing graphdriver: operation not permitted" 

我在互聯網上找不到太多信息,這是一些類似的問題:

  1. https://github.com/jpetazzo/dind/issues/89
  2. https://github.com/docker/docker/issues/14543
  3. Ubuntu上的Docker hello-world-權限被拒絕

您無法在Docker容器中重新啟動Docker。 您可以在docker容器中運行docker但要重新啟動嗎? (如果我錯了糾正我)

本質上,您正在容器“ xw8600-Workstation”中停止泊塢窗守護程序,而容器本身正在使用相同的泊塢窗守護程序。

更好的架構是將mesos-slave安裝在普通VM或裸機中,然后在其中運行docker守護進程,並讓mesos / marathon通過Docker管理資源。 希望有道理。

我在CoreOS上運行了完全由docker化的Mesos / Marathon基礎架構。 如果您想看看systemd 服務定義 ,請隨時...

我認為您缺少將Docker unix套接字和cgroups傳遞給您的從屬容器的方法,請參閱

Docker運行命令:

docker run -d \
  -v /sys/fs/cgroup:/sys/fs/cgroup \
  -v /usr/bin/docker:/usr/bin/docker:ro \ 
  -v /var/run/docker.sock:/var/run/docker.sock \
  [your other options] \
  192.168.0.38:5000/mesos-slave:prod 

就我個人而言,我還會為馬拉松運行另一個單獨的容器,而不是將其與Mesos Master放在同一圖像中,但這可能是個問題。

暫無
暫無

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

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