后来发现原来tomcat容器的webapps目录只有通过进入到tomcat容器里才能找到webapps目录,把war.文件部署进去,重启一下docker的服务(不用重启貌似也可以),就可以自动解压war文件。
镜像:应用程序所依赖的操作环境和配置形成的模板,用面向对象的话来说简称类
容器:通过镜像来运行容器,容器相当于类的实例。
常用命令大全:
ip addr/ip link/ ifconfig:查看宿主机里ip地址(宿主机表示是虚拟机)
systemctl start docker/service start docker:启动docker服务
systemctl stop docker:关闭docker服务
service iptables start:启动防火墙
service iptables restart:重启防火墙
service iptables stop:关闭防火墙
docker run:启动container
docker seach xxxx(镜像名称):检索镜像
docker pull xxx(镜像名称):拉取镜像
docker images:列出镜像
docker --version:查看docker的版本信息
[root@localhost ~]:家目录
[root@localhost /]:根目录
docker exec Container Id:进入容器
docker exec -it NAMES(自定义名称) /bin/bash:进入--name命名的容器
docker exec NAMES(容器的自定义名称)-it bash:进入容器里进行操作
docker attach Container Id:进入到容器的终端
docker inspect IMAGE ID:显示容器或镜像的元数据
[root@(container id)]:比如[root@24527d42d3eb]表示已进入docker里的一个CONTAINER ID的容器内部
[root@24527d42d3eb]:exit(从容器里退出)。
docker ps:查看docker里运行的容器(status为Up....表示运行中)
docker ps -a:查看docker里已停止或正在运行的容器(status为Exit)
docker start CONTAINER ID :如果容器的状态为Exit,用它来启动容器
docker stop CONTAINER ID :停止正在运行的容器,删除一个容器必须先要停止
docker restart :当部署web项目的war文件,到tomcat里的webapps里面了,重启一下docker服务,就自动解压了war文件
docker rm CONTAINER ID :删除容器
docker rm $(docker ps -a -q):删除所有已停止的容器;
docekr rmi IMAGE ID:删除镜像
rm -rf xxxx:强制删除某个war.文件或目录、文件
docker cp /xxx.war CONTAINER ID :/usr/local/tomcat/webapps:从/根目录复制一个打包后的Java web war文件 到tomcat容器里的webapps工作目录里
docker exec CONTAINER ID ls /usr/local/tomcat:默认的 安装tomcat镜像的webapps目录
docker run -name xxx -p (自定义端口号,用来访问的):(容器的端口号:比如tomcat的8080,mysql的3306) -d docker.io/tomcat(镜像名称):表示在docker里运行一个tomcat容器,如果没有镜像,自动pull一个tomcat的镜像
--name 为容器取一个名字
-p 容器要映射的端口号
-d:后台运行
-t:进入终端
-i:获得一个交互式的连接,通过获取container的输入
/bin/bash:在container中启动一个bash shell
举例:docker run --name tomcat -p 8081:8080 -d tomcat
1、基于centOs-7环境,安装docker(集装箱)后,查看docker的版本信息;
[root@localhost ~]# docker --version
Docker version 1.13.1, build 6e3bb8e/1.13.1
2、通过命令docker images查看容器的镜像docker pull tomcat 获取tomcat镜像,或者直接通过docker run --name tomcat -p 8081:8080 -d tomcat 直接运行tomcat 容器,然后通过 docker ps 查看已在docker里运行的tomcat容器
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
94091aa5df5e docker.io/tomcat "catalina.sh run" 4 hours ago Up 2 minutes 0.0.0.0:8081->8080/tcp tomcat
说明:
-p 表示端口号,前一个8080是指我们访问tomcat时的端口号, 后一个8080是tomcat启动的一个容器在docker中运行的端口号, 指定端口号为了更明确的访问tomcat。 tomcat:last last是指定的tomcat的标签,相同的镜像可以指定不同的标签以做区分。
3.docker里的tomcat容器部署后,我们通过ip地址进行访问,通过命令ifconfig进行查看ens33的ip地址即虚拟机的ip地址,在谷歌浏览器里输入:192.168.159.139:8081(有的浏览器不支持,大家注意,输入地址后找不到页面,记住多用几个浏览器试一下)进行访问,看到tomcat欢迎页面,说明你的tomcat已经部署成功!
docker0: flags=4163
inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0
inet6 fe80::42:8fff:fe90:895f prefixlen 64 scopeid 0x20
ether 02:42:8f:90:89:5f txqueuelen 0 (Ethernet)
RX packets 785 bytes 485695 (474.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 966 bytes 101710 (99.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags=4163
inet 192.168.159.130 netmask 255.255.255.0 broadcast 192.168.159.255
inet6 fe80::65ae:9fa1:2bc7:506a prefixlen 64 scopeid 0x20
ether 00:0c:29:57:6d:76 txqueuelen 1000 (Ethernet)
RX packets 145904 bytes 161275132 (153.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 29047 bytes 3307584 (3.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions
4、我们把一个写好的Java web项目Export-->war-->Finish文件到一个桌面目录里,然后把它上传到centOs宿主机里,可以借助工具crt,或者挂在u盘的方式把它copy到[root@localhost ~]:/根目录下,可以看到我上传了3个web项目,这时我们使用docker ps 查看一下docker 里正在运行的tomcat容器,当然我运行了两个tomcat容器,你可以把上传的war文件部署到两个web容器里,当然部署一个也可以,通过命令:docker cp /xxx.war CONTAINER ID :/usr/local/tomcat/webapps,这样你就成功的把项目部署到里面了,然后使用docker restart命令自动把war文件解压。然后在浏览器里输入http://ip:8080或8081就可以访问到了。
[root@localhost ~]# ls /
bin dev first.war lib media mytest1 nginx-1.6.2 proc run srv tmp two.war var
boot etc home lib64 mnt mytest2 opt root sbin sys tracingfood.war usr
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
020fbd72fe95 tomcat "catalina.sh run" 14 seconds ago Up 13 seconds 0.0.0.0:8081->8080/tcp tomcat2
8dd6a2a72f76 tomcat "catalina.sh run" 32 seconds ago Up 31 seconds 0.0.0.0:8080->8080/tcp tomcat1
5、有人找不到tomcat容器的部署目录webapps,我们首先进入到容器里面,通过命令docker exec tomcat1 -it bash进入容器才能找到/usr/loca/tomcat/webapps这个目录,把上传到centOs根目录下的tracingfood.war文件,使用命令docker cp /tracingfood.war NAMES/CONTAINAER ID /usr/local/tomcat/webapps,进行部署过去,然后通过命令docker exe CONTAINER ID ls /usr/local/tomcat/webapps进行查看部署的项目。
[root@localhost ~]# ls /
bin dev first.war lib media mytest1 nginx-1.6.2 proc run srv tmp two.war var
boot etc home lib64 mnt mytest2 opt root sbin sys tracingfood.war usr
[root@localhost ~]# docker exec -it tomcat1 bash
root@8dd6a2a72f76:/usr/local/tomcat# ls
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf include lib logs native-jni-lib temp webapps work
root@8dd6a2a72f76:/usr/local/tomcat# cd webapps
root@8dd6a2a72f76:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager tracingfood tracingfood.war
root@8dd6a2a72f76:/usr/local/tomcat/webapps# mkdir ./tracingfood ./tarcingfood.war
mkdir: cannot create directory ‘./tracingfood’: File exists
root@8dd6a2a72f76:/usr/local/tomcat/webapps# rm -rf ./tracingfood ./tarcingfood.war
root@8dd6a2a72f76:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager tracingfood.war
root@8dd6a2a72f76:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager tracingfood tracingfood.war
root@8dd6a2a72f76:/usr/local/tomcat/webapps# rm -rf tracingfood tracingfood.war
root@8dd6a2a72f76:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager
root@8dd6a2a72f76:/usr/local/tomcat/webapps# exit
exit
6、以下是效果图,输入http:192.168.159.130:8081/tracingfood/usrlogin.jsp,可以访问没问题,当然我下面的这个效果图访问的是8080,那是因为部署在这是另一台tomcat1容器上了,它容器的端口号是8080,映射的宿主机端口也是8080。
7、如有错误欢迎提出,希望能帮助大家。