- 服务器环境:CentOS 7
- 开发环境:macOS:10.13.5
1.下载jdk-1.8或jre-1.8、tomcat-8.5.33到本地
先看看 jdk 和 jre 做出的镜像,差别不是一般的大,差出一个基础镜像来,各位看客自己选择一个即可
REPOSITORY TAG IMAGE ID CREATED SIZE
datong/tomcat 1.1 1cc76fadca66 4 seconds ago 365 MB
datong/tomcat 1.0 9e2a8f6f7176 19 hours ago 595 MB
基础镜像是 centos 官方镜像 200 MB
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos latest 5182e96772bf 5 weeks ago 200 MB
- 365 MB 的是 jre
- 595 MB 的是 jdk
jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
jre:http://www.oracle.com/technetwork/java/javase/downloads/server-jre8-downloads-2133154.html
tomcat:https://tomcat.apache.org/download-80.cgi#8.5.34
2.上传文件到服务器
服务器新建目录
cd root
mkdir software
上传文件到服务器(需要输入密码的时候输入服务器root用户密码)
scp jdk-8u181-linux-x64.tar.gz root@192.168.1.248:/root/software
scp server-jre-8u181-linux-x64.tar.gz root@192.168.1.248:/root/software
scp apache-tomcat-8.5.33.tar.gz root@192.168.1.248:/root/software
3.下载镜像(假设已经安装好docker)
docker pull centos
4.查看镜像
docker images
docker.io/centos latest 5182e96772bf 5 weeks ago 200 MB
发现centos镜像已经存在了
5.在centos镜像的基础上运行容器
docker run -it --name my_tomcat --hostname datong -v /root/software/:/mnt/software/ centos bash
- –name 容器名
- –hostname 容器主机名
- -i:表示以“交互模式”运行容器
- -t:表示容器启动后会进入其命令行
- -v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
假设我们的所有安装程序都放在了宿主机的/root/software/目录下,现在需要将其挂载到容器的/mnt/software/目录下。
也就是说:/root/software/是本来虚拟机的真实目录,其对应的容器中的目录为:/mnt/software/。
那么虚拟机中/root/software/下存放的文件信息,到容器的/mnt/software/能对应的看到文件信息。
6.安装jdk-1.8或jre-1.8
命令
tar -zxvf jdk-8u181-linux-x64.tar.gz
tar -zxvf server-jre-8u181-linux-x64.tar.gz
解压后的文件夹改名为java移动到 /opt 目录下
cp -r jdk1.8.0_181/ /opt/java
设置环境变量(jdk和jre一样)
vi /etc/profile
在最后加入
export JAVA_HOME=/opt/java
export JRE_HOME=/opt/java/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JRE_HOME/lib
让配置生效
source /etc/profile
7.安装 tomcat-8.5.33
命令
tar -zxvf apache-tomcat-8.5.33.tar.gz
改名移动到 /opt 目录下
设置环境变量
vi /etc/profile
在最后加入
CATALINA_HOME=/opt/tomcat
export CATALINA_HOME
让配置生效
source /etc/profile
8.编写容器运行脚本
需要编写一个运行脚本,当启动容器时,运行该脚本,启动 Tomcat,比如/root/run.sh作为启动文件,具体过程如下:
创建脚本:
vi /root/run.sh
编辑脚本,将以下内容写进去后保存:
#!/bin/bash
source /etc/profile
sh /opt/tomcat/bin/catalina.sh run
可能会有童鞋会问,为啥不用startup.sh,其实startup.sh的源代码就是执行catalina.sh start的。
为运行脚本添加执行权限:
chmod u+x /root/run.sh
最后退出容器,用exit命令即可。
9.在安装好 jdk 和 tomcat 的容器基础上创建镜像
查看正在运行的容器
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
31f4199cf0fa centos "bash" 3 hours ago Up 2 hours my_tomcat
利用配置好的容器创建一个镜像
docker commit my_tomcat datong/tomcat:1.0
sha256:8077e4aa6e613f3a26b55d4f589d4b312def902fa80d9c03acf91b233c2ac381
自动返回一个序列ID,标识生成已经成功了,我们再通过docker images的命令来查看所有镜像。
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
datong/tomcat 1.0 8077e4aa6e61 5 seconds ago 601 MB
此时,我们可以看到最新创建的镜像“datong/tomcat”,版本标签信息为1.0,镜像ID为:8077e4aa6e61
10.在镜像的基础上运行容器
docker run -d -p 8080:8080 --name my_tomcat1 --hostname datong datong/tomcat:1.0 /root/run.sh
启动后就可以通过 服务器ip:8080端口访问 tomcat 服务了