Systemd在docker容器中使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Systemd在docker容器中使用相关的知识,希望对你有一定的参考价值。

  以centos 7.2容器中运行httpd服务为例子,默认下直接运行

[[email protected] /]# systemctl start httpd.service
Failed to get D-Bus connection: Operation not permitted

在网上找到的解决方法:

  1. 创建Dockerfile创建一个基础镜像

FROM  centos:7.2 
MAINTAINER [email protected]

ENV container docker
RUN yum -y update &&     yum clean all &&     yum -y install systemd &&     yum clean all &&     (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done);     rm -f /lib/systemd/system/multi-user.target.wants/*;    rm -f /etc/systemd/system/*.wants/*;    rm -f /lib/systemd/system/local-fs.target.wants/*;     rm -f /lib/systemd/system/sockets.target.wants/*udev*;     rm -f /lib/systemd/system/sockets.target.wants/*initctl*;     rm -f /lib/systemd/system/basic.target.wants/*;    rm -f /lib/systemd/system/anaconda.target.wants/*
VOLUME ["/sys/fs/cgroup"]
CMD ["/usr/sbin/init"]
[[email protected] ~]# docker build -t centos_test_systemctl .

2.在上面镜像的基础上再构建apache镜像

FROM centos_test_systemctl
MAINTAINER [email protected]

RUN yum -y install httpd &&     yum clean all &&     systemctl enable httpd.service

EXPOSE 80
CMD ["/usr/sbin/init"]
[[email protected] ~]# docker build -t centos_test_httpd .


3.然后就启动容器

[[email protected] ~]# docker run --privileged -it -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 centos_test_httpd


本文出自 “网络收藏夹” 博客,请务必保留此出处http://liyaoyi.blog.51cto.com/442933/1857052

以上是关于Systemd在docker容器中使用的主要内容,如果未能解决你的问题,请参考以下文章

Systemd在docker容器中使用

Docker 容器在启用 systemd 脚本后重新启动后无法启动

Docker 容器空间大小设置 - 十

在 Docker 中使用 flannel - 每天5分钟玩转 Docker 容器技术(60)

在 Docker 中使用 flannel - 每天5分钟玩转 Docker 容器技术(60)

Docker容器开机自动启动