windows docker中部署tomcat

本次部署的容器类型为Linux。右击docker图标可以知道。
1

使用Hub中centos镜像、jdk包和tomcat包制作tomcat镜像

结构


准备工作

打开powershell,下载centos,默认为最新版。
因为配置了镜像加速,所以下载很快。

PS C:\Users\liu> docker pull centos      

2


在D盘建立dockertest目录并进入。

PS C:\Users\liu> cd D:                    
PS D:\> mkdir dockertest 
PS D:\> cd .\dockertest\

建立一个说明文件与dockerfile文件,dockerfile文件是docker的精华之一。

PS D:\dockertest> new-item readme.txt

PS D:\dockertest> new-item Dockerfile

jdk下载地址:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html#license-lightbox

tomcat下载地址:
https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.50/

将下载的文件移到dockertest目录下。
mulu


编写Dockerfile

之所以将dockerfile文件命名为Dockerfile,是为了在build时,不用-f指定文件,会自动找到Dockerfile,更方便一些。
用记事本打开Dockefile文件,输入:

FROM centos
MAINTAINER xuliu<liuxuecan@njust.edu.cn>

COPY readme.txt /usr/local/readmei.txt

ADD jdk-8u291-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.0.50.tar.gz /usr/local/

RUN yum -y install vim
RUN yum -y install net-tools

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_291
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.0.50
ENV CATALINA_BASH /usr/local/apache-tomcat-8.0.50
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-8.0.50/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.0.50/logs/catalina.out

命令解释:
RUN tar.gz时会自动解压缩到/usr/local。

FROM		# 基础镜像,一切从这里开始构建  centos
MAINTAINER	# 镜像是谁写的,姓名+邮箱
RUN			# 镜像构建的时候需要运行的命令,等同与在shell中输入的命令
ADD			# 步骤:tomcat镜像,这个tomcat压缩包就说添加内容。
WORKDIR		# 镜像的工作目录,可指定
VOLUME		# 挂载的目录 -v
EXPOSE		# 暴露端口配置 -p
CMD			# 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT	# 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD		# 当构建一个被继承的dockerfile,这个时候就会运行ONBUILD指令(触发指令)
COPY		# 类似ADD命令,将我们文件拷贝到镜像中
ENY			# 构建时设置环境变量,-e

建立镜像

PS D:\dockertest> docker build -t mytomcat .  

注意最后面的.
查看镜像:

PS D:\dockertest> docker images                                                                                         REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
mytomcat     latest    7603ecae93c7   About a minute ago   657MB
centos       latest    300e315adb2f   6 months ago         209MB

在软件中也能看到:
132


启动镜像,建立容器

docker run -d -p 9090:8080 --name xuliutomcat -v D:/dockertest/xuliu/build/tomcat/webapps:/usr/local/apache-tomcat-8.0.50/webapps -v D:/dockertest/xuliu/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-8.0.50/logs mytomcat
  • -d: 后台运行
  • -p: 宿主机端口与容器端口的映射
  • -v: 挂载路径,宿主机路径:容器路径

查看建立的容器,发现正在运行:

PS D:\dockertest> docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED         STATUS         PORTS                                       NAMES
d24a7845535b   mytomcat   "/bin/sh -c '/usr/lo…"   3 minutes ago   Up 3 minutes   0.0.0.0:9090->8080/tcp, :::9090->8080/tcp   xuliutomcat

在软件中也能看到:
2213


可以进入容器:

PS D:\dockertest> docker exec -it d24a7845535b /bin/bash
[root@d24a7845535b local]# ls
apache-tomcat-8.0.50  bin  etc  games  include  jdk1.8.0_291  lib  lib64  libexec  readmei.txt  sbin  share  src

可见,默认路径为/usr/local,与Dockerfile文件设置一致。这实际上是一个精简版的centos。


查看容器内webapps文件夹:

[root@d24a7845535b local]# ls /usr/local/apache-tomcat-8.0.50/webapps/
[root@d24a7845535b local]#

发现为空,所以在浏览器中访问不到。
5610


发布项目sample,测试tomcat

tomcat的例子下载地址https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/
下载下来是一个war包:sample.war。
在启动镜像时,-v参数将宿主机与容器做了卷挂载:

-v D:/dockertest/xuliu/build/tomcat/webapps:/usr/local/apache-tomcat-8.0.50/webapps 

-v D:/dockertest/xuliu/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-8.0.50/logs 

一个是D:/dockertest/xuliu/build/tomcat/webapps/usr/local/apache-tomcat-8.0.50/webapps对应。
一个是D:/dockertest/xuliu/build/tomcat/tomcatlogs//usr/local/apache-tomcat-8.0.50/logs对应。

因此将下载得到的sample.war放到D:/dockertest/xuliu/build/tomcat/webapps中,同时也会出现在容器内。
查看容器内地址/usr/local/apache-tomcat-8.0.50/webapps

[root@d24a7845535b local]# ls /usr/local/apache-tomcat-8.0.50/webapps/
sample  sample.war

其中文件夹sample是sample.war的解包。
此时宿主机:
318


重新进入浏览器,输入localhost:9090/sample/index.html
其中localhost也可写为本机的ip地址,可通过ipconfig查看。
709
711


431
751


另一个卷挂载结果:
容器中:
rongqi

宿主机中:
suzhujiguajuan



直接使用docker hub中的镜像

这是别人做好的镜像,类似我们之前做的镜像mytomcat
很简单,拿过来直接用就行。


下载镜像

pull tomcat

运行镜像生成容器

docker run -it  -v D:\dockertest\xuliu\build\tomcat\webapps\:/usr/local/tomcat/webapps -p 8080:8080 c43a65faae57

这里容器仍然挂载到D:\dockertest\xuliu\build\tomcat\webapps\
并指定端口映射。

进入容器

不要退出运行的容器,另外再打开一个powershell。


查看容器id
微软


进入容器

进入


测试
将sample.war移到宿主机目录:D:\dockertest\xuliu\build\tomcat\webapps\,则该容器内:

进入测试


此时浏览器可以访问了,部署完成了。
访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值