热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

/var/run/docker.sock在centos7上运行的容器中无法访问

如何解决《/var/run/docker.sock在centos7上运行的容器中无法访问》经验,为你挑选了1个好方法。

我正在启动一个运行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构建的方法.可能有一个简单的解决方案.

任何帮助,将不胜感激!谢谢



1> 小智..:

我认为你的问题可能是由于误解了-v选项docker run.你说你做到了

-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可以绑定mount包含的目录.但是,让容器访问主机的/var/run目录树可能是个坏主意.

当您使用CentOS时,您还需要使用https://github.com/dpw/selinux-dockersock访问/var/run/docker.sock,以便在执行模式下使用SELinux.


谢谢@David selinux-dockersock是必不可少的!
推荐阅读
  • 零入门kubernetes网络实战15>基于golang编程实现给ns网络命名空间添加额外的网卡
    《零入门kubernetes网络实战》视频专栏地址https:www.ixigua.com7193641905282875942本篇文章视频地址(稍后上传)本篇文章主要是想通过g ... [详细]
  • centos7+cdh5.10.0搭建
    一、选择环境:1.说明本次部署使用台机器,3台用于搭建CDH集群,1台为内部源。内部源机器是可以连接公网的,可以提前部署好内部源,本次部署涉及到的服务器的hosts配置如下:192.168 ... [详细]
  • Lunix历史及如何学习
    1.Lunix是什么1.1Lunix是操作系统还是应用程序Lunix是一套操作系统,它提供了一个完整的操作系统当中最底层的硬件控制与资源管理的完整架构, ... [详细]
  • 102安装Linux系统
    安装Linux系统 安装CentOS系统准备系统光盘插入CentOS7光盘,引导安装程序设置主机,将光盘作为第一-引导设备从CentOS7光盘启动主机检测安装光盘的完整性从ISO镜 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • asp.net core 应用docke部署到centos7
    前言前期准备win10(不要安装hyper-V)VMware-Workstation-Pro15.0Xshell6(非必需)VS2019以上环境请自行安装都是默认安装没什么可说的不 ... [详细]
  • 1、oracle官网下载jdk8https:www.oracle.comjavatechnologiesjavasejavase-jdk8-downloads.html2、楼主用的 ... [详细]
  • 这里我们采用两台Nginx服务器作为前端,一主一从,Keepalived实现状态监测,保证Nginx正常对外提供服务,即主Nginx服务进程死掉之后,keepalived能够通过其自身的检测机制 ... [详细]
  • Centos7下Mysql5.7的安装
    1:卸载自带的mysqlrpm-qa|grepmariadb卸载自带数据库:rpm-e--nodeps1、安装YUMRepo ... [详细]
  • 官网的log格式配置文档如下:https:www.rsyslog.comdocv8-stableconfigurationtemplates.html定制一个仅包含l ... [详细]
  • 安全3AAuthentication:认证Authorzation:授权Accouting|Audition:审计用户管理用户:UID:0,不一定是root,root的uid非0时 ... [详细]
  • 十一、构建我们自己的包在本章中,我们将学习如何构建自己的包。编写包可以让我们创建可以在许多应用 ... [详细]
  • win7系统,安装centos7.0首先硬盘分区问题,win7下一个主分区一个扩展分区,用linux的分区来说就是sda1主分区,sda2扩展分区,sda5开始是逻辑分区但 ... [详细]
author-avatar
mobiledu2502938445
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有