容器是在镜像的基础上来运行的,一旦容器启动了,我们就可以登录到容器中,安装自己所需的软件或应用程序。既然镜像已经下载到本地,那么如何才能启动容器呢?

只需使用以下命令即可启动容器:

docker run -i -t -v /mnt/hgfs/vmshare/:/mnt/software/ b969ab9f929b /bin/bash

这条命令比较长,我们稍微分解一下,其实包含以下三个部分:

docker run <相关参数> <镜像 ID> <初始命令>

其中,相关参数包括:

-i:表示以“交互模式”运行容器

-t:表示容器启动后会进入其命令行

-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>

假设我们的所有安装程序都放在了宿主机的/mnt/hgfs/vmshare/目录下,现在需要将其挂载到容器的/mnt/software/目录下。

docker安装jdk,tomcat_docker

复制jdk-8u102-linux-x64.gz到/opt/目录下

docker安装jdk,tomcat_docker_02

解压tar -zxvf jdk-8u102-linux-x64.gz

    tar -zvxf  apache-tomcat-8.0.41.tar.gz

docker安装jdk,tomcat_docker_03

配置

export JAVA_HOME=/opt/jdk1.8.0_102

export JRE_HOME=${JAVA_HOME}/jre  

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  

export PATH=${JAVA_HOME}/bin:$PATH

export TOMCAT_HOME=/opt/apache-tomcat-8.0.41

export CATALINA_HOME=$TOMCAT_HOME

docker安装jdk,tomcat_docker_04

docker安装jdk,tomcat_docker_05

修改tomcat编码 :

docker安装jdk,tomcat_docker_06

让环境变量生效:source /etc/profile


docker安装jdk,tomcat_docker_07

验证tomcat

docker安装jdk,tomcat_docker_08

docker安装jdk,tomcat_docker_09

docker安装jdk,tomcat_docker_10

-------------------------------------华丽分割线---------------------------------

下面是docker里面配置tomcat:

1、进入容器,创建运行脚本:

#!/bin/bash

source /etc/profile

sh /opt/apache-tomcat-8.0.41/bin/catalina.sh run

注意:这里必须先加载环境变量,然后使用 Tomcat 的运行脚本来启动 Tomcat 服务。

最后,为运行脚本添加执行权限:chmod 777 /root/run.sh

docker安装jdk,tomcat_docker_11

docker安装jdk,tomcat_docker_12

2、退出容器

docker安装jdk,tomcat_docker_13

3、创建 Java Web 镜像

使用以下命令,根据某个“容器 ID”来创建一个新的“镜像”:

docker commit 0992c744874b huangyong/javaweb:1.0

该容器ID是0992c744874b,所创建的镜像名是huangyong/javaweb:1.0,随后可使用镜像来启动 Java Web 容器。

docker安装jdk,tomcat_docker_14

docker安装jdk,tomcat_docker_15

4、启动 Java Web 容器

此时已经看到了最新创建的镜像huangyong/javaweb:1.0,其镜像ID是d5fabeb54833

宿主机上建立目录:/root/webapps/ROOT/ 里面放一个index.html文件

docker安装jdk,tomcat_docker_16

docker run -d -p 58080:8080 -v /root/webapps/:/opt/apache-tomcat-8.0.41/webapps/ --name mytomcat huangyong/javaweb:1.0 /root/run.sh

稍作解释:

-d:表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。

-p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 58080 端口,这样就向外界暴露了 58080 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。

--name:表示容器名称,用一个有意义的名称命名即可。

-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>

docker安装jdk,tomcat_docker_17docker安装jdk,tomcat_docker_18

5、查看日志

docker安装jdk,tomcat_docker_19