zoukankan      html  css  js  c++  java
  • dockerfile 创建Jenkins镜像

    最近在学习docker,docker 基础在前面的文章已经讲解。

    基本结构:

    FROM ubuntu:latest

    MAINTAINER wwyx wwyzxs@163.com

    WORKDIR /opt

    ADD ./tool/jdk-8u65-linux-x64.tar /opt/

    ADD ./tool/apache-tomcat-8.5.9.tar.gz /opt/

    ADD ./jenkins.war /opt/apache-tomcat-8.5.9/webapps

    #RUN yum -y update
    #RUN tar -xvf jdk-8u65-linux-x64.tar -C /opt/

    #RUN tar -xvf apache-tomcat-8.5.9.tar.gz -C /opt
    #set environment

    ENV JAVA_HOME /opt/jdk1.8.0_65
    ENV CLASSPATH .:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV PATH $JAVA_HOME/bin:$PATH

    # tar -xvf redmine.tar 如果源文件是个归档文件(压缩文件),则docker会自动帮解压

    #RUN useradd mysql &&
    #chmod -R 777 /opt/redmine.org.cn/apache2/htdocs/ &&
    #chmod -R 755 /opt/redmine.org.cn/apache2/htdocs/database/ &&
    #chmod -R 777 /opt/redmine.org.cn/mysql/ &&
    #chmod -R 755 /opt/redmine.org.cn/mysql/my.cnf &&
    #chmod 777 /opt/redmine.org.cn/ctlscript.sh

    #ADD ./configuration.yml /opt/redmine.org.cn/apache2/conf/configuration.yml
    ADD run.sh /opt/run.sh
    RUN chmod 755 /opt/run.sh

    CMD ["/opt/run.sh"]

    EXPOSE 8080

    下面进行介绍。

    1.FROM 

    指定所创建的镜像的基础镜像,如果本地 不存在则会去docker hub下载指定镜像。

    格式为FROM<images>,FROM<images>:<tag>

    每个Dockerfile中的第一条指令必须为FROM指令。

    2.MAINTAINER

    指定维护者信息,格式为MAINTAINER<name>

    3.RUN

    运行指定 命令。格式为RUN <command>或者RUN ["exec","param1","param2"]

    前者在终端中执行命令,即bin/sh -c;后者在exec中执行,不会启动shel环境。

    指定其他终端类型可以用RUN ["bin/bash","-c","echo hello"].

    每条RUN指令将在当前镜像中执行,并提交为新的镜像。当命令较长时,可以用换行。

    RUN apt-get update

                          && apt-get install -y libsnappy-dev zliblg-dev libbz2-dev

                          && rm -rf /var/cache/apt

    4.CMD

    CMD 指令用来指定容器时默认执行的命令。它支持三种方式:

    CMD ["exec","param1","param2"]使用exec执行,是推荐使用的方式。

    CMD command param1 param2 在/bin/sh 中执行,提供给需要交互的应用;

    CMD ["param1","param2"]提供给ENTRYROINT的默认参数。

    每个dockerfile只能有一个cmd。多了则执行最后一条,如果run的时候进行了其他命令,则会覆盖掉CMD的命令。

    6.EXPOSE

    指定服务器监听的端口。

    7.ENV

    指定环境变量,在镜像生成过程中会被后续RUN指令使用。

    ENV<key><value>或者ENV<key>=<value>。。。

    运行环境可以覆盖环境变量,例如:docker run --env <key>=<value> build_image。

    8.ADD

    ADD<src><dest>

    将指定<src>路径下的内容复制到<dest>路径下。

    <src>可以使dokcerfile所在目录的相对路径,也可是URL,还可以是tar(tar 会自动解压到<dest>路径下)。<dest>可以是镜像内的绝对路径,或者是WORKDIR的相对路径。

    创建一个镜像的命令。

    1.执行构建命令。

    我的命令:docker build -t wang/jenkins .

    例子:docker build -t liuge1988/jenkins:base -f /opt/test/dockerfile /opt/test

    -t 要生成的镜像, user/repo:tag

    -f dockerfile文件所在路径

    /opt/test 可以是任意目录,要同步拷贝到新生成镜像的目录,用于初始化目录内容

    2.容器启动

    我的命令:docker run -itd --name jenkins -p 8080:8080 wang/jenkins

    3.查看容器启动情况

    3.查看logs 

    docker logs jenkins

    4.查看Jenkins页面(成功)

     问题解决:

    docker启动ubuntu(别的)cmd会自动退出问题

    docker启动ubunt镜像有两种版本可以解决自动退出的问题:

     方式一:

         docker run -d -it 【image-ID】 /bin/sh

      

      方式二:

        在启动脚本里面增加一个执行进程:

          1.在镜像内部执行 RUN touch /var/log/1.txt  然后最后用CMD "tail" "-f" "/var/log/1.txt"结尾

          2.启动脚本的方式 

     #!/bin/bash

    set -m &&
        sh /opt/redmine.org.cn/ctlscript.sh start &&
        touch /var/log/1.txt &&
        tail -f /var/log/1.txt
  • 相关阅读:
    第十章、数据库运行维护与优化
    第九章、安全管理
    第八章、数据库后台编程技术
    第七章、高级数据库查询
    第六章、数据库及数据库对象
    第五章、UML与数据库应用系统
    第四章、数据库应用系统功能设计与实施
    struts2标签debug
    SSH框架 more than one namespace has been specificed without a prefix
    Http Status 404
  • 原文地址:https://www.cnblogs.com/wwyxyt/p/8288349.html
Copyright © 2011-2022 走看看