本文涉及到的项目:java
cloud-simple-docker:一个简单的spring boot应用linux
Docker是一种虚拟机技术,准确的说是在linux虚拟机技术LXC基础上又封装了一层,能够当作是基于LXC的容器技术。能够把容器看作是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。容器是用来装东西的,Docker能够装载应用自己及其运行环境进容器,这是一个很小的文件,而后把这个文件扔到任何兼容的服务器上就能够运行,也是基于这一点,Docker能够同时让应用的部署、测试和分发都变得史无前例的高效和轻松!git
下面例子参考“Spring Boot with Docker”官方例子。web
1)创建一个简单的应用,只有一个类,包含main方法,代码以下:spring
@SpringBootApplicationdocker
@RestControllercentos
public class Application {浏览器
@RequestMapping("/")tomcat
public String home() {服务器
return "Hello Docker World";
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
2)创建Dockerfile
# 基于那个镜像
FROM daocloud.io/java:8
# 将本地文件夹挂载到当前容器(tomcat使用)
VOLUME /tmp
# 拷贝文件到容器
ADD cloud-simple-docker-1.0.0.jar /app.jar
# 打开服务端口
EXPOSE 8080
# 配置容器启动后执行的命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
这里特别要注意,这里的FROM采用国内的docker镜像,若是连国外的docker镜像下载,基本是不太可能下载下来的,缘由你们都知道。
有了Dockerfile,就能够部署docker了。
3)部署docker示例
部署分为2步,分别是建立镜像、运行。
将编译后的jar文件考到服务器某个目录,这里是tmp目录。而后将Dockerfile也考到该目录,最后进入到该目录下运行命令:
docker build -t local/cloud-docker-hello .
别掉了后面的“.”符号,这个符号表示目录,这个命令执行成功,你会看到如下界面:
运行成功后,就建立了一个镜像,可使用docker images来查看该镜像。
有了镜像就能够运行了,使用下面命令运行:
docker run -p 8080:8080 –t local/cloud-simple-docker
其中8080:8080表示本机端口映射到Docker实例端口。若是本机端口没有打开,还须要打开该端口,打开端口在centos 7中使用firewall-cmd命令:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd –reload
成功后可使用docker ps –a查看镜像运行状况:
local/cloud-docker-hello | latest | 3ef51d55eb27 | 22 minutes ago | 667.2 MB
能够看到这个包括了java运行环境的web应用镜像是667MB。
该步骤运行结果以下:
最后使用curl命令或者直接在浏览器打开,能够直接测试该应用。使用curl命令以下:
返回:Hello Docker World
docker应用,水比较深,这里只是举一个hello world级别的例子。Spring Boot with Docker例子还提供了一个maven插件docker-maven-plugin,这个插件能够直接将项目编译为docker镜像。另外这个插件还可让你结合jenkins完成项目的持续集成和自动部署。具体来讲就是jenkins自动经过git或svn拉到工程代码,而后使用maven进行编译,再调用项目中的Dockerfile生成镜像。如此以来无论是什么应用,只须要部署docker就能够了,那些配置,那些乱七八糟的环境搭建都不须要了。