之前在学校帮老师做了一个小的web项目,做完之后拿去学校的服务器上配置。安装jdk,安装tomcat,安装数据库…安装了一堆东西,到最后反而因为和自己电脑中版本的问题不一致,导致出现了一些小问题,最后还在服务器上调试了很久才终于运行了起来,想想这个过程也是蛋疼。。。有没有什么办法能直接将我个人电脑的这些东西打包过去,不经历繁琐的配置,快速地运行起来呢。
直到最近由于技术的拓展,接触到了docker,原来早就有这么一套东西了,毕竟程序员都是懒的,早就有大佬对着这开发出了东西。
笔者技术水平不高,还是一名学生。个人感觉docker有点像git也有点像虚拟机,之前有稍微接触到git,而docker也有仓库这个概念,类比过去感觉确实是有点意思。对于镜像我个人感觉就是一堆打包好的软件,一堆有层次的软件集合,比如一个web项目,最底层就是jdk,上面是tomcat,再上面就是web项目。容器应该就是运行项目的载体,类似于虚拟机。
仓库
docker也有一个远程仓库,它提供了一堆的软件集,有jdk,tomcat,等等。通过这些软件,我们可以搭建项目的运行环境。个人也可以将自己制作的镜像上传到仓库中。
镜像
jdk+tomcat+项目+…这些东西组合起来就是镜像
容器
从远程库拉取镜像,运行镜像肯定需要载体,不然运行环境哪里来?docker这时候就提供类似于容器的作用。
端口映射
我们的项目是运行在docker中的,那别人如何来访问呢,docker类似于虚拟机,docker提供了虚拟机和主机之间端口映射的命令,可以将主机端口的访问映射到docker端口上。这样外部通过访问服务器主机的端口,进而访问docker里的应用程序。
常用的docker命令
网易的镜像中心:https://c.163.com/hub#/m/library/
docker images //查看当前docker本地仓库有哪些镜像
docker pull hub.c.163.com/library/nginx:latest //从镜像中心查找需要拉取的镜像
docker run -d -p 8080:80 <image name> //将主机的8080映射docker的80端口,后台运行程序
docker ps //查看当前启动的镜像
docker stop <image id>
docker restart <image id>
docker exec -it f4 bash //进入容器内部,可以看到文件目录,日志等等
通过Dockerfile构建镜像
以前面的小web项目为例,要构建一个镜像,需要tomcat镜像,拉取tomcat镜像(内部有jdk)
$ vi Dockerfile
from hub.c.163.com/library/tomcat //我们项目要依赖的运行环境
COPY xxx.war /usr/local/tomcat/webapps //将我们的项目复制到tomcat的webapps下
$ docker build -t xxx:latest . //构建镜像 -t 给镜像取名 .表示Dockerfile的存放位置
这样镜像就构建好了