一、发布步骤

  • Dockerfile编写
  • 制作镜像
  • 提交Dockerhub仓库
  • 创建容器
  • 配置映射端口
  • 部署应用包

二、Dockerfile编写

# 基于哪个基础镜像
FROM centos:6.8
# 构建者的信息
MAINTAINER 1441559xxx@qq.com
# 拷贝所需要的工具包
COPY apache-tomcat-9.0.33 /usr/local/
COPY jdk1.8.0_241 /usr/local
# 配置java运行环境
ENV JAVA_HOME /usr/local/jdk1.8.0_241
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH .:$JAVA_HOME/lib:$JRE_HOME/lib
ENV PATH $PATH:$JAVA_HOME/bin 
# 容器启动时命令设置
ENTRYPOINT /usr/local/apache-tomcat-9.0.33/bin/startup.sh && tail -f /usr/local/apache-tomcat-9.0.33/logs/catalina.out

三、镜像构建

# 构建镜像
docker build -t  centos_tomcat:jdk8 .
# 查看构建镜像是否存在
docker images

四、镜像推送

# 登录dockerhub
docker login
# 修改制作好的镜像名字
 docker tag centos_tomcat:jdk8 wxktest/cos_tomcat:jdk8
# 推送镜像
docker push wxktest/cos_tomcat:jdk8
# 退出登录
docker logout

五、创建容器

# 两种方式创建
# 1.仅创建容器
docker create -ti --name [容器名称] [镜像] 

# 2.创建容器并启动容器
docker run -ti --name [容器名称] [镜像] -p [容器分配端口]:[宿主机映射端口]

六、配置映射端口

  • 方式一:

    使用docker run创建并运行容器,可以通过-p指定端口映射;但是经常会遇到忘记设置端口映射或设置错了需要修改。
    
  • 方式二:

    通过修改容器配置文件的方式来设置容器映射端口
    容器的配置文件地址:
      /var/lib/docker/containers/[hash_of_the_container]/hostconfig.json
    注意:其中的hash_of_the_container是docker镜像的hash值,可以通过docker ps或者docker inspect containername 查看
    
//修改端口映射信息,vim 容器的配置文件
"PortBindings":{
"8080/tcp":[
"HostIp":"",
"HostPort":"8089"
]
}
// 其中8080/tcp对应的是容器内部的8080端口,tomcat访问默认端口是8080
// HostPort对应的是映射到宿主机的端口8089。
修改文件: /var/lib/docker/containers/[hash_of_the_container]/config.v2.json
添加配置项:"ExposedPorts":{"80/tcp":{}} , 将这个配置项添加到 "Tty": true, 
修改完成后重启docker服务:systemctl restart docker

七、部署应用包

# 要将所要发布的应用包部署到docker中tomcat的webapp目录

# 停掉docker:tomcat-web容器
docker stop tomcat-web
# 将提前准备好的应用包拷贝到docker容器中
cd /home/test_web/test_demo
# 拷贝到容器中指定目录
docker cp test.war tomcat-web:/usr/local/tomcat/webapps/
# 启动docker:tomcat-web容器
docker start 3466 -ai
作者:|测试菜鸟|,原文链接: https://segmentfault.com/a/1190000043585390

文章推荐

C# 面向对象

Node + Express 后台开发 —— 上传、下载和发布

Linux中重定向应注意的事情

【必知必会的MySQL知识】mysql5.7安装教程

红黑树的由来及其底层原理

Linux 硬盘存储和文件系统介绍

一个由public关键字引发的bug

Java线程池和Spring异步处理高级篇

Mybatisi和Spring整合源码分析

编写一个kubernetes controller

Ubuntu 18.04.4 安装docker18.09

CXP 协议中upconnection 与downconnection的说明及其区别