Docker常用镜像的构建脚本及jenkins手动触发镜像构建

简介: Docker常用镜像的构建脚本及jenkins手动触发镜像构建

1、centos镜像的二次封装

docker build -t csphere/centos:7.1 .

 

FROM       centos:centos7.1.1503
MAINTAINER Carson,C.J.Zeong <zcy@nicescale.com>
ENV TZ "Asia/Shanghai"
ENV TERM xterm
ADD aliyun-mirror.repo /etc/yum.repos.d/CentOS-Base.repo
ADD aliyun-epel.repo /etc/yum.repos.d/epel.repo
RUN yum install -y curl wget tar bzip2 unzip vim-enhanced passwd sudo yum-utils hostname net-tools rsync man && \
    yum install -y gcc gcc-c++ git make automake cmake patch logrotate python-devel libpng-devel libjpeg-devel && \
    yum install -y --enablerepo=epel pwgen python-pip && \
    yum clean all
RUN pip install supervisor
ADD supervisord.conf /etc/supervisord.conf
RUN mkdir -p /etc/supervisor.conf.d && \
    mkdir -p /var/log/supervisor
EXPOSE 22
ENTRYPOINT ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisord.conf"]

注意:这步很重要否则会导致后续的很多镜像构建出问题(每个镜像都有相互依赖),建议不要“创新”否则会话更多的时间去修复“创新”

2、jdk1.8镜像

docker build -t csphere/jdk:1.8 .

docker run -d -p 18083:8083 --name jdk1.8 csphere/jdk:1.8  

FROM       csphere/centos:7.1 
MAINTAINER 623196924@qq.com
USER root
ADD  jdk1.8 /usr/local/jdk1.8
#安装jdk
ENV  JAVA_HOME /usr/local/jdk1.8 
ENV  JRE_HOME  /usr/local/jdk1.8/jre 
ENV  PATH      $PATH:$JAVA_HOME/bin:$JRE_HOME/bin 
ENV  CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib 

3、maven镜像

docker build -t csphere/maven:3.3.9 .

docker run  -d -p 18081:8081   --name maven3.3.9   csphere/maven:3.3.9

FROM       csphere/jdk:1.8
MAINTAINER lzhcode
ENV MAVEN_VERSION 3.3.9
ENV MAVEN_HOME /usr/local/maven
# Install maven
# ADD http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz /usr/local/
USER root
RUN   mkdir -p /usr/local/ 
COPY apache-maven-${MAVEN_VERSION}-bin.tar.gz  /usr/local/apache-maven-${MAVEN_VERSION}-bin.tar.gz
RUN    cd /usr/local && \
       tar -xvf  apache-maven-${MAVEN_VERSION}-bin.tar.gz -C /usr/local && \
       mv   apache-maven-${MAVEN_VERSION} maven  && \
       rm -rf   apache-maven-${MAVEN_VERSION}-bin.tar.gz
RUN    ln -s /usr/local/maven/bin/mvn /usr/bin/mvn && \
       chmod 777 /usr/bin/mvn
COPY settings.xml /usr/local/maven/conf/settings.xml
ADD hello /hello
RUN cd /hello && \
    mvn clean install -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true

4、tomcat镜像

docker build -t csphere/tomcat:7.0 .

docker run -d -p 18082:8082 --name tomcat7.0 csphere/tomcat:7.0

FROM       csphere/jdk:1.8
MAINTAINER lzhcode
ENV TOMCAT_MAJOR_VERSION 7
ENV TOMCAT_MINOR_VERSION 7.0.68
ENV CATALINA_HOME /usr/local/tomcat7.0
ENV APP_DIR ${CATALINA_HOME}/webapps/
# Install tomcat
# RUN wget -q https://archive.apache.org/dist/tomcat/tomcat-${TOMCAT_MAJOR_VERSION}/v${TOMCAT_MINOR_VERSION}/bin/apache-tomcat-${TOMCAT_MINOR_VERSION}.tar.gz
RUN   mkdir -p /usr/local/
COPY  apache-tomcat-*.tar.gz  /usr/local/apache-tomcat-${TOMCAT_MINOR_VERSION}.tar.gz
RUN   cd /usr/local && \
      tar zxf apache-tomcat-${TOMCAT_MINOR_VERSION}.tar.gz  && \
    mv apache-tomcat-${TOMCAT_MINOR_VERSION} tomcat7.0    && \
      rm -rf  apache-tomcat-${TOMCAT_MINOR_VERSION}.tar.gz   
RUN   cd  ~/ 
ADD   scripts /scripts
RUN   chmod -R 777 /scripts
EXPOSE 8080 8443
ENTRYPOINT ["/scripts/run"]
ONBUILD ADD . ${APP_DIR}

5、jenkins镜像

docker build -t  csphere/jenkins:2.138 .

docker run -d -p 18080:8080   --name jenkins   -v /usr/bin/docker:/usr/bin/docker -v /etc/sysconfig/docker:/etc/sysconfig/docker -v /run/docker.sock:/run/docker.sock -v /usr/local/docker-training/maven:/root csphere/jenkins:2.138

 

#
# MAINTAINER        Carson,C.J.Zeong <zcy@nicescale.com>
# DOCKER-VERSION    1.6.2
#
# Dockerizing Jenkins: Dockerfile for building Jenkins images
#
FROM       csphere/jdk:1.8
MAINTAINER Carson,C.J.Zeong <zcy@nicescale.com>
ENV JENKINS_HOME /var/jenkins_home
ENV JENKINS_VERSION 2.138
ENV JENKINS_UC https://updates.jenkins-ci.org
ENV COPY_REFERENCE_FILE_LOG /var/log/copy_reference_file.log
RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d && \
    mkdir -p $JENKINS_HOME 
COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-agent-port.groovy
COPY jenkins.war  /usr/share/jenkins/jenkins.war
RUN chown -R root "$JENKINS_HOME" /usr/share/jenkins/ref && \
    touch $COPY_REFERENCE_FILE_LOG && chown -R root $COPY_REFERENCE_FILE_LOG
VOLUME /var/jenkins_home
EXPOSE 8080 50000
COPY jenkins.sh /usr/local/bin/jenkins.sh
RUN   chmod +x   /usr/local/bin/jenkins.sh  
ENTRYPOINT ["/usr/local/bin/jenkins.sh"]

5.1手动构建 jenkins镜像

出现的问题:

1.You don't have either docker-client or docker-client-latest installed. Please install either one and retry.

docker默认要在docker用户下才能运行,刚开始使用了jenkins用户结果无法运行docker命令

2.切到root用户后仍然提示上面的语句,原来是没有安装docker-client 执行进入容器执行

yum clean all && yum swap fakesystemd systemd

yum install docker-client

应该是centos的版本比较旧的原因,提交centos7.1镜像前先执行这两句

3.最新的jenkins2.138下好像没有docker client命令行工具(知道原因的同学欢迎指正),因此我们只需要传递DOCKER_HOST环境变量 或者映射docker.sock文件给jenkins容器,就可以让jenkins容器里面拥有docker的操作能力,进而将两者结合起来。

4.Rpmdb checksum is invalid: dCDPT(pkg checksums): sudo.x86_64 0:1.8.6p3-29.el6_9 - u

rpm数据库损坏需要重建。因此需要在 “yum install …” 前使用“rpm –rebuilddb” 重建数据库。比如:

RUN rpm --rebuilddb && yum install -y sudo ...


相关文章
|
14天前
|
缓存 Linux 网络安全
docker的镜像无法下载如何解决?
【10月更文挑战第31天】docker的镜像无法下载如何解决?
426 28
|
10天前
|
存储 关系型数据库 Linux
【赵渝强老师】什么是Docker的镜像
Docker镜像是一个只读模板,包含应用程序及其运行所需的依赖环境。镜像采用分层文件系统,每次修改都会以读写层形式添加到原只读模板上。内核bootfs用于加载Linux内核,根镜像相当于操作系统,上方为应用层。镜像在物理存储上是一系列文件的集合,默认存储路径为“/var/lib/docker”。
|
16天前
|
存储 监控 Linux
docker构建镜像详解!!!
本文回顾了Docker的基本命令和管理技巧,包括容器和镜像的增删改查操作,容器的生命周期管理,以及如何通过端口映射和数据卷实现容器与宿主机之间的网络通信和数据持久化。文章还详细介绍了如何使用Docker部署一个简单的Web应用,并通过数据卷映射实现配置文件和日志的管理。最后,文章总结了如何制作自定义镜像,包括Nginx、Python3和CentOS镜像,以及如何制作私有云盘镜像。
85 2
|
17天前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
30 1
|
18天前
|
存储 Java 开发者
成功优化!Java 基础 Docker 镜像从 674MB 缩减到 58MB 的经验分享
本文分享了如何通过 jlink 和 jdeps 工具将 Java 基础 Docker 镜像从 674MB 优化至 58MB 的经验。首先介绍了选择合适的基础镜像的重要性,然后详细讲解了使用 jlink 构建自定义 JRE 镜像的方法,并通过 jdeps 自动化模块依赖分析,最终实现了镜像的大幅缩减。此外,文章还提供了实用的 .dockerignore 文件技巧和选择安全、兼容的基础镜像的建议,帮助开发者提升镜像优化的效果。
|
23天前
|
存储 缓存 Java
Java应用瘦身记:Docker镜像从674MB优化至58MB的实践指南
【10月更文挑战第22天】 在容器化时代,Docker镜像的大小直接影响到应用的部署速度和运行效率。一个轻量级的Docker镜像可以减少存储成本、加快启动时间,并提高资源利用率。本文将分享如何将一个Java基础Docker镜像从674MB缩减到58MB的实践经验。
36 1
|
10天前
|
缓存 JavaScript 安全
深入理解Docker镜像构建过程
深入理解Docker镜像构建过程
32 0
|
3月前
|
存储 安全 Ubuntu
Docker 镜像与 Docker 容器的区别
【8月更文挑战第27天】
296 5
|
3月前
|
存储 Ubuntu 应用服务中间件
在Docker中,怎么快速查看本地的镜像和容器?
在Docker中,怎么快速查看本地的镜像和容器?
|
4月前
|
Shell Linux Docker
docker常用命令大全(基础、镜像、容器、数据卷)
这些命令仅仅是 Docker 命令行工具的冰山一角,但对于日常操作来说已经非常全面。通过熟练地使用这些基础命令,用户可以有效地管理 Docker 的镜像、容器、数据卷和网络。随着用户对 Docker 的深入使用,更高级的命令和选项将会变得必需,但上面列出的命令已经为用户提供了一个坚实的起点。对于初学者来说,理解和掌握这些常用命令是深入学习 Docker 的基础。
473 5
docker常用命令大全(基础、镜像、容器、数据卷)