1.下载centos镜像
docker pull centos
2.启动centos镜像的容器
先查看镜像的信息
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest e934aafc2206 2 weeks ago 199MB
3.启动容器
docker run -i -t -v /root/software/:/mnt/software/ e934aafc2206 /bin/bash
该命令代表
docker run <相关参数> <镜像 ID> <初始命令>
其中参数表示
-i:表示以“交互模式”运行容器
-t:表示容器启动后会进入其命令行
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
本例,将容器的/mnt/software/目录映射到本地的/root/software/目录
预先下载apache-tomcat-7.0.81.tar.gz jdk-8u121-linux-x64.tar.gz到本地的/root/software/
现在在容器中命令行中进入 cd /mnt/software/ 目录,应该能看到
# ls
apache-tomcat-7.0.81.tar.gz jdk-8u121-linux-x64.tar.gz
4.安装tomccat环境
在容器内部执行
cd /opt进入该目录
解压
# tar -zxf /mnt/software/jdk-8u121-linux-x64.tar.gz -C . (-C . 指定当前目录)
# tar -zxf /mnt/software/apache-tomcat-7.0.81.tar.gz -C .
移动重命名目录
# mv jdk1.8.0_121/ /opt/jdk/
# mv apache-tomcat-7.0.81/ /opt/tomcat/
5.编写运行脚本
# touch /root/run.sh
# vi /root/run.sh
内容如下:
#!/bin/bash
export JAVA_HOME=/opt/jdk/
export PATH=$JAVA_HOME/bin:$PATH
sh /opt/tomcat/bin/catalina.sh run
7.退出容器
exit
8.查看所有容器
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d4e3a062ab05 e934 "/bin/bash" 38 minutes ago Exited (0) About a minute ago lucid_einstein
9.创建新的tomcat镜像
# docker commit d4e3 mytomcat:1.0
sha256:c5ef8dacbf3eead5ea2b9fc3c1050a395863c6db0abd0eb7d6dee8ed46a31ffd
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat 1.0 c5ef8dacbf3e 18 seconds ago 583MB
centos latest e934aafc2206 2 weeks ago 199MB
9.启动新创建镜像的容器
首先,新建/root/webapps/ROOT目录,
# cd /root
# mkdir webapps
# cd webapps/
# mkdir ROOT
# cd ROOT/
# vi index.html
并在该目录下创建一个index.html文件,文件内容如下:
<html>
<body>
<h1>Hello World!</h1>
</body>
</html
启动容器
# docker run -d -p 58080:8080 -v /root/webapps/:/opt/tomcat/webapps/ --name mytomcat_1 mytomcat:1.0 /root/run.sh
其中,相关参数包括:
-d:表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。
-p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 58080 端口,这样就向外界暴露了 58080 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
--name:表示容器名称,用一个有意义的名称命名即可。