应用的容器化
Docker的核心思想就是如何将应用整合到容器中,并且能在容器中实际运行。
将应用整合到容器中并且运行起来的这个过程,称为“容器化”
完整的应用容器化过程主要分为以下几个步骤。
(1)编写应用代码。
(2)创建一个Dockerfile,其中包括当前应用的描述、依赖以及该如何运行这个应用。
(3)对该Dockerfile执行docker image build命令。
(4)等待Docker将应用程序构建到Docker镜像中。
一旦应用容器化完成(即应用被打包为一个Docker镜像),就能以镜像的形式交付并以容器的方式运行了。
Demo
新建一个Springboot的demo项目,使用了SpringMVC,新建了一个controller接口,如下:
@RestController
public class Hello {
@GetMapping("")
public String hello() {
return "Hello Docker";
}
}
从浏览器访问端口,可以获取到一下结果:
具体操作如下:
1. 打包
把项目打成jar包,在项目目录下,使用命令:
mvn package
jar包会在 target包下。
2. 编写Dockerfile
新建Dockerfile,跟pom文件同级
Dockerfile内容如下:
# 基于alpine环境搭建镜像
FROM alpine
# 下载jdk8环境
RUN apk add --update openjdk8
# 把打好的jar包,copy到镜像的指定位置
COPY target/demo-0.0.1-SNAPSHOT.jar /home/work/be/demo/demo-0.0.1-SNAPSHOT.jar
# 指定工作环境目录
WORKDIR /home/work/be/demo
# 暴露8080端口
EXPOSE 8080
# 运行后执行该命令 java -jar demo-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java", "-jar", "demo-0.0.1-SNAPSHOT.jar"]
3. 根据Dockerfile构建镜像
在Dockerfile所在的文件夹打开cmd窗口,然后执行构建命令:
docker image build -t java-demo:latest .
命令执行完成后,查看镜像列表:
docker image ls
测试,新构建出来的镜像应该是存在的。
4. 运行镜像
这个运行的时候,不需要连接到内部的命令行了,直接让它运行web程序就可以了。命令如下:
docker run -d --name cl -p 80:8080 java-demo
运行成功之后会返回给你一串字符
此时应该就可以在浏览器中访问到这个页面了,在地址栏中输入:
localhost
然后回车,应该就会出现Hello Docker
字样
命令回顾:
使用Dockerfile构建镜像:
docker image build
-t 为镜像打标签
-f 指定Dockerfile的文件路径和名称
Dockerfile中的命令:
FROM 指定要构建的镜像使用的基础镜像,通常是Dockerfile的第一条指令
RUN 在镜像中执行命令,会新建新的镜像层
COPY 将文件作为一个新的层添加到镜像中,通常用于将应用代码复制到镜像中
EXPOSE 记录所使用的网络端口,对外暴露这个端口
ENTRYPOINT 入口点,指定镜像一容器的方式启动后默认运行的程序