簡體   English   中英

Docker-進程未在啟動時啟動

[英]Docker - Process not starting at boot

我正在容器化最新版本的grafana,並希望在容器啟動時啟動grafana-process ,然后在我的K8S(kubernetes)集群中使用它。

我的Dockerfile看起來像:

FROM armdocker/baseimages/rhel:7-20161207
MAINTAINER xxxxxxxx

ENV GRAFANA_VERSION_MAJOR=4 GRAFANA_VERSION_MINOR=4 GRAFANA_VERSION_PATCH=3-1
ENV GRAFANA_VERSION=${GRAFANA_VERSION_MAJOR}.${GRAFANA_VERSION_MINOR}.${GRAFANA_VERSION_PATCH}

RUN yum clean all && yum install -y unzip tar

RUN curl  -f -L -o grafana-${GRAFANA_VERSION}.x86_64.rpm https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-${GRAFANA_VERSION}.x86_64.rpm && \
    yum localinstall grafana-${GRAFANA_VERSION}.x86_64.rpm -y

EXPOSE 3000
ENTRYPOINT ["/etc/init.d/grafana-server start"]

構建Dockerfile成功,並且不返回任何錯誤。

當我嘗試運行此圖像時,出現錯誤。

docker run -dit -p 3000:3000 armdocker/proj/grafana:1.0.5
471b2acb964caad69bbb78831a59ee9d2b27997911b5b104b0057ddc957d1101
Error response from daemon: Cannot start container 471b2acb964caad69bbb78831a59ee9d2b27997911b5b104b0057ddc957d1101: [8] System error: exec: "/etc/init.d/grafana-server start": stat /etc/init.d/grafana-server start: no such file or directory

這似乎很奇怪,因為我先安裝RPM(使文件/etc/init.d/grafana-server ),然后嘗試以ENTRYPOINT身份啟動該過程

然后我嘗試了

CMD ["/etc/init.d/grafana-server start"]

這也會導致相同的錯誤/etc/init.d/grafana-server start: no such file or directory

然后,我嘗試使用systemctl命令:

docker run -dit -p 3000:3000 armdocker/proj/grafana:1.0.6
bfd492c75a0f4c284fc0fdbd5a590f0155f6f67bcb4834e144f344bb789546f3
Error response from daemon: Cannot start container bfd492c75a0f4c284fc0fdbd5a590f0155f6f67bcb4834e144f344bb789546f3: [8] System error: exec: "/bin/systemctl start grafana-server.service": stat /bin/systemctl start grafana-server.service: no such file or directory

我對使容器具有已開始的grafana流程出錯了什么想法。

除非您在容器內運行自己的systemd守護進程(我不建議這樣做,否則會產生很多問題),否則您不應嘗試使用systemctl/etc/init.d命令啟動該進程。 容器不是VM,它們是在自己的名稱空間中運行應用程序的方法。 當該應用程序退出時,您的容器也將退出。 當您的應用程序類似於systemctl start命令時,您的容器將在systemctl命令返回的那一刻退出,這對您希望它在grafana進程運行期間保持正常運行沒有用。

建議您不要研究grafana本身如何打包docker容器的方法,而不是試圖徹底改變方向。 具體來說,它們的run.sh結尾為:

exec gosu grafana /usr/sbin/grafana-server      \
  --homepath=/usr/share/grafana                 \
  --config=/etc/grafana/grafana.ini             \
  cfg:default.log.mode="console"                \
  cfg:default.paths.data="$GF_PATHS_DATA"       \
  cfg:default.paths.logs="$GF_PATHS_LOGS"       \
  cfg:default.paths.plugins="$GF_PATHS_PLUGINS" \
  "$@"

他們的倉庫在https://github.com/grafana/grafana-docker上結束了

或者,您可以使用docker-systemctl-replacement腳本並將其注冊為映像的主要CMD。 它將檢出* .service腳本以了解如何啟動和停止服務(無需systemd守護程序的幫助)。 因此,如果Grafana家伙改變了他們的啟動方案,那么您的構建將繼續工作。 ;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM