前言

docker 官方镜像源已经有 tomcat 的镜像,运行命令 docker pull tomcat 就可以拉下来,但是如果我们想将自己的 tomcat 打成镜像,例如,我们业务需要修改了 tomcat 的源码,这时候我们想要将他打包成镜像,如何操作 ?


一、准备

前言说是我们自己修改过源码的 tomcat,那我们必须要先准备好一个已经修改了源码,并打包成 tar.gz 的压缩包 apache-tomcat-9.0.58.tar.gz

二、操作步骤

  1. 编写文件 Dockerfile
    下面有 Dockerfile 文件中参数的简要说明
# 依赖镜像
FROM centos
FROM openjdk:8u312-jdk-oracle

MAINTAINER liqiye

# 工作目录
WORKDIR /usr/local/apache-tomcat-9.0.58

# 添加压缩包,自动解压
ADD apache-tomcat-9.0.58.tar.gz /usr/local

# 映射端口
EXPOSE 8080

# 启动
ENTRYPOINT ["/usr/local/apache-tomcat-9.0.58/bin/catalina.sh","run"]
  1. 把 winhong-winas-9.0.58.tar.gz、Dockerfile 放在linux同级目录

  2. 运行命令打包镜像
    后面的点表示根据当前目录下的 Dockerfile 文件构建

docker build -t liqiye/tomcat:v1 .
  1. 查看本地镜像
docker images
  1. 镜像运行容器
    注意镜像名必须放在最后面
docker run -itd --name winas -p 8080:8080 -v /usr/local/docker/winas/webapps:/usr/local/apache-tomcat-9.0.58/webapps liqiye/tomcat:v1
  1. 登录自己的 docker 账号
docker login
  1. 上传到docker仓库
docker push liqiye/tomcat:v1

三、Dockerfile参数说明

  • FROM
    指定基础镜像,必须是第一条指令
    如果不以任何镜像为基础,写法为:FROM scratch

  • MAINTAINER
    指定作者

  • WORKDIR
    工作目录
    这里指定的路径,是在使用 docker exec 进入容器后默认的路径

  • ADD
    作用:添加内容到镜像
    格式:ADD <src> <dest>
    说明:将复制指定的 <src> 路径下内容到镜像中的 <dest> 路径下
    <src>:可以是一个文件、目录、 URL、压缩文件。如果是压缩文件,会自动解压到 <dest> 路径下,而如果是 URL,对应的也是一个压缩文件,就不会自动解压
    <dest>:可以是镜像内绝对路径,或者相对于工作目录 WORKDIR 的相对路径

  • EXPOSE
    暴漏容器运行时的监听端口给外部
    这个只是起暴露作用,并没有实现主机与容器的端口映射,要实现端口映射需要在启动容器的时候带上参数 -p

  • ENTRYPOINT
    启动时的默认命令
    也就是从这里指定启动的程序

Dockerfile 文件的参数有很多,这里只是对本片文章用到的参数,做简单的介绍


总结

欢迎指出我的错误!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐