虚拟化之Docker(二)——部署tomcat

虚拟化主流技术

第一章 虚拟化之ESXi (待补充)
第二章 虚拟化之Hyper-V
第三章 虚拟化之KVM
第四章 虚拟化之Docker(一)
第五章 虚拟化之Docker(二)——部署tomcat

前言

上一节,我们学习了docker的一些基础命令,理论学习使我枯燥,现在我们一起举个小栗子来体验一下docker的便捷


一、首先搞定docker环境,查看上一节!

二、准备一个tomcat镜像

最好在此之前修改为国内的镜像源,否则拉取镜像可能会很慢!

root@ubuntu:~# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
Digest: sha256:a319b10d8729817c7ce0bcc2343a6f97711c7870395019340d96b6aafd6ccbea
Status: Image is up to date for tomcat:latest
docker.io/library/tomcat:latest

我这里已经下载过tomcat镜像了,第一次下载等一会就好。

root@ubuntu:~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat              latest              e0bd8b34b4ea        4 days ago          649MB

IMAGE ID是镜像的ID,是唯一的,以后操作镜像就可以使用它,CREATED这一项可以看到镜像创建时间,SIZE 镜像大小

三、接下来我们就要跑起来我们的tomcat镜像,让它变成一个容器吧。

root@ubuntu:~# docker run -p 8080:8080 --name tomcat-test -d tomcat
9ed320501bc959cfd364f6a505b8cbc04392c805b8c2116f5f7b889e90028657

注意这里的几个参数,-p 是用来端口映射,第一个8080是宿主机的端口,第二个8080是tomcat容器暴露出的端口,我们想要访问的就是tomcat容器的8080端口,无奈,外网只能访问到我们宿主机的端口,所以要把容器的端口通过宿主机暴露出来。–name 用来给我们的容器起一个高大尚的名字,-d是说容器可以去后台运行了,不要留恋我。

四、容器已经启动了,但是我们去访问8080时发现报错了(404),这时候肯定想骂博主,这不是耍我嘛!让我慢慢道来。

在这里插入图片描述

root@ubuntu:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
9ed320501bc9        tomcat              "catalina.sh run"   8 minutes ago       Up 8 minutes        0.0.0.0:8080->8080/tcp   tomcat-test

大家请看,容器确实已经开启了,我没有说谎。那是为什么呢?都是因为我们下载的tomcat版本惹的祸,你可以换一个版本解决此问题,如果不换怎么解决,我们就需要进入到tomcat-test容器里一探究竟。

root@ubuntu:~# docker exec -it tomcat-test /bin/bash
root@9ed320501bc9:/usr/local/tomcat# ls
BUILDING.txt	 LICENSE  README.md	 RUNNING.txt  conf  logs	    temp     webapps.dist
CONTRIBUTING.md  NOTICE   RELEASE-NOTES  bin	      lib   native-jni-lib  webapps  work
root@9ed320501bc9:/usr/local/tomcat# cd webapps
root@9ed320501bc9:/usr/local/tomcat/webapps# ls
root@9ed320501bc9:/usr/local/tomcat/webapps# ls -al
total 8
drwxr-xr-x 2 root root 4096 Nov 19 06:16 .
drwxr-xr-x 1 root root 4096 Nov 19 06:16 ..
root@9ed320501bc9:/usr/local/tomcat/webapps# cd ROOT
bash: cd: ROOT: No such file or directory

我们发现webapps中竟然没有我们熟悉的ROOT目录,那怎么可能访问到tomcat呢,这下完蛋了,不要急,大家仔细看,这里居然有一个webapps.dist。我们一起看看这是个什么鬼:

root@9ed320501bc9:/usr/local/tomcat# cd webapps.dist/
root@9ed320501bc9:/usr/local/tomcat/webapps.dist# ls
ROOT  docs  examples  host-manager  manager
root@9ed320501bc9:/usr/local/tomcat/webapps.dist# cd ROOT
root@9ed320501bc9:/usr/local/tomcat/webapps.dist/ROOT# ls
RELEASE-NOTES.txt  asf-logo-wide.svg  bg-middle.png  bg-upper.png  index.jsp   tomcat.svg
WEB-INF		   bg-button.png      bg-nav.png     favicon.ico   tomcat.css

哇,webapps.dist里居然放着我们熟悉的文件。这不就是我们所知道的webapps应该有的文件么。我们就用最笨的方法,把webapps.dist中的文件转移到webapps中吧。

root@9ed320501bc9:/usr/local/tomcat# mv webapps webapps2
root@9ed320501bc9:/usr/local/tomcat# mv webapps.dist/ webapps
root@9ed320501bc9:/usr/local/tomcat# cd webapps
root@9ed320501bc9:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager
root@9ed320501bc9:/usr/local/tomcat/webapps# cd ROOT
root@9ed320501bc9:/usr/local/tomcat/webapps/ROOT# ls
RELEASE-NOTES.txt  asf-logo-wide.svg  bg-middle.png  bg-upper.png  index.jsp   tomcat.svg
WEB-INF		   bg-button.png      bg-nav.png     favicon.ico   tomcat.css

这下是不是又是熟悉的味道了。

五、我们把tomcat首页变个hello tomcat,以此纪念我们的第一次docker部署tomcat之旅。

root@9ed320501bc9:/usr/local/tomcat/webapps/ROOT# vi index.jsp 
bash: vi: command not found

当我们想用vi编辑index.jsp时发现报错了,没有vi命令,linux不是自带了vi吗,为什么没有?给我一个理由!没错,linux确实有vi,但是docker没有自带啊~~,没关系,看我用魔术!

root@9ed320501bc9:/usr/local/tomcat/webapps/ROOT# echo hello tomcat > index.jsp 

在这里插入图片描述

是不是docker很便捷啊,快来一起搞起!