Docker部署Tomcat和Web应用及整体打包镜像
拉取Tomcat镜像
这里只拉取一个Tomcat容器,运行一个简单的web项目,确保整个docker可以正常运行。
查看Tomcat镜像:docker search tomcat
[root@k8s-03 ~]# docker search tomcat |
下载下来官方的镜像Starts最高的那个: docker pull tomcat
,默认下载最新版本tomcat。但是我们需要的是8.5版本的tomcat,所以指定一下版本号:docker pull tomcat:8.5.50
[root@k8s-03 ~]# docker pull tomcat:8.5.50 |
完成后查看本地镜像:docker images
[root@k8s-03 ~]# docker images |
启动tomcat镜像,创建一个容器docker run --name tomcat -d -p 8080:8080 tomcat:8.5.50
[root@k8s-03 ~]# docker run --name tomcat -d -p 8080:8080 tomcat:8.5.50 |
查看进程
[root@k8s-03 ~]# docker ps |
查看8080端口是否已监听
[root@k8s-03 ~]# netstat -anp|grep 8080 |
在主机中 ,实时查看docker容器日志
docker logs -f -t --tail 行数 容器名[containerID] |
通过docker ps命令查到containerID为 d0224f53abaf ,敲入如下命令查看日志:
docker logs -f -t --tail 1000 d0224f53abaf |
进入容器(containerID 是容器的ID):docker exec -it containerID /bin/bash
docker exec -it d0224f53abaf /bin/bash |
加载web应用
将准备的工程直接上传到服务器(我这里是ROOT.zip,上传到/root目录下,然后解压)。
通过docker的cp功能将文件复制到容器中去:docker cp ROOT d0224f53abaf:/usr/local/tomcat/webapps
[root@k8s-03 ~]# docker cp ROOT d0224f53abaf:/usr/local/tomcat/webapps |
这里复制完成后Tomcat容器不需要重启就会自动编译运行项目,看Tomcat日志:
2022-05-26T09:21:58.377404648Z 26-May-2022 09:21:58.376 INFO [localhost-startStop-2] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/ROOT] |
现在通过 http://ip:8080/ 就能访问目标服务器上的tomcat服务了。
重新运行镜像
重新运行镜像要先停止镜像然后删除,之后才能重新运行镜像。
停止运行镜像
#docker container kill [containerID] #手動停止容器 |
删除容器
docker rm tomcat |
另外,还有个删除镜像的命令
#docker rmi CONTAINERID |
打包新镜像
从容器创建一个新的镜像。
使用的命令:commit
语法:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS可添加属性说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
这里我们使用已经添加了Java Web项目的Tomcat容器创建镜像:
docker commit -a "dx" -m "tomcat-web-demo" d0224f53abaf tomcatwebdemo:v1.0
[root@k8s-03 ~]# docker commit -a "dx" -m "tomcat-web-demo" d0224f53abaf tomcatwebdemo:v1.0 |
创建完查看本地镜像:docker images可以看到我们新创建的镜像
[root@k8s-03 ~]# docker images |
现在来直接运行这个新镜像:docker run --name tomcatwebdemo -d -p 8081:8080 tomcatwebdemo:v1.0
浏览器访问新容器端口;测试成功。http://ip:8080/
至此,我们就完成了一次多层镜像的创建。
其他命令
推送镜像到仓库
打标签 docker tag tomcatwebdemo:v2.0 10.100.57.178:5000/jfinaldemo:v2.0
推送 docker push 10.100.57.178:5000/jfinaldemo:v2.0
docker commit -a "dx" -m "jfinalauthdemo" d0224f53abaf jfinalauthdemo:v4.0 |
把host主机中的文件和容器相互拷贝
docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
docker cp 宿主机的相应路径 容器名:要拷贝的文件在容器里面的路径
docker cp d0224f53abaf:/usr/local/tomcat/conf/server.xml /root/ |