Docker centos7 systemctl deos 不工作:无法连接 D-bus
Docker centos7 systemctl deos not work : Failed to connect D-bus
我正尝试在 docker 上 运行 elasticsearch。
我的特点如下
- 主机系统:OSX 10.12.5
- docker : 17.05.0-ce
- docker操作图像:
centos:latest
我一直在关注 this article,但它坚持 systemctl daemon-reload
。
我发现 CentOS official respond 关于这个 D-bus
错误,但是当我 运行 docker run
命令时它显示下面的消息。
[!!!!!!] Failed to mount API filesystems, freezing.
我该如何解决这个问题?
仅供参考,这是Dockerfile
我构建的图像
FROM centos
MAINTAINER juneyoung <juneyoung@hanmail.net>
ARG u=elastic
ARG uid=1000
ARG g=elastic
ARG gid=1000
ARG p=elastic
# add USER
RUN groupadd -g ${gid} ${g}
RUN useradd -d /home/${u} -u ${uid} -g ${g} -s /bin/bash ${u}
# systemctl settings from official Centos github
# https://github.com/docker-library/docs/tree/master/centos#systemd-integration
ENV container docker
RUN (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" ]
# yum settings
RUN yum -y update
RUN yum -y install java-1.8.0-openjdk.x86_64
ENV JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-3.b12.el7_3.x86_64/jre/
# install wget
RUN yum install -y wget
# install net-tools : netstat, ifconfig
RUN yum install -y net-tools
# Elasticsearch install
ENV ELASTIC_VERSION=5.4.0
RUN rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
RUN wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${ELASTIC_VERSION}.rpm
RUN rpm -ivh elasticsearch-${ELASTIC_VERSION}.rpm
CMD ["/usr/sbin/init"]
我有 运行 命令
docker run -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name=elastic2 elastic2
首先感谢@Robert。
我不这么认为。
我所要做的就是编辑我的 CMD
命令。
改成
CMD["elasticsearch"]
但是,要从浏览器访问需要一些琐事。
参考 this elasticsearch forum post.
如果您要替换普通的 systemctl 命令,您可以遵循启用 systemd 的命令 OS。这就是我在 centos docker 容器中安装 elasticsearch 的方式。
我正尝试在 docker 上 运行 elasticsearch。
我的特点如下
- 主机系统:OSX 10.12.5
- docker : 17.05.0-ce
- docker操作图像:
centos:latest
我一直在关注 this article,但它坚持 systemctl daemon-reload
。
我发现 CentOS official respond 关于这个 D-bus
错误,但是当我 运行 docker run
命令时它显示下面的消息。
[!!!!!!] Failed to mount API filesystems, freezing.
我该如何解决这个问题?
仅供参考,这是Dockerfile
我构建的图像
FROM centos
MAINTAINER juneyoung <juneyoung@hanmail.net>
ARG u=elastic
ARG uid=1000
ARG g=elastic
ARG gid=1000
ARG p=elastic
# add USER
RUN groupadd -g ${gid} ${g}
RUN useradd -d /home/${u} -u ${uid} -g ${g} -s /bin/bash ${u}
# systemctl settings from official Centos github
# https://github.com/docker-library/docs/tree/master/centos#systemd-integration
ENV container docker
RUN (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" ]
# yum settings
RUN yum -y update
RUN yum -y install java-1.8.0-openjdk.x86_64
ENV JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-3.b12.el7_3.x86_64/jre/
# install wget
RUN yum install -y wget
# install net-tools : netstat, ifconfig
RUN yum install -y net-tools
# Elasticsearch install
ENV ELASTIC_VERSION=5.4.0
RUN rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
RUN wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${ELASTIC_VERSION}.rpm
RUN rpm -ivh elasticsearch-${ELASTIC_VERSION}.rpm
CMD ["/usr/sbin/init"]
我有 运行 命令
docker run -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name=elastic2 elastic2
首先感谢@Robert。 我不这么认为。
我所要做的就是编辑我的 CMD
命令。
改成
CMD["elasticsearch"]
但是,要从浏览器访问需要一些琐事。 参考 this elasticsearch forum post.
如果您要替换普通的 systemctl 命令,您可以遵循启用 systemd 的命令 OS。这就是我在 centos docker 容器中安装 elasticsearch 的方式。