现在用docker部署应用已经是一种比较流行的方式了,本人最近也对docker这种技术做了一下学习,将学习的知识点做下总结。
这篇谈谈docker的安装与tomcat环境的搭建以及部署javaweb应用,安装环境为ubuntu系统。
为方便起见,下面的操作都约定在root用户下操作,先切换到root用户下。
1.安装docker
按照网上的资料先尝试官网的安装方式,但是到了安装步骤apt-get -y install docker-ce长时间等待都没有安装成功,最后选择的是采用阿里云的镜像的方式安装成功。采用阿里云镜像的安装方式如下:
1)先更新系统的源
apt-get update
2)安装curl
apt-get install curl
3)安装docker
4)安装完成后输入如下命令验证是否安装成功
docker version
出现
说明安装成功。
2.体验第一个容器hello-world
docker安装完成后,先来看看如何启动一个容器。启动容器的步骤先得到一个镜像,然后用镜像去启动启动容器。
输入如下命令:
docker images
会显示
系统中目前中还没有镜像。
用如下命令搜索镜像hello-world
docker search hello-world
可以看到有好多已经做好的hello-world镜像。现在下载镜像
docker pull hello-world
上述命令执行后会下载镜像,然后再用images命令查看可以看到本地已经有该镜像了。
然后利用镜像启动容器。
docker run hello-world
可以看到如下信息:
说明容器已经成功启动。
docker还有些常用的命令:
docker exec -it “容器ID” bash #启动已经存在的容器
docker start "容器ID" #启动已经存在的容器
docker stop "容器ID" #关闭正在运行的容器
3.制作基础的tomcat环境镜像
制作tomcat镜像的方式有两种,一种是直接下载仓库中现有的成熟的tomcat镜像。
docker pull tomcat
执行上述命令就下载了一个可以直接运行的tomcat镜像到本地。为了更好学习,手工制作的方式也要会,下面说下手工制作方式。
先下载好制作镜像需要的jdk安装包和tomcat安装包,我使用的是
jdk-8u191-linux-x64.tar.gz和apache-tomcat-8.5.37.tar.gz
然后还要准备好一个最基础的镜像,就像在windows上安装软件一样,需要一个windows系统。
docker pull ubuntu-16.04
下载基础镜像到本地,得到如下镜像,下面的操作都是建立在这个镜像基础上。
执行下面的命令:
docker run -i -t -v /root/software/:/mnt/software/ coreapps/ubuntu16.04:latest /bin/bash
这条命令比较长,我们稍微分解一下,其实包含以下三个部分:
docker run <相关参数> <镜像 ID> <初始命令>
其中,相关参数包括:
-i:表示以“交互模式”运行容器
-t:表示容器启动后会进入其命令行
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
假设我们的所有安装程序都放在了宿主机的/root/software/目录下,将其挂载到容器的/mnt/software/目录下。
执行完上述命令以后,现在我们已经进入到了容器里面,以下的几部操作都是在容器里面进行的。
安装 JDK 与 Tomcat,不妨选择/opt/目录作为安装目录,首先需要通过cd /opt/命令进 入该目录。
安装jdk
tar -zxf /mnt/software/jdk-8u191-linux-x64.tar.gz
安装tomcat
tar -zxf /mnt/software/apache-tomcat-8.5.37.tar.gz
编写一个脚本,当启动容器时,运行该脚本,启动tomcat服务。
创建脚本
vim /root/run.sh
编写脚本
#!/bin/bash
export JAVA_HOME=/opt/jdk1.8.0_191
export PATH=$PATH:$JAVA_HOME
sh /opt/apache-tomcat-8.5.37/bin/catalina.sh run
jdk1.8.0_19和apache-tomcat-8.5.37为上面解压后的解压目录
为脚本添加执行权限
chmod u+x /root/run.sh
完成以上步骤后使用exit退出容器。
执行以下命令可以查看系统当中的容器。
docker ps -a
找到刚才创建的容器,这里我的容器ID为f2aa0efb5882。
使用以下命令,根据某个“容器 ID”来创建一个新的“镜像”:
docker commit f2aa0efb5882 javaweb:0.1
上面利用我们修改后的容器再生成一个新的镜像,这个镜像相当于一个在操作系统上集成了tomcat环境的镜像。
然后利用这个新生成的镜像启动一个容器,那容器就是具有tomcat环境的容器了。
利用新镜像启动容器
docker run -d -p 58080:8080 --name javaweb javaweb:0.1 /bin/bash /root/run.sh
在浏览器中,输入以下地址,即可访问 Tomcat 首页:
上面的IP地址为容器的宿主机的IP地址。
4.制作javaweb项目镜像
上面制作基础tomcat环境的镜像是利用容器生产的镜像,还可以利用Dockerfile来制作镜像。
准备一个已经打包好的java项目war包,假定为demo.war
在root目录下创建Dockerfile文件,文件内容如下:
from javaweb:0.1
MAINTAINER carter@qq.com
COPY demo.war /opt/apache-tomcat-8.5.37/webapps/
执行build命令来构建一个镜像
docker build -t demo:0.0.1 .
参数说明:
1)-t 指定要创建的目标镜像名(这里指定镜像名为seckill,tag为0.0.1)
2). Dockerfile 文件所在目录
查看创建好的镜像,我实验的镜像ID为d895d3084969
利用镜像启动一个容器。
docker run -d -p 58080:8080 demo:0.0.1
在浏览器中输入:
打开页面成功,说明部署成功。
参考:
https://blog.csdn.net/qq_28426351/article/details/51142025
https://www.cnblogs.com/xuwenjin/p/9032540.html