八、上传web项目并启动docker的tomcat服务
八、上传web项目并启动docker的tomcat服务
1、Centos7使用 yum 安装docker
#查看你当前的内核版本 uname -r
#安装 Docker
yum -y install docker-io
2、启动 Docker 后台服务
service docker start
3、上传项目到/docker/resource/ 目录(只是一个springboot的demo应用测试)
[root@iz2zecm4ndtkaue32tynx5z resource]# pwd /docker/resource [root@iz2zecm4ndtkaue32tynx5z resource]# ls taobao-v1.0.war [root@iz2zecm4ndtkaue32tynx5z resource]#
2、以交互模式启动容器(检查一下tomcat的安装位置):
docker run -it --name mytomcat -p 1082:8080 tomcat:8 /bin/bash
进入容器后,查看tomcat安装路径
find / -name *tomcat*
[root@iz2zecm4ndtkaue32tynx5z resource]# docker exec -it mytomcat /bin/bash root@31dfa63eae1f:/usr/local/tomcat# find / -name *tomcat* /usr/local/tomcat /usr/local/tomcat/conf/tomcat-users.xml /usr/local/tomcat/conf/tomcat-users.xsd /usr/local/tomcat/webapps/manager/images/tomcat.gif /usr/local/tomcat/webapps/docs/images/tomcat.png /usr/local/tomcat/webapps/docs/images/tomcat.svg /usr/local/tomcat/webapps/docs/images/tomcat.gif /usr/local/tomcat/webapps/docs/appdev/sample/web/images/tomcat.gif /usr/local/tomcat/webapps/host-manager/images/tomcat.gif /usr/local/tomcat/webapps/ROOT/tomcat.png /usr/local/tomcat/webapps/ROOT/tomcat.svg /usr/local/tomcat/webapps/ROOT/tomcat.gif /usr/local/tomcat/webapps/ROOT/tomcat.css /usr/local/tomcat/webapps/ROOT/tomcat-power.gif /usr/local/tomcat/bin/tomcat-juli.jar /usr/local/tomcat/lib/tomcat-websocket.jar /usr/local/tomcat/lib/tomcat-jni.jar /usr/local/tomcat/lib/tomcat-dbcp.jar /usr/local/tomcat/lib/tomcat-api.jar /usr/local/tomcat/lib/tomcat-util.jar /usr/local/tomcat/lib/tomcat-i18n-es.jar /usr/local/tomcat/lib/tomcat-coyote.jar /usr/local/tomcat/lib/tomcat-util-scan.jar /usr/local/tomcat/lib/tomcat-i18n-fr.jar /usr/local/tomcat/lib/tomcat-i18n-ja.jar /usr/local/tomcat/lib/tomcat-jdbc.jar find: ‘/proc/1/map_files’: Operation not permitted find: ‘/proc/51/map_files’: Operation not permitted find: ‘/proc/84/map_files’: Operation not permitted find: ‘/proc/93/map_files’: Operation not permitted find: ‘/proc/97/map_files’: Operation not permitted root@31dfa63eae1f:/usr/local/tomcat#
根据内容得知tomcat的根目录:/usr/local/tomcat/ ,项目的部署目录就应该是: /usr/local/tomcat/webapps/
前边已经通过命令将项目上传到/docker/resource/目录,可以通过如下命令重新启动一个容器:
两种部署web项目到docker的方式:
第一种部署方法,启动镜像时需要挂载目录到本地:
docker run -i -t -v /docker/resource:/usr/local/tomcat/webapps/ 53a0016cd0ba /bin/bash
进入系统内部:
docker exec -it 53a0016cd0ba /bin/bash
可以看到:
root@53a0016cd0ba:/tmp/mesos-sandbox#
新建Dockerfile文件:
from hub.c.163.com/library/tomcat
MAINTAINER diy_os diy_os@163.com
COPY web.war /usr/local/tomcat/webapps
把war包放在同一目录下,执行sudo docker build -t ImageName:version .即可。
web项目跟进宿主机的本地挂载目录
docker run -d --name=mytomato03 -it -v /docker/resource/:/usr/local/tomcat/webapps/ -p 2080:8080 tomcat:8
宿主机上查看监听端口:
[root@iz2zecm4ndtkaue32tynx5z resource]# netstat -tunlp | grep 2080
tcp6 0 0 :::2080 :::* LISTEN 13406/docker-proxy-
[root@iz2zecm4ndtkaue32tynx5z resource]#
说明一下几个参数的含义:
-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态
-p 显示建立相关链接的程序名
浏览器访问页面:
基于正在运行的容器创建新的镜像image:
docker commit 容器ID 自定义镜像名称
[root@iz2zecm4ndtkaue32tynx5z resource]# docker commit ab5efb23746f mytomcat-09 sha256:11c720a2f77e4ed5ebde7be027075bf41383f080d27122144ca55bb16bb2c84e [root@iz2zecm4ndtkaue32tynx5z resource]#
二、通过Dockerfie制作镜像文件方式打包jdk+tomcat
将自己的javaweb项目与docker结合
1、准备jdk+tomcat软件
材料:
1、jdk:jdk-8u141-linux-x64.tar.gz
2、tomcat:apache-tomcat-8.5.32.tar.gz
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz
3、web测试项目:taobao-v1.0.war
4、Dockerfie文件: Dockerfile
2、步骤:
2.1、存储于Linux机器的本地目录/docker/resource下(利用CRT上传)。
2.2、利用linux命令解压jdk和tomcat
tar -zxvf 待解压文件
#解压jdk
tar -zxvf jdk-8u141-linux-x64.tar.gz
#解压tomcat
tar -zxvf apache-tomcat-8.5.32.tar.gz
2.3、然后重命名两个文件夹为jdk和tomcat方便下一个步骤。
mv 源文件 目标文件
#改名jdk
mv jdk1.8.0_141 jdk
#改名tomcat
mv apache-tomcat-8.5.32 tomcat
jiang项目taobao-v1.0.war解压放到tomcat目录webapps/下
#unzip -d 指定目录,建议加上此命令,不加-d会散包解压
unzip -oq taobao-v1.0.war -d tomcat/webapps/taobao-v1.0
编写Dockerfile文件
#---------------------------------------------------------------------
#This is a comment注释
#使用基础镜像centos ,本地没有回自动去docker上下载
FROM centos
#指定镜像创建者信息
MAINTAINER tonny <<A href="mayun@51cto.com">88888888@163.com>
#切换镜像的目录,进入/usr目录(基础镜像是一个linux系统,可参照linux查看相应目录)
WORKDIR /usr
#在/usr/下创建java目录,用来存放jdk
RUN mkdir java
#切换镜像的目录至/usr/java
WORKDIR /usr/java
#在/usr/java下创建jdk目录,用来存放jdk文件
RUN mkdir jdk
#切换镜像的目录至/usr/java/jdk
WORKDIR /usr/java/jdk
#将宿主机的jdk目录下的全部文件考入至镜像的/usr/java/jdk目录下
ADD jdk /usr/java/jdk
#切换镜像的目录至/opt
WORKDIR /opt
#在/opt下创建tomcat目录,用来存放tomcat文件
RUN mkdir tomcat
#将宿主机的tomcat目录下的全部文件考入至镜像的/opt/tomcat目录下
ADD tomcat /opt/tomcat
#设置环境变量
ENV JAVA_HOME=/usr/java/jdk
ENV JAVA_BIN=/usr/java/jdk/bin
ENV PATH=$PATH:$JAVA_HOME/bin
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#设置容器启动时执行的操作
CMD /opt/tomcat/bin/catalina.sh run
#---------------------------------------------------------------------
上面就是文件的具体内容,每行代码都写有注释,将这个文件放在刚刚解压jdk和tomcat的同级目录。
3、制作基础镜像
使用命令:docker build -t base_server:latest .
其中base_server为镜像名称,latest为镜像tag。
[root@iz2zecm4ndtkaue32tynx5z resource]# docker build -t base_server:latest .
制作成功后,查看镜像:docker images
[root@iz2zecm4ndtkaue32tynx5z resource]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
base_server latest d638ded2e9be 20 seconds ago 610 MB
docker.io/centos latest 49f7960eb7e4 8 weeks ago 200 MB
[root@iz2zecm4ndtkaue32tynx5z resource]#
注意:1.文件名不能有大写字母,需要的话用下划线分开。
2.语句的最后空格加上句号,代表在当前目录的文件夹下面进行此操作。
三、启动容器
使用命令:docker run -d -p 5050:8080 base_server:latest
-d:表示以“后台模式”启动,此时 Tomcat 控制台不会出现在输出终端上。
-p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 5050 端口,这样就向外界暴露了 5050 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。
--name:表示容器名称,用一个有意义的名称命名即可。
四、测试访问:ip+宿主机端口
五、测试访问项目页面:
六、将创建好的镜像上传到docker hub仓库
为存在于本地的镜像打标签,命令如下:
docker tag <existing-image> <hub-user>/<repo-name>[:<tag>]
这里的tag不指定就是latest。
push镜像,命令如下:
docker push <hub-user>/<repo-name>:<tag>
通过命令拉取一下镜像看看是否成功。命令如下:
docker pull <hub-user>/<repo-name>:<tag>
每天一跬步,全年一大步