docker镜像基础: helloworld.war包镜像(上)
写在前面
- 基于 helloworld.war 包,制作 helloworld 镜像
- 熟悉 dockerfile 编写
- 验证 commit 提交镜像失败问题
- cp web项目至容器后,不能commit生成最新镜像(volume导致)
实验素材
- helloworld.war
- jdk-8u31-linux-x64.tar.gz
- apache-tomcat-8.0.53.tar.gz
- centos 镜像版本
- 拉取命令
docker pull centos:latest
- CentOS Linux release 7.5.1804 (Core)
- 拉取命令
- 所有软件包已上传 CSDN,需要请下载
操作步骤
-
1 上传( XShell/SecureCRT )实验素材至 宿主机服务器某文件夹下,文件目录结构如下:
-
2 编写 dockerfile, 具体如下:
FROM centos:latest
MAINTAINER kngines
#把java与tomcat添加到容器中
ADD jdk-8u31-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.0.53.tar.gz /usr/local/
#配置java与tomcat环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_131
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.0.53
ENV CATALINA_BASE /usr/local/apache-tomcat-8.0.53
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#容器运行时监听的端口
EXPOSE 8080
-
3 dockerfile 构建镜像:
docker build -t tomcat8-jdk1.8:latest . -f tomcat8-jdk1.8-dockerfile
- 镜像生成后,使用
docker images
查看本地镜像,如下:- 其中,200MB大小的镜像为拉取的最新CentOS镜像,590MB大小的镜像为构建的镜像,镜像大小有明显的改变。
- 其中,200MB大小的镜像为拉取的最新CentOS镜像,590MB大小的镜像为构建的镜像,镜像大小有明显的改变。
-
4 创建容器:
-
docker run -it -d -p 0.0.0.0:8088:8080 --name helloworld tomcat8-jdk1.8:latest
-
docker ps -a
,新生成的容器如下所示:
-
-
-
5 访问
- 进入容器:
docker exec -it a76243528c21 /bin/bash
- a76243528c21 为新生成容器的ID
- 在容器中,启动tomcat:
sh /usr/local/apache-tomcat-8.0.53/bin/startup.sh
- 执行过程及结果如下:
- 执行过程及结果如下:
- 进入容器:
-
6 结果
- 结果显示如下:
- hellowworld.war镜像制作(上),到此已经成功结束。
- 结果显示如下:
下载链接
其他命令
- 查看宿主机 OS 版本信息
cat /etc/redhat-release
- 容器内安装
ifconfig
yum install net-tools
后记
- 本想在本篇博文中把 helloworl.war 镜像制作过程整体记录下,感觉那样文章太长,阅读不便。所以将文章分了上下篇。
- 当然,如果完成了博文中最后部分,仍旧可以通过
commit
创建自己的镜像,作为Web项目运行基础镜像,包含tomcat、jdk。 - 下篇比较重要,主要是记录在镜像制作过程中遇到的坑(volume)。
- 有问题欢迎留言,谢谢!