每天做一件自己害怕的事。——<埃莉诺·罗斯福>
Docker 手动方式 搭建 JavaWeb 运行环境镜像(JDK7-Tomcat7)
前提条件
安装Docker。
下面示例以在 Mac 上的 Docker 演示,以 CentOS 为例
手动构建 Docker 镜像方式
下载镜像
下载官方 CentOS 镜像 官方 CentOS 镜像 hub.docker,
找到 Tag,安装指定版本,复制安装镜像命令,例如 $ docker pull centos:7
执行完毕,使用以下命令查看本地所有的镜像:
$ docker images
结果如下:
1 | REPOSITORY TAG IMAGE ID CREATED SIZE |
如果输出以上,即代表下载成功,我们就可以使用该镜像了。下面我们启动容器
软件下载地址
(推荐官网,下面也是官网下载转存可直接使用)
【apache-tomcat-7.0.109.tar.gz】链接: https://pan.baidu.com/s/1zbQFvCjdCj6af8E3PQEhFg 密码:uw1d
【jdk7u79linuxx64.tar.gz】链接:https://pan.baidu.com/s/1QjXLbtx-eWKYPylkd7aSbQ 密码:xp49
并在本机创建 ~/Desktop/docker/software/
目录,将下载JDK + Tomcat 压缩包文件放入目录,以便后面挂载
启动容器
容器是在镜像的基础上来运行的,容器启动了,我们就可以登录到容器中,安装自己所需的软件或应用程序。
使用以下命令即可启动容器:
1 | docker run -i -t -v ~/Desktop8652b9f0cb4c(纯净centos容器ID) bash software/: software/ |
假设我们的所有安装程序都放在了宿主机的/docker/software/
目录下,现在需要将其挂载到容器的/mnt/software/
目录下。
需要说明的是,不一定要使用 镜像 ID,也可以使用 仓库名:标签名,例如:centos:centos7
。
初始命令表示一旦容器启动,需要运行的命令,此时使用 /bin/bash
,表示什么也不做,只需进入命令行即可。
进入命令行查看:$ ls -ll
安装软件 JDK + Tomcat
为了搭建 Java Web
运行环境,我们需要安装 JDK
与 Tomcat
。
软件下载地址(推荐官网,下面也是官网下载转存可直接使用,参考上面软件现在地址,并存至本机指定目录)
下面的(exit
命令前)过程均在 容器内部 进行。我们不妨选择 /opt/
目录作为安装目录,首先需要通过 $ cd /opt/
命令进入该目录。
JDK
使用命令 解压 JDK 程序包 并重命名 JDK 目录:
1 | tar -zxf /mnt/software/jdk7u79linuxx64.tar.gz -C . && mv jdk1.7.0_79/ jdk/ |
Tomcat
使用命令 解压 Tomcat 程序包 并重命名 Tomcat 目录:
1 | tar -zxf /mnt/software/apache-tomcat-7.0.109.tar.gz -C . && mv apache-tomcat-7.0.109/ tomcat/ |
设置环境变量
编辑 .bashrc
文件
1 | vi ~/.bashrc |
然后,在文件末尾添加如下配置:
1 | export JAVA_HOME=/opt/jdk |
使用 source
命令,让环境变量立马生效:
1 | source ~/.bashrc |
编写运行脚本
我们需要编写一个运行脚本,当启动容器时,运行该脚本,启动 Tomcat,具体过程如下:
创建运行脚本命令: <这里容易出错了!!!在 ~目录下执行>
1 | vi /root/run.sh |
脚本内容如下:
1 |
|
注意: 这里必须先加载环境变量,然后使用 Tomcat 的运行脚本来启动 Tomcat 服务。
为运行脚本添加执行权限:
1 | ls -ll |
退出容器 exit
当以上步骤全部完成后,可使用 exit
命令,退出容器。
随后,可使用如下命令查看正在运行的容器:
1 | docker ps |
此时,您应该看不到任何正在运行的程序,因为刚才已经使用 exit
命令退出的容器,此时容器处于停止状态,可使用如下命令查看所有容器:
1 | docker ps -a |
输出如下内容:
1 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
记住以上 CONTAINER ID(容器 ID)
,随后我们将通过该容器,创建一个可运行 Java Web 的镜像。
创建 Java Web 镜像
使用以下命令,根据某个“容器 ID”
来创建一个新的“镜像”:
1 | docker commit 8652b9f0cb4c cl9000/javaweb:v1 |
该容器的 ID 是 57c312bbaad1
,所创建的镜像名是 cl9000/javaweb:v1
,随后可使用镜像来启动 Java Web 容器。
启动 Java Web 容器
首先使用 $ docker images
命令,查看当前所有的镜像:
1 | REPOSITORY TAG IMAGE ID CREATED SIZE |
可见,此时已经看到了最新创建的镜像 cl9000/javaweb:v1
,其镜像 ID 是 1c8483e68cf9
。
我们可以通过“镜像名”或“镜像 ID”来启动容器,与上次启动容器不同的是,我们现在不再进入容器的命令行,而是直接启动容器内部的 Tomcat 服务。此时,需要使用以下命令:
1 | docker run -d -p 58080:8080 --name javaweb cl9000/javaweb:v1 /root/run.sh |
关于 Docker 网桥的内容,需要补充说明一下。
实际上 Docker 在宿主机与容器之间,搭建了一座网络通信的桥梁,我们可通过宿主机 IP 地址与端口号来映射容器内部的 IP 地址与端口号
当运行以上命令后,会立即输出一长串 容器 ID,我们可通过 $ docker ps
命令来查看当前正在运行的容器,输出如下:
1 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
验证
在浏览器中,输入以下地址,即可访问 Tomcat 首页:
1 | http://localhost:58080/ |
注意: 这里使用的是宿主机的 IP 地址,与对外暴露的端口号 58080,它映射容器内部的端口号 8080。
使用 Dockerfile 构建镜像 方式
我们在Mac本机桌面新建 /docker/Docker/
目录,编写一个 Dockerfile 文件,随后使用 $ docker build
命令也可完成以上所有的手工构建操作。
将下载的 jdk+tomcat
压缩包, 也复制至于 Dockerfile
同级目录
Dockerfile 文件脚本
1 | ################################################################################# |
使用 Dockerfile 构建 - 相关命令
构建
1 | docker build -t cl9000/javaweb2:v1 . |
.
表示 Dockerfile
在当前文件夹下,也可使用绝对路径(/path/Dockerfile)
来表示
运行容器
1 | docker run -it -p 58081:8080 --name=javaweb-test cl9000/javaweb2:v1 |
浏览器验证
1 | http://localhost:58081/ 正常访问 Tomcat 即可 |
手动构建镜像 - 相关命令汇总
1 | ################################################################################# |
相关资源
【apache-tomcat-7.0.109.tar.gz】链接: https://pan.baidu.com/s/1zbQFvCjdCj6af8E3PQEhFg 密码:uw1d
【jdk7u79linuxx64.tar.gz】链接:https://pan.baidu.com/s/1QjXLbtx-eWKYPylkd7aSbQ 密码:xp49
相关命令行图
手动构建图
Dockerfile构建图
参考
- 手动构建 https://blog.csdn.net/weixin_48182198/article/details/106645330
- Dockerfile构建 - https://blog.csdn.net/yjk13703623757/article/details/68944549?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control
- Oracle - https://www.oracle.com/java/technologies/javase-downloads.html
- DockerHub - https://hub.docker.com
Docker资源
Docker官方英文资源:
docker 官网:http://www.docker.com
Docker windows入门:https://docs.docker.com/windows/
Docker Linux 入门:https://docs.docker.com/linux/
Docker mac 入门:https://docs.docker.com/mac/
Docker 用户指引:https://docs.docker.com/engine/userguide/
Docker 官方博客:http://blog.docker.com/
Docker Hub: https://hub.docker.com/
Docker开源: https://www.docker.com/open-source
Docker中文资源:
Docker中文网站:http://www.docker.org.cn
Docker入门教程: http://www.docker.org.cn/book/docker.html
Docker安装手册:http://www.docker.org.cn/book/install.html
一小时Docker教程 :https://blog.csphere.cn/archives/22
Docker纸质书:http://www.docker.org.cn/dockershuji.html
DockerPPT:http://www.docker.org.cn/dockerppt.html
关注【公众号】,了解更多。
赞赏一下 坚持原创技术分享,您的支持将鼓励我继续创作!