docker:/var/run/docker.sock:没有这样的文件或目录

i2byvkas  于 2021-06-21  发布在  Mesos
关注(0)|答案(2)|浏览(322)

基础设施

我正在尝试建立一个mesos<->马拉松集群来分发集装箱。在我的主服务器上,我有:
Zookeeper
docker registry v2(端口5000)wo凭证
带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}上。

奴隶码头文件

从属文件的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中的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"

我在网上找不到太多的信息,这里有一些类似的问题:
https://github.com/jpetazzo/dind/issues/89
https://github.com/docker/docker/issues/14543
ubuntu上的docker hello world-权限被拒绝

i7uq4tfw

i7uq4tfw1#

我在coreos上运行完全对接的mesos/marathon基础设施。如果你想看看 systemd 服务定义,请随意。。。
我想你错过了传递docker unix套接字和 cgroups 到您的从属容器,请参阅
https://github.com/tobilg/coreos-setup/blob/master/etc/systemd/system/mesos-slave.service#l17
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大师,但这可能是一个品味的问题。

zy1mlcev

zy1mlcev2#

不能在docker容器中重新启动docker。您可以在docker容器中运行docker,但要重新启动吗(如果我错了,请纠正我)
实际上,您正在停止容器“xw8600 workstation”中的docker守护程序,而容器本身正在使用完全相同的docker守护程序。
一个更好的架构是将mesos从机放在普通vm或裸机中,然后在那里运行docker守护进程,让mesos/marathon通过docker管理您的资源。希望有道理。

相关问题