【问题标题】:Unable to start jenkins auctomatically inside docker container无法在 docker 容器内自动启动 jenkins
【发布时间】:2016-10-06 20:53:46
【问题描述】:

我写了一个 dockerfile 来使用 chef 在容器中安装 jenkins。

我已成功安装,但 jenkins 没有自动启动。我在 dockerfile 中实现了 CMD 命令,但做不到。

我关注了几篇关于此的文章,但在我的情况下不起作用

码头文件:

FROM centos:6

RUN yum -y update
RUN yum -y install wget
RUN yum -y install httpd
RUN wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-  ci.org/redhat/jenkins.repo
RUN rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
RUN yum -y install java
RUN yum -y install jenkins

CMD service jenkins start && tail -F /var/log/jenkins/jenkins.log

主厨食谱:

include_recipe 'docker'

docker_node_data = '/tmp/docker1'

directory docker_node_data do
  action :create
end

cookbook_file "#{docker_node_data}/Dockerfile" do
  source 'Dockerfile'
end

docker_image 'jenkins7' do
  tag 'latest'
  source docker_node_data
  action :build
end

docker_container 'jenkins7' do
  detach true
  command 'top -b -d 5'
  port '8080:8080'
  action :run
end

【问题讨论】:

标签: jenkins docker chef-infra


【解决方案1】:

这并不是 Docker 的工作方式。你不会在容器内运行服务,你会运行一个进程。容器本身一个服务。在这种情况下,您使用 Chef 作为您的服务经理,这可能是个坏主意。不幸的是,Docker 并不适合这种管理方式。 Right™ 解决方案可能会转向无用的答案领域(具体来说,您可能想要更像 Chef 设置 systemd/Upstart/Supervisord/Runit 服务作业,使用 rkt 将 jenkins 容器化)。

回答更直接的问题:您的基础映像是使用 Upstart 的 CentOS 6。 Upstart 无法在 Docker 中运行,因为它想成为真正的 PID 1 并拥有对几乎所有内容的原始级别访问权限。如果您将入口点命令更改为更像java -jar /path/to/jenkins.war 或类似的东西,您应该会看到它启动。如果您还想导出日志,您可能需要一些更高级的东西。通常对于容器化应用程序,您可以将其配置为直接记录到标准输出,而不是尝试像这样跟踪文件。

【讨论】:

    猜你喜欢
    • 2016-04-14
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 2019-09-03
    相关资源
    最近更新 更多