虚拟化主流技术
第一章 虚拟化之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