docker是个什么玩意?别和我扯什么容器、镜像、仓库,它就是一个软件,和安装mysql,nginx没什么区别,通常在linux上安装这些东西大家都喜欢用yum install,本文以centos7为例,使用docker发布一个应用程序。
安装步骤在官网已经说的很清楚了,就是一顿yum,然后启动docker,下面简单copy总结下,如果不生效,那肯定是本文写错了,请继续前往官网查明真相。
$ sudo yum install -y yum-utils----
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
$yum install -y docker-ce
$systemctl start docker-ce
好了,以上就安装好docker了。那docker可以干什么呢,大家都用过虚拟机,docker就是一个类似虚拟机的容器,在虚拟机里安装的东西都可以在docker容器里安装,但是docker相比于虚拟机更更轻便,看图便知。
显然docker容器对比虚拟机少了操作系统,虚拟机有自己的操作系统,应用软件是安装在操作系统之上的。而基于docker,应用软件可以安装在docker创建的容器中。宏观看来,docker容器可以看作一个虚拟机,就这样。
docker使用上有点类似maven,docker有自己的中央仓库docker hub,仓库里是已发布的应用程序安装包,想要获取某个应用安装包,需要先将安装包拉取到本地,视为本地image镜像,有了image就可以通过image创建应用程序了。这里的image是很强大的,它本身屏蔽了许多安装的细节。
----
下面以docker安装nginx为例,看下在docker中启动一个nginx是多么的简单,读者可以自行思考在虚拟机安装nginx需要的步骤。
docker run -p 80:80 nginx
这里直接使用docker启动nginx,倘若没有镜像文件,docker会自行去远程仓库拉取,执行效果如下:
nginx已经启动,可以在浏览器80端口正常访问。同理可以拉取java:8,只需pull一下:docker pull java:8
。----
下面以springboot2项目jar包为例,通过docker启动自定义应用,操作步骤类似maven编写pom文件并打包,这里需要编写Dockerfile文件。
FROM java:8
ADD demo.jar /demo.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/demo.jar"]
写好了Dockerfile使用docker build一下即可发布镜像,有了镜像就可以在docker容器中启动应用程序,最后使用curl简单测试一下。
docker build -t demo .springboot项目运行正常,是不是so easy。
docker run -p 9000:8080 demo
curl http://localhost:9000/demo