【问题标题】:Docker : /var/run/docker.sock: no such file or directoryDocker:/var/run/docker.sock:没有这样的文件或目录
【发布时间】:2016-02-18 04:41:06
【问题描述】:

基础设施

我正在尝试建立一个 mesos马拉松集群分发容器。 在我的主服务器上,我有:

  1. 动物园管理员
  2. docker registry v2(端口 5000)wo 凭据
  3. 一个带有supervisord + mesos + marathon的容器

此外,我有一个奴隶(在同一台服务器上)。

$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: no such file or directory}。

Slave 的 Dockerfile

slave 的 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

在我的问题here 之后:我有一个 mesos 从站(v1.7),我尝试在其上运行 docker 中的 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. Docker hello-world on Ubuntu - permission denied

【问题讨论】:

    标签: ubuntu dns docker mesos


    【解决方案1】:

    我在 CoreOS 上运行一个完全 docker 化的 Mesos/Marathon 基础架构。如果你想看看systemdservice definitions,请随意...

    我认为您缺少将 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 
    

    就我个人而言,我还会为 Marathon 运行另一个单独的容器,而不是将它与 Mesos Master 放在同一个映像中,但这可能是个人喜好问题。

    【讨论】:

      【解决方案2】:

      您无法在 docker 容器中重新启动 docker。 You can run docker within a docker containers 但是重启? (如果我错了,请纠正我)

      本质上,您正在停止容器“xw8600-Workstation”中的 docker 守护程序,而容器本身正在使用相同的 docker 守护程序。

      更好的架构是将你的 mesos-slave 放在一个普通的 VM 或裸机中,然后在那里运行你的 docker 守护进程,让 mesos/marathon 通过 Docker 管理你的资源。希望有道理。

      【讨论】:

        猜你喜欢
        • 2014-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-13
        • 1970-01-01
        • 1970-01-01
        • 2023-02-02
        相关资源
        最近更新 更多