详解docker中使用systemctl启动服务报错的解决办法
docker版本:
[root@localhost gae_proxy]# docker version Client: Version: 1.10.3 API version: 1.22 Package version: docker-common-1.10.3-46.el7.centos.10.x86_64 Go version: go1.6.3 Git commit: d381c64-unsupported Built: Thu Aug 4 13:21:17 2016 OS/Arch: linux/amd64 Server: Version: 1.10.3 API version: 1.22 Package version: docker-common-1.10.3-46.el7.centos.10.x86_64 Go version: go1.6.3 Git commit: d381c64-unsupported Built: Thu Aug 4 13:21:17 2016 OS/Arch: linux/amd64
镜像版本
[root@b2ca5610d3da /]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core)
在docker中通过systemctl 启动服务的时候总是报Failed to get D-Bus connection: Operation not permitted 这样的错误提示。
[root@25d27693a24d ~]# systemctl start sshd Failed to get D-Bus connection: Operation not permitted
解决办法就是在docker run 的时候运行/usr/sbin/init 。比如:
[root@localhost /]# docker run -tid --name hadoopbase centos/hadoopbase:v001 /usr/sbin/init
这样运行起来的container就可以使用systemctl来启动服务了,有的人说在CentOS7.2中解决了通过systemctl运行报错的问题,但是我在实际操作中还是遇到这样的问题。
还有一种解决办法,就是在通过Dockerfile生成镜像文件的时候,通过CMD来执行/usr/sbin/init这条命令,即:CMD [ "/usr/sbin/init"];
参考:https://github.com/docker/docker/issues/7459
https://github.com/docker/docker/issues/2296
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Docker容器内应用服务自启动的方法示例
如果想把Docker容器内的应用服务随着容器开启时自启动.只需要将服务启动的脚本写在Dockerfile里,然后用Dockerfile重构镜像即可实现: 编写应用服务自启动脚本 编写Dockerfile 重构镜像 开启容器 编写服务自启动脚本(dockerd) (tomcat为例) #!/bin/bash # # # # chkconfig: 345 98 30 # description: tomcat program. # processname: tomcat # Source funct
-
docker compose 服务启动顺序控制的方法
概要 docker-compose 可以方便组合多个 docker 容器服务, 但是, 当容器服务之间存在依赖关系时, docker-compose 并不能保证服务的启动顺序. docker-compose 中的 depends_on 配置是容器的启动顺序, 并不是容器中服务的启动顺序. 问题重现 首先, 我们构造一个示例, 来演示 docker-compose 带来的问题. docker-compose.yml 文件如下: version: '2' services: web: image:
-
CentOS7 docker服务无法启动解决方案及实现步骤
CentOS7 docker服务无法启动解决方案 检查步骤 启动docker服务: systemctl restart docker 这个时候会报错,请进行以下步骤: 1. 找到报错的类型,或者报错的说明. 2. 检查docker的配置文件 3. 检查磁盘空间 4. 检查端口占用情况 步骤详解 检查报错类型,查看日志: journalctl -xe 检查配置文件,不同操作系统位置基本相同: /etc/sysconfig/docker/ 或者直接找到docker运行程序,一般会有相关配置文件的默
-
Docker如何同时启动多个服务
前几篇Docker的文章介绍启动容器时都是只启动一个后台服务,今天来说说怎样通过supervisor来启动多个服务 1. 首先创建一个目录并在目录下创建一个Dockerfile,文件内容如下 FROM centos:centos6 MAINTAINER Fanbin Kong "kongxx@hotmail.com" RUN rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rp
-
Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
本文实例为大家分享了Dockerfile创建支持ssh服务自启动的容器镜像,供大家参考,具体内容如下 1. 首先创建一个Dockerfile文件,文件内容如下 # 选择一个已有的os镜像作为基础 FROM centos:centos6 # 镜像的作者 MAINTAINER Fanbin Kong "kongxx@hotmail.com" # 安装openssh-server和sudo软件包,并且将sshd的UsePAM参数设置成no RUN yum install -y openssh
-
详解docker中使用systemctl启动服务报错的解决办法
docker版本: [root@localhost gae_proxy]# docker version Client: Version: 1.10.3 API version: 1.22 Package version: docker-common-1.10.3-46.el7.centos.10.x86_64 Go version: go1.6.3 Git commit: d381c64-unsupported Built: Thu Aug 4 13:21:17 2016 OS/Arch: l
-
详解React-Router中Url参数改变页面不刷新的解决办法
问题 今天在写页面的时候发现一个问题,就是在React Router中使用了Url传参的功能,像这样: export class MainRouter extends React.Component { render() { return ( <BrowserRouter> <Switch> ... <Route exact path={'/channel/:channelId'} component={ChannelPerPage}/> ... </Switch
-
MySQL中Multiple primary key defined报错的解决办法
创建主键可以有两种方式: create table 表名( 字段名 类型, 字段名 类型, -- primary key(name) ); 或者是 create table 表名( 字段名 类型 primary key, 字段名 类型, -- ); 但是要注意的是,想要创建复合主键,就不可以用第二种方式. 下面列举一个小例子: 这里报错Multiple primary key defined,表示定义了多个主键,正确的写法是如下: 如果项设置复合主键,复合主键的特点是同时创建.同时删除,所以需要
-
详解Android中PopupWindow在7.0后适配的解决
本文介绍了详解Android中PopupWindow在7.0后适配的解决,分享给大家,具体如下: 这里主要记录一次踩坑的经历. 需求:如上图左侧效果,想在按钮的下方弹一个PopupWindow.嗯,很简单一个效果,然当适配7.0后发现这个PopupWindow显示异常,然后网上找到了下面这种方案. 7.0适配方案(但7.1又复现了) // 将popupWindow显示在anchor下方 public void showAsDropDown(PopupWindow popupWindow, Vie
-
详解cookie验证的php应用的一种SSO解决办法
详解cookie验证的php应用的一种SSO解决办法 近日,项目中需要接入一个"年久失修"的PHP应用,由于系统已经建设多年,并且是信息中心自己的人通过某些工具弄出来的,而且是本人未真正接触过的PHP写的,而且跟我们的系统不在同一服务器上也就是存在跨域的问题,想通过客户端模拟登录的方式来实现,但是总是不成功. 没办法,只好想尽一切办法查看页面源代码,然后,找服务器的php文件,分析. 由于对php不熟悉,加上没有仔细看,因此,对于找到的登录页面的php文件,一开始只是有一个初步的了解,
-
详解iOS14 Widget 开发相关及易报错地方处理
首先了解下如何创建 Xcode -> File -> New -> Target 找到 Widget Extension 如果你的 Widget 支持用户配置属性,则需要勾选这个(例如天气组件,用户可以选择城市),不支持的话则不用勾选 了解下创建Widget后,系统给我们生成的文件内容 下面这个代码是没有勾选 Include Configuration Intent 的地方 Provider // Provider,顾名思义为小组件提供信息得一个struct struct Provide
-
详解vue-cli项目在IE浏览器打开报错解决方法
首先要知道VUE官网已表明仅支持IE8以上版本(不包括IE8),css弹性布局flex各浏览器支持如下: 假如项目用到弹性布局,则项目仅支持IE10以上版本. 另外兼容其他低版本的,请另寻它法. 网上说的本人试了都是没用的,下面是亲自试验的解决方法. 1. 问题 :ie浏览器打开vue2.0项目空白,控制台报错 vuex requires a Promise polyfill in this browser; 解决方法: 安装babel-polyfill npm install babel-po
-
docker容器调用yum报错的解决办法
dockerfile里或者在容器里执行yum,报错,找不到源(invalid baseurl xxx),但是宿主机上执行yum是没问题的啊,为什么? 因为不论是dockerfile使用RUN关键字执行yum还是直接进入到容器里面执行yum,它们都是使用的docker镜像里面的源(CentOS是在路径/etc/yum.repo.d/CentOS-Base.repo),所以你要把宿主机上的同路径下的源拷贝到容器里面,然后docker commit一个新的"基础镜像",这个时候使用docke
-
Typescript中使用引用路径别名报错的解决方法
在TS中引用路径别名提示找不到模块或者相应的声明 1.ts中使用路径别名报错 在react中通常路径别名都是在webpack的webpack.config.js文件中配置的,但是在引入了ts之后,webpack中的路径别名引用失效了此时我们需要在跟src文件同级目录的tsconfig.json文件中添加配置: 注意要在compilerOptions中添加(webpack中的路径也需要配置) "compilerOptions": { "target": "e
-
django启动uwsgi报错的解决方法
uwsgi介绍 uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI / uwsgi / uWSGI 这三个概念的区分. WSGI是一种Web服务器网关接口.它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范. uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信. 而u
随机推荐
- 讲解Oracle数据库中的数据字典及相关SQL查询用法
- 通用分页存储过程,源码共享,大家共同完善
- js调用iframe实现打印页面内容的方法
- Android之沉浸式状态栏的实现方法、状态栏透明
- C++详解默认参数的构造函数及简单实例代码
- IOS App图标和启动画面尺寸详细介绍
- 利用Python开发实现简单的记事本
- 点击按钮出现60秒倒计时的简单js代码(推荐)
- CMS不要让MySQL为你流泪
- 开启Javascript中apply、call、bind的用法之旅模式
- javascript 四十条常用技巧大全
- Python2中的raw_input() 与 input()
- javascript支持IE和firefox(FF)的渐变透明效果
- 浅析JAVA中toString方法的作用
- 一道关于java异常处理的题目
- iOS开发中简单实用的几个小技巧
- Android 触摸事件监听(Activity层,ViewGroup层,View层)详细介绍
- Java继承概念详细解读
- Python中 传递值 和 传递引用 的区别解析
- jquery 验证用户名是否重复代码实例