博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从零开始构建一个centos+jdk7+tomcat7的docker镜像文件
阅读量:6282 次
发布时间:2019-06-22

本文共 5520 字,大约阅读时间需要 18 分钟。

从零开始构建一个centos+jdk7+tomcat7的镜像文件

准备centos基础镜像

docker pull centos或者直接下载我准备好的镜像docker pull registry.cn-hangzhou.aliyuncs.com/repos_zyl/centos:0.0.1

准备jdk7和tomcat7安装包

  • 创建工作目录, mkdir -p /z/docker
  • 准备下载jdk7的tar.gz包http://download.oracle.com/otn/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz
  • 解压到目录/z/docker下, 并重命名为jdk
  • 准备下载tomcat7的tar.gz包http://mirrors.cnnic.cn/apache/tomcat/tomcat-7/v7.0.75/bin/apache-tomcat-7.0.75.tar.gz
  • 解压到目录/z/docker下, 并重命名为tomcat
  • 删掉jdk文件夹下多余文件, 降低build的镜像大小
rm -rf /z/docker/jdk/*src.zip \    /z/docker/jdk/lib/missioncontrol \    /z/docker/jdk/lib/visualvm \    /z/docker/jdk/lib/*javafx* \    /z/docker/jdk/jre/lib/plugin.jar \    /z/docker/jdk/jre/lib/ext/jfxrt.jar \    /z/docker/jdk/jre/bin/javaws \    /z/docker/jdk/jre/lib/javaws.jar \    /z/docker/jdk/jre/lib/desktop \    /z/docker/jdk/jre/plugin \    /z/docker/jdk/jre/lib/deploy* \    /z/docker/jdk/jre/lib/*javafx* \    /z/docker/jdk/jre/lib/*jfx* \    /z/docker/jdk/jre/lib/amd64/libdecora_sse.so \    /z/docker/jdk/jre/lib/amd64/libprism_*.so \    /z/docker/jdk/jre/lib/amd64/libfxplugins.so \    /z/docker/jdk/jre/lib/amd64/libglass.so \    /z/docker/jdk/jre/lib/amd64/libgstreamer-lite.so \    /z/docker/jdk/jre/lib/amd64/libjavafx*.so \    /z/docker/jdk/jre/lib/amd64/libjfx*.so

进入/z/docker目录, 在当前目录下创建Dockerfile文件

cd /opt/dockervi Dockerfile

#插入以下内容

#使用的基础镜像
FROM centos
#作者信息
MAINTAINER chenxiangxiang "1915592195@qq.com"

#创建目录

RUN mkdir -p /opt/docker/jdk/jdk1.8.0_144
#把当前目录下的jdk文件夹添加到镜像
ADD jdk /opt/docker/jdk/jdk1.8.0_144

#创建tomcat目录

RUN mkdir -p /opt/docker/tomcat/apache-tomcat-7.0.81
#把当前目录下的tomcat文件夹添加到镜像
ADD tomcat /opt/docker/tomcat/apache-tomcat-7.0.81

#添加环境变量

ENV JAVA_HOME /opt/docker/jdk/jdk1.8.0_144
ENV CATALINA_HOME /opt/docker/tomcat/apache-tomcat-7.0.81
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

#暴露8080端口

EXPOSE 8080

#启动时运行tomcat

CMD ["/opt/docker/tomcat/apache-tomcat-7.0.81/bin/catalina.sh","run"]

开始构建docker镜像文件

docker build -t repos_local/centos-jdk7-tomcat7:0.0.1 .-t 设置tag名称, 命名规则registry/image:tag. 表示使用当前目录下的Dockerfile文件

等待构建完成, 不出意外的话, 执行docker images将会得到以下结果

[root@localhost docker]# docker imagesREPOSITORY                                           TAG                 IMAGE ID            CREATED             SIZErepos_local/centos-jdk7-tomcat7                      0.0.1               2c5efe7056ce        4 minutes ago       511.7 MB

repos_local/centos-jdk7-tomcat7镜像已经构建好了, 从这个镜像启动容器, 并配置好端口, 就能直接在浏览器上看到tomcat默认界面了

启动centos-jdk7-tomcat7容器

docker run -d -p 8081:8080 --name test-tomcat repos_local/centos-jdk7-tomcat7:0.0.1-d 后台运行-p 宿主机port:容器port 端口映射--name 容器名称, 可以通过容器名称对容器操作

如果系统没禁用防火墙的话, 可能需要开放8081端口

#直接执行命令, 开放端口号(重启后可能失效) iptables -A INPUT -ptcp --dport 8081 -j ACCEPT
##或者#直接修改iptables, 重启后不会失效vi /etc/sysconfig/iptables#插入以下内容-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT重启iptables服务service iptables restart

 

centos7下可以直接使用firewall-cmd来开放端口

#开放8081端口  permanent为永久开放firewall-cmd --zone=public --add-port=8081/tcp --permanent#重新读取配置firewall-cmd --reload#查看全部开放端口firewall-cmd --list-all

如果提示FirewallD is not running

执行systemctl start firewalld.service, 启动firewalld服务

直接在浏览器访问centos7系统的8081端口, 已经能看到tomcat的默认界面了

查看container容器的运行状态

[root@localhost docker]# docker psCONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS              PORTS                    NAMES1a49a277c235        repos_local/centos-jdk7-tomcat7:0.0.1   "/z/java/apache-tomca"   3 minutes ago       Up 3 minutes        0.0.0.0:8081->8080/tcp   test-tomcat

现在的容器状态为Up, 运行中, 如何停止一个运行中的容器? 运行docker stop命令

[root@localhost docker]# docker ps -aCONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS                       PORTS               NAMES1a49a277c235        repos_local/centos-jdk7-tomcat7:0.0.1   "/z/java/apache-tomca"   47 hours ago        Exited (143) 3 minutes ago                       test-tomcat[root@localhost docker]# docker start test-tomcattest-tomcat[root@localhost docker]# docker ps -aCONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS              PORTS                    NAMES1a49a277c235        repos_local/centos-jdk7-tomcat7:0.0.1   "/z/java/apache-tomca"   47 hours ago        Up 3 seconds        0.0.0.0:8081->8080/tcp   test-tomcat[root@localhost docker]# docker stop test-tomcattest-tomcat[root@localhost docker]# docker ps -aCONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS                       PORTS               NAMES1a49a277c235        repos_local/centos-jdk7-tomcat7:0.0.1   "/z/java/apache-tomca"   47 hours ago        Exited (143) 4 seconds ago                       test-tomcat

以上命令, 把一个容器从退出状态->运行中->退出状态

如何强制删除一个运行中的容器?

[root@localhost docker]# docker ps -aCONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS              PORTS                    NAMES1a49a277c235        repos_local/centos-jdk7-tomcat7:0.0.1   "/z/java/apache-tomca"   47 hours ago        Up 5 seconds        0.0.0.0:8081->8080/tcp   test-tomcat[root@localhost docker]# docker rm -f test-tomcattest-tomcat[root@localhost docker]# docker ps -aCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES[root@localhost docker]#

docker rm 命令删除一个Exited状态的容器, docker rm -f 强制删除一个运行中的容器

 

到这里, 在centos7系统下构建docker镜像文件已经成功

转载地址:http://uvxva.baihongyu.com/

你可能感兴趣的文章
2019测试指南-web应用程序安全测试(二)指纹Web服务器
查看>>
树莓派3链接wifi
查看>>
js面向对象编程
查看>>
Ruby中类 模块 单例方法 总结
查看>>
jQuery的validate插件
查看>>
5-4 8 管道符 作业控制 shell变量 环境变量配置
查看>>
Enumberable
查看>>
开发者论坛一周精粹(第五十四期) 求购备案服务号1枚!
查看>>
validate表单验证及自定义方法
查看>>
javascript 中出现missing ) after argument list的错误
查看>>
使用Swagger2构建强大的RESTful API文档(2)(二十三)
查看>>
Docker容器启动报WARNING: IPv4 forwarding is disabled. Networking will not work
查看>>
(转)第三方支付参与者
查看>>
程序员修炼之道读后感2
查看>>
DWR实现服务器向客户端推送消息
查看>>
js中forEach的用法
查看>>
Docker之功能汇总
查看>>
!!a标签和button按钮只允许点击一次,防止重复提交
查看>>
(轉貼) Eclipse + CDT + MinGW 安裝方法 (C/C++) (gcc) (g++) (OS) (Windows)
查看>>
还原数据库
查看>>