先说一下个人的一些思考。如果用docker来管理程序的部署,我们有两种方式,第一种是将我们的程序打包成镜像的方式并推送到docker本地仓库,然后将镜像实例化并运行。第二种方式是直接运行docker中的tomcat,但tomcat使用的war文件来自宿主机器(即docker服务器),这样我们每次只需覆盖掉war文件,然后重启tomcat即可,而非频繁的去推送镜像。后面使用docker来运行普通的java程序(例如springboot程序)时,我们也将使用同样的思路。
docker中运行tomcat
在Docker 入门篇 中我们提到了如何在docker中运行tomcat,这里在详细说明一下。
我们使用tomcat时,war文件是不需要放在docker容器中的,war文件通常放置在宿主机器。因此我们需要将tomcat容器中tomcat的webapps目录映射出来。
在tomcat容器内部,tomcat的webapps目录位于/usr/local/tomcat/webapps/,这里我们假设宿主机器要映射的webapps目录位于/usr/webapps下;另外我们通常需要为容器指定一个名字,例如projectTest1;为了使容器能开机启动(前提是docker是开机启动的),我们还需要使用–restart=always启动,完整的命令如下:
docker run -d -p 8080 -v /usr/webapps:/usr/local/tomcat/webapps/ --restart=always --name=projectTest1 tomcat
1
执行此命令后,我们可以使用docker ps命令查看已经启动的tomat容器。
docker中运行普通的java程序(例如springboot程序)
先说明一下,springboot有专门的一个插件,可以将springboot打包为docker镜像,然后在容器中运行。本文介绍的是如何将springboot当作普通的java程序来运行
假设我们的java程序放在/usr/javaproject1/下,我们先要在其中放一个启动脚本,注意脚本不允许以&结尾。脚本名字假设为run.sh,别忘了赋予其可执行权限,其内容参考如下:
java -jar xxxx.jar
1
然后操作docker。
拉取java镜像
docker pull java
1
运行
# -w表示设定容器中当前的工作目录
docker run -d -p 8080:8080 -v /usr/javaproject1/:/usr/javaproject1/ -w /usr/javaproject1/ --name=projectTest2 java ./run.sh
1
2
然后就可以使用docker ps命令查看我们的容器了。
bonous:在docker中运行centos
是的,你没看错,我们可以在docker中运行一个centos,直接如下命令即可拉取并运行一个centos容器,并接入到一个终端:
# -i表示交互式操作,-t表示开启一个终端,通常这两个参数一起使用
docker run -it centos
---------------------
【转载】
作者:sxyandapp
原文:https://blog.csdn.net/sxyandapp/article/details/79468198
|
|