一、基于系统镜像,自己安装构建 Nginx的自定义镜像
使用上次添加SSH服务 ubuntu:18.04镜像作为基础镜像来构建。
Tomcat需要 JDK, 先从官网下载好 Tomcat和JDK,在Dockerfile中离线安装JDK和Tomcat。
1、创建上下文路径并准备工作
创建一个 tomcat_ubuntu 工作目录,在其中创建Dockerfile文件和run.sh 文件。
将 Tomcat和JDK压缩包解压,顺便改个名。没用的文件删除。
[root@centos7 tomcat_ubuntu]# ls
Dockerfile jdk8 run.sh tomcat8
2、编写 Dockerfile文件
[root@centos7 tomcat_ubuntu]# cat Dockerfile
FROM sshd2:ubuntu
LABEL author="赵云"
# 设置环境变量,所有操作都是非交互式的
ENV DEBIAN_FRONTEND noninteractive
# 设置tomcat和jdk的环境变量
ENV CATALINA_HOME /tomcat
ENV JAVA_HOME /jdk
ENV JRE_HOME=$JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
# 复制 tomcat8和jdk8文件到镜像中
COPY tomcat8 /tomcat
COPY jdk8 /jdk
COPY run.sh /run.sh
# 设置执行权限
RUN chmod +x /*.sh
RUN chmod +x /tomcat/bin/*.sh
#定义可以被挂载的目录,配置目录、日志目录和程序目录
VOLUME ["/tomcat/conf","/tomcat/logs","/tomcat/webapps/ROOT"]
# 暴露端口
EXPOSE 8080
CMD ["/run.sh"]
3、编写 run.sh脚本
#!/bin/bash
/usr/sbin/sshd -D &
exec ${CATALINA_HOME}/bin/catalina.sh run
4、构建自定义镜像,创建并启动容器
[root@centos7 tomcat_ubuntu]# docker build -t tomcat:uv1 .
[root@centos7 tomcat_ubuntu]# docker run -d -p18080:8080 -p 10022:22 tomcat:uv1
6bb687206d2d4d96b77300c0f0b665ad80a722f15b386cb1ed9a4ee08cdc901f
[root@centos7 tomcat_ubuntu]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6bb687206d2d tomcat:uv1 "/run.sh" 9 seconds ago Up 8 seconds 0.0.0.0:10022->22/tcp, 0.0.0.0:18080->8080/tcp great_williamson
浏览器访问:
在 /var/lib/docker/volumes路径下,可以查看创建的匿名数据卷,Docker会生成一个随机名称。
—— Stay Hungry. Stay Foolish. 求知若饥,虚心若愚。