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

前端之家收集整理的这篇文章主要介绍了从零开始构建一个centos+jdk7+tomcat7的镜像文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

centos7系统下docker运行环境的搭建

准备centos基础镜像

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

准备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的镜像大小
@H_301_10@
rm -rf /z/docker/jdk/*@H_301_10@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@H_301_10@
@H_301_10@

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

@H_301_10@
cd /z/docker
vi Dockerfile

#插入以下内容
#使用的基础镜像
FROM registry.cn@H_301_10@-hangzhou.aliyuncs.com/repos_zyl/centos:1@H_301_10@
#作者信息
MAINTAINER yzzhouyalei @H_301_10@"@H_301_10@yzzhouyalei@foxmail.com@H_301_10@"@H_301_10@

#创建目录
RUN mkdir @H_301_10@-p /z/java/jdk1.7@H_301_10@.0_79
#把当前目录下的jdk文件添加到镜像
ADD jdk @H_301_10@/z/java/jdk1.7@H_301_10@.0_79

#创建tomcat目录
RUN mkdir @H_301_10@-p /z/java/apache-tomcat-7.0@H_301_10@.70@H_301_10@
#把当前目录下的tomcat文件添加到镜像
ADD tomcat @H_301_10@/z/java/apache-tomcat-70@H_301_10@

#添加环境变量
ENV JAVA_HOME @H_301_10@/z/java/jdk1.7@H_301_10@.0_79
ENV CATALINA_HOME @H_301_10@/z/java/apache-tomcat-70@H_301_10@
ENV PATH $PATH:$JAVA_HOME@H_301_10@/bin:$CATALINA_HOME/bin

#暴露8080端口
EXPOSE @H_301_10@8080@H_301_10@

#启动时运行tomcat
CMD [@H_301_10@/z/java/apache-tomcat-7.0.70/bin/catalina.sh@H_301_10@"@H_301_10@,run@H_301_10@"@H_301_10@]
@H_301_10@

开始构建docker镜像文件

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

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

[root@localhost docker]# docker images
REPOSITORY                                           TAG                 IMAGE ID            CREATED             SIZE
repos_local@H_301_10@/centos-jdk7-tomcat7                      1@H_301_10@               2c5efe7056ce        4@H_301_10@ minutes ago       511.7@H_301_10@ MB

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

启动centos-jdk7-tomcat7容器

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

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

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

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

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

如果提示FirewallD is not running@H_301_10@
执行systemctl start firewalld.service,启动firewalld服务

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

查看container容器的运行状态

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

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

@H_301_10@
[root@localhost docker]# docker ps -@H_301_10@a@H_301_10@
CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS                       PORTS               NAMES
1a49a277c235        repos_local@H_301_10@/centos-jdk7-tomcat7:47@H_301_10@ hours ago        Exited@H_301_10@ (143@H_301_10@) 3@H_301_10@ minutes ago                       test-tomcat
[root@localhost docker]# docker start test@H_301_10@@H_301_10@-@H_301_10@tomcat@H_301_10@
test@H_301_10@-tomcat
[root@localhost docker]# docker ps @H_301_10@@H_301_10@a@H_301_10@
CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS              PORTS                    NAMES
1a49a277c235        repos_local@H_301_10@/centos-jdk7-tomcat7:3@H_301_10@ seconds        0.0@H_301_10@:8081@H_301_10@->8080@H_301_10@/tcp   test-tomcat
[root@localhost docker]# docker stop test@H_301_10@@H_301_10@4@H_301_10@ seconds ago                       test-tomcat
@H_301_10@

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

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

@H_301_10@
[root@localhost docker]# docker ps -a
CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS              PORTS                    NAMES
1a49a277c235        repos_local@H_301_10@/centos-jdk7-tomcat7:5@H_301_10@ seconds        docker rm @H_301_10@@H_301_10@-f test-@H_301_10@tomcat@H_301_10@
test@H_301_10@-tomcat
[root@localhost docker]# docker ps @H_301_10@-a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost docker]# @H_301_10@
@H_301_10@

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

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

猜你在找的CentOS相关文章