构建Docker镜像实战

简介

Nginx是一款轻量级的Web服务器,Tomcat是一款免费开源的轻量级web服务器,在中小型企业和并发访问量不高的场合使用,是开发和调试JSP程序的首选。MSQL是当下最流行的关系型数据库,以上这些都可以使用Dockerfile文件的方式来创建其Docker镜像。

构建nginx镜像

下载基础镜像

# docker pull centos

建立工作目录

# mkdir /nginx
# cd /nginx/

创建并编写Dockerfile文件

# vim Dockerfile  //一定是在/nginx下编写

 # 设置基础镜像
FROM centos
 # 维护用户信息
MAINTAINER this is nginx image <chen>
 # 安装相关依赖包
RUN yum install -y wget proc-devel net-tools gcc zlib zlib-devel make openssl-devel
 # 下载并解压nginx源码包
RUN wget http://nginx.org/download/nginx-1.9.7.tar.gz
RUN tar zxvf nginx-1.9.7.tar.gz
 # 编译安装nginx
WORKDIR nginx-1.9.7
RUN ./configure --prefix=/usr/local/nginx && make && make install
 # 开启80和443端口
EXPOSE 80
EXPOSE 443
 # 修改nginx配置文件,以非daemon方式启动
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
 # 复制服务启动脚本并设置权限
WORKDIR /nginx
ADD run.sh /run.sh
RUN chmod 755 /run.sh
 # 启动容器时执行脚本
CMD ["/run.sh"]

编写执行脚本内容

# vim run.sh

#!/bin/bash
/usr/local/nginx/sbin/nginx

生成镜像

# docker build -t nginx:new .

启动容器进行测试

# docker run -d -P nginx:new
# docker ps -a
# http://192.168.177.147:32769/


构建tomcat镜像

解压jdk,创建工作目录

# mkdir /tomcat
# tar zxvf jdk-8u144-linux-x64.tar.gz -C /tomcat/
# tar zxvf apache-tomcat-8.5.23.tar.gz -C /tomcat/
# cd /tomcat

创建Dockerfile文件

# vim Dockerfile  //一定要在/tomcat下
 # 基于基础镜像
FROM centos
 # 维护用户信息
MAINTAINER this is tomcat image <chen>
 # 安装jdk环境,设置其环境变量
ADD jdk1.8.0_144 /usr/local/java
ENV JAVA_HOME /usr/local/java
ENV JAVA_BIN /usr/local/java/bin
ENV JRE_HOME /usr/local/java/jre
ENV PATH $PATH:/usr/local/java/bin:/usr/local/java/jre/bin
ENV CLASSPATH /usr/local/java/jre/bin:/usr/local/java/lib:/usr/local/java/jre/lib/charsets.jar
 # 将tomcat移到相应位置
ADD apache-tomcat-8.5.23 /usr/local/tomcat8
 # 开启8080端口
EXPOSE 8080

生成镜像

# docker build -t tomcat:centos .

运行容器并验证

映射本地80端口到容器的8080端口

# docker run --name web -p 80:8080 -it  tomcat:centos /bin/bash



进入运行着的容器,启动tomcat

# cd /usr/local/tomcat8/bin
# ./startup.sh
# http://192.168.177.147:80/


构建mysql镜像

创建工作目录

# mkdir /mysql
# cd /mysql

创建Dockerfile文件

# vim Dockerfile
 # 基于基础镜像
FROM guyton/centos6
 # 维护用户信息
MAINTAINER this is msyql images <chen>
 # 安装mysql数据库软件包
RUN yum -y install mysql mysql-server
 # 开启mysql服务,并进行授权
RUN /etc/init.d/mysqld start &&mysql -e "grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘abc123‘;" &&mysql -e "grant all privileges on *.* to ‘root‘@‘localhost‘ identified by ‘abc123‘;"
 # 开启3306端口
EXPOSE 3306
 # 运行初始化脚本mysqld_safe
CMD ["mysqld_safe"]

生成镜像

# docker build -t centos:mysql .

运行容器并验证

使用新镜像运行容器,随机映射本地的端口到容器的3306端口

# docker run --name=mysql_server -d -P centos:mysql


查看本地映射的端口号

# docker ps -a
# mysql -h 192.168.177.147 -u root -P 32768 -pabc123

原文地址:http://blog.51cto.com/13620936/2160006

时间: 2024-10-09 08:42:25

构建Docker镜像实战的相关文章

构建Docker镜像实战之构建Tomcat9.0镜像(RPM一键安装Java环境)

构建Docker镜像实战之构建Tomcat9.0镜像(RPM一键安装Java环境) tomcat是一个免费开源的轻量级web服务器,在中小型企和并发访问量不高的场合普遍使用,是开发和调试JSP程序的首选.下面使用Dockerfile文件的方式来创建带有tomcat服务的Dockerfile镜像.(注:这里的Java环境是使用rpm一键式安装的且小编创建的是tomcat9.0的镜像) 下面直接开始实验 关闭防火墙及SELinux systemctl stop firewalld.service s

构建Docker镜像实战案例

Dockerfile介绍 Dockerfile是由一组指令组成的文件,每条指令对应linux中一条命令,Docker程序将读取Dockerfile中的指令生成指定镜像. Dockerfile大致结构:基础镜像信息.维护者信息.镜像操作指令.容器启动时执行指令.每行支持一条指令,每条指令可以携带多个参数,支持以 # 开头的注释. Dockerfile操作指令: FROM 镜像 : 指定新的镜像所基于的镜像MAINTAINER 名字 :说明新镜像的维护人RUN 命令 : 在所基于的镜像上执行命令,并

使用Jenkins构建Docker镜像

Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上.同时Jenkins能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性.并且Jenkins提供了大量的插件,能够完成各种任务. 今天我需要使用Jenkins构建一个Docker镜像,然后自动push到docker registry中.到了docker registry中,后面测试人员就可以把镜像发布到测试环境,测试如

使用Dockerfile为SpringBoot应用构建Docker镜像

使用Dockerfile为SpringBoot应用构建Docker镜像 原创: 梦想de星空 macrozheng 6月17日 上次写过一篇使用Maven插件构建Docker镜像 ,讲述了通过docker-maven-plugin来构建docker镜像的方式,此种方式需要依赖自建的Registry镜像仓库.本文将讲述另一种方式,使用Dockerfile来构建docker镜像,此种方式不需要依赖自建的镜像仓库,只需要应用的jar包和一个Dockerfile文件即可. Dockerfile常用指令

构建Docker镜像仓库的另一选择:Nexus3 - DockOne.io

我们知道,构建企业内部私有Docker镜像仓库有很多选择,比如可以采用原生的Docker Registry服务,也可以部署更加专业的工具,例如SUSE team的Portus (https://github.com/SUSE/Portus)或VMware出品的Harbor(https://github.com/vmware/harbor).我们也就曾对Harbor这样的产品做过较为详细的分析(http://mp.weixin.qq.com/s/oQoLgNgnfM8TQHnDDOOIog).然而

jenkins构建docker镜像上传到harbor并发布到kubernetes

很早之前写过一篇jenkins集成docker的文章,使用的是CloudBees Docker Build and Publish plugin插件.这篇文章是直接使用shell脚本做的,主要是这次有一个需求是检测harbor仓库里面是否已经存在要构建的镜像,如果存在就放弃构建,如果不存在则构建镜像并上传到harbor仓库,我这里是通过请求harbor的api来检测的. 整个过程大致分为四个步骤,画了一个简单图: 1.在jenkins上构建一个自由风格的软件项目. 2.源码管理使用git. 这里

使用dockerfile构建docker镜像

一,简单介绍 docker镜像构建方式有两种方式,第一种是启动基础容器之后,进入容器安装所需要的文件,配置,变量等,完成后使用docker commit提交成为一个新的镜像,第二种则是通过编写dockerfile文件,进行镜像制作,使用docker  build命令进行镜像的构建.第一种方式可以看到镜像的生成过程,但是不便于自动化:第二种方式则比较直观,可以结合devops实现自动打包发布,本文则介绍如何利用dockerfile实现docker镜像的制作. Dockerfile描述了组装镜像的步

构建Docker镜像:nginx

Dockerfile介绍 Dockerfile是由一组指令组成的文件,每条指令对应linux中一条命令,Docker程序将读取Dockerfile中的指令生成指定镜像.Dockerfile大致结构:基础镜像信息.维护者信息.镜像操作指令.容器启动时执行指令.每行支持一条指令,每条指令可以携带多个参数,支持以 # 开头的注释.Dockerfile操作指令: FROM 镜像 : 指定新的镜像所基于的镜像MAINTAINER 名字 :说明新镜像的维护人RUN 命令 : 在所基于的镜像上执行命令,并提交

构建Docker镜像:tomcat

Dockerfile介绍 Dockerfile是由一组指令组成的文件,每条指令对应linux中一条命令,Docker程序将读取Dockerfile中的指令生成指定镜像.Dockerfile大致结构:基础镜像信息.维护者信息.镜像操作指令.容器启动时执行指令.每行支持一条指令,每条指令可以携带多个参数,支持以 # 开头的注释.Dockerfile操作指令: FROM 镜像 : 指定新的镜像所基于的镜像MAINTAINER 名字 :说明新镜像的维护人RUN 命令 : 在所基于的镜像上执行命令,并提交