1. 部署要求
宿主机为CentOS7,上面安装了docker。
1、docker镜像选择ubuntu,在ubuntu中安装tomcat。
2、容器8080端口映射为宿主机18080端口。
2. 软件准备
1、ubuntu下可以使用的jdk一份,jdk-8u131-linux-x64.tar.gz。
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2、ubuntu下可以使用的tomcat一份,apache-tomcat-8.0.44.tar.gz。
下载地址:http://tomcat.apache.org/download-80.cgi
3、使用xftp,上传jdk和tomcat到CentOS7的/download目录下。
3. docker准备
3.1. 下载镜像
docker search ubuntu
docker pull ubuntu
docker images
3.2. 启动镜像
假设我们的所有安装程序都放在了宿主机的/download目录下,现在需要将其挂载到容器的/mnt/software目录下。
docker run -i -t -v /download/:/mnt/software/ ubuntu /bin/bash
注意,上面的ubuntu也可以换成ubuntu的镜像ID。
- -i:表示以“交互模式”运行容器。
- -t:表示容器启动后会进入其命令行。
- -v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录> 。
3.3. 启动容器
退出容器后,可以再次启动容器(使用容器ID或容器NAMES)。docker ps -l
docker start 87be
注意,先运行docker run,然后被stop掉的容器才可以使用上面的命令。
上面的命令不能进入容器,要进入容器还需要使用:docker attach 87be
4. 安装jdk
1、进入容器环境。
2、更新vim,否则上下左右和退格键无法使用。apt-get update
apt-get remove vim-common
apt-get install vim
3、进入jdk所在目录cd /mnt/software
然后参考《全平台安装JDK》,完成剩下的配置。
5. 安装tomcat
1、进入容器环境。
2、解压tomcat到/opt目录。cd /mnt/software
tar zxvf apache-tomcat-8.0.44.tar.gz -C /opt
3、启动tomcat。cd /opt/apache-tomcat-8.0.44/bin/
./startup.sh
4、测试访问。apt-get install curl
curl localhost:8080
5、关闭tomcat。./shutdown.sh
6. 编写启动脚本
1、进入根目录,新建run.sh文件。cd /
vim run.sh
2、编辑run.sh内容为:
1 |
|
注意:run.sh中的启动脚本不可以写为:
1 | sh /opt/apache-tomcat-8.0.44/bin/startup.sh run |
如果这么写的话,在使用docker run的时候,会自动退出。
因为想要Docker容器后台运行,就必须有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。
3、更改run.sh权限chmod 777 run.sh
4、测试访问。./run.sh
curl localhost:8080
7. 保存容器
1、退出容器exit
2、查看dockeriddocker ps -l
3、保存容器为ubuntu/tomcat镜像。docker commit 87be ubuntu/tomcat
8. 启动镜像
1、启动ubuntu/tomcat镜像docker run -d -p 18080:8080 --name tomcat8.0 ubuntu/tomcat /run.sh
- -d:表示以守护模式执行/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。
- -p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 18080 端口。
- –name:表示容器名称,用一个有意义的名称命名即可。
2、查看容器运行状态docker ps
3、关闭容器docker kill tomcat8.0
或者 docker stop tomcat8.0
4、再次启动容器docker start tomcat8.0
5、测试访问
在宿主机中,执行命令 curl localhost:18080
。
或者,查到容器IP后,执行命令 curl <容器IP>:8080
。
或者,在宿主机中关闭防火墙,systemctl stop firewalld.service
。然后,在宿主机同局域网PC浏览器中输入http://<宿主机IP>:18080
。