准备工作
- 创建目录 /root/mydocker
- 将jdk1.8,tomcat8.5,touch.txt上传到新建目录
- 创建Dockerfile
FROM centos
MAINTAINERkevin<1060905996@qq.com>
# 把宿主机文件copy到容器/usr/local/ 目录下
COPY touch.txt /usr/local/touch1.txt# 把java和tomcat加载到容器中
ADD jdk-8u221-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.45.tar.gz /usr/local/# 安装vim 编译器
RUN yum -y install vim
# 设置环境变量
ENV MYPATH /usr/local/
# 设置登录落脚点
WORKDIR /usr/local/# 设置java和tomcat环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_221
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATAINA_HOME /usr/local/apache-tomcat-8.5.45
ENV CATAINA_BASE /usr/local/apache-tomcat-8.5.45
ENV PATH $PATH:$JAVA_HOME/bin:$CATAINA_HOME/lib:$CATAINA_HOME/bin# 容器运行时监听端口
EXPOSE 8080
# 启动tomcat
#ENTRYPOINT ["/usr/local/apache-tomcat-8.5.45/bin/startup.sh"]
#CMD ["/usr/local/apache-tomcat-8.5.45/bin/startup.sh","run"]
CMD /usr/local/apache-tomcat-8.5.45/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.5.45/logs/catalina.out
注意:CMD中为linux命名,不可使用ENV新建的变量
创建镜像
docker build -f Dockerfile -t mytomcat:0.1 .
# 如果不写 -f Dockerfile 默认读写当前路径下 Dokcerfile文件
docker build -t mytomcat:0.1 .
运行镜像
docker run -d -p 9080:8080 --name mytomcat0.1 -v /root/mydocker/tomcat8.5/test:/usr/local/apache-tomcat-8.5.45/webapps/test -v /root/mydocker/tomcat8.5/tomcatlogs/:/usr/local/apache-tomcat-8.5.45/logs --privileged=true mytomcat:0.1
-d 后台运行容器
-p 9080:8080 容器内8080端口映射宿主机9080端口
--name mytomcat0.1 指定容器名称
-v 数据卷,设置宿主机和容器数据卷目录
--privileged=true 如果写权限有问题,设置为true
tomcat:0.1 指定镜像
验证
验证tomcat以启动
curl http://127.0.0.1:9080
验证WORKDIR生效,登录落脚点
[root@localhost tomcat8.5]# docker exec mytomcat0.1 pwd
/usr/local
jdk版本
[root@localhost tomcat8.5]# docker exec mytomcat0.1 java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
【工具|dockers 自定义tomcat】进入容器
docker attachmytomcat0.1
推荐阅读
- 工具|后天就是七夕节,你准备好了吗(送上几个七夕代码,展示你技能的时候到了!)
- Linux|109 个实用 shell 脚本
- linux笔记|linux 常用命令汇总(面向面试)
- Linux|Linux--网络基础
- linux|apt update和apt upgrade命令 - 有什么区别()
- 工具|Wireshark抓包对其字TCP段理解
- linux|2022年云原生趋势
- 个人日记|K8s中Pod生命周期和重启策略
- k8s|k8s(六)(配置管理与集群安全机制)
- Go|Docker后端部署详解(Go+Nginx)