上面记录了基本使用,但是比如部署一个站点,数据库等等,这些就需要和虚拟机内部打交道了。
举一个简单的例子。
比如pull一个tomcat的镜像,发布一个站点该怎么做。
首先 编辑一个文件,名字 Dockerfile
!我只知道这个名字,目前在那时认为一定要这个名字
然后编辑这个文件的内容
FROM tomcat:7.0.81-jre8 COPY XXX.war /usr/local/tomcat/webapps/
第一句话是告诉Docker要去找哪个镜像,这里是 Tomcat7.0版本带上JRE8
然后拷贝一个WAR文件到 镜像里面的目录 /usr/local/tomcat/webapps/
保存这个文件。
执行
docker build -t 喜欢的名字 .
这样就会从仓库拉回来 一个Tomcat的镜像,并且把本地目录下的WAR文件拷贝到机箱里面的目录,并且命名这个镜像为 喜欢的名字。
!这里利用Tomcat的默认特点,Tomcat启动的时候会自动寻找WebApps下的WAR包,如果有,他会解压并加载
最后加载这个镜像跑起来在镜像的8080,宿主的8888
docker run -it --rm -p 8888:8080 喜欢的名字
这种方式窃以为还能在多个端口同时加载多个相同的镜像,实现容错。前端用代理负载平衡一下即可。
当然程序本省要先照顾到,比如REST API这种就OK
加上利用,保存镜像,恢复镜像的命令,分分钟实现跨宿主部署。
docker save -o demo.tar XXXX docker load --input fedora.tar
忘了一部,首先需要保存现有内容到IMAGE然以后才能SAVE和LOAD
docker commit -p <ContainerID> <ImageName>