Dockerfile
镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
常用指令
-
FROM设置基础镜像。Dockerfile是用来定制镜像的,所以一定是以一个镜像为基础,在其上定制。而FROM就是指定基础镜像,因此一个Dockerfile中FROM是必备的指令,并且必须是第一条指令。# 格式 FROM 镜像名称 FROM 镜像名称:<tag> FROM 镜像名称@<digest> # tag或digest是可选的,如果不设置,默认使用latest版本的基础镜像 -
MAINTAINER指定维护者信息。指定维护者的信息,用于为Dockerfile署名。
# 格式 MAINTAINER 名字 -
ADD复制文件将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget。
# 格式 将本机target/1.0-SNAPSHOT.jar文件拷贝到容器/app.jar内 ADD target/1.0-SNAPSHOT.jar /app.jar -
ENTRYPOINT入口点ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数。注:一般在制作一些执行就关闭的容器中会使用。# 格式 ENTRYPOINT [“executable”, “param1”, “param2”] (可执行文件, 优先) ENTRYPOINT command param1 param2 (shell内部命令) # 示例 ENTRYPOINT ["java","-jar","/app.jar"] -
EXPOSE声明暴露的端口EXPOSE指令是声明容器运行时提供服务的端口,这只是一个声明,在容器运行时并不会因为这个声明应用就会开启这个端口的服务。在Dockerfile中写入这样的声明有两个好处,一个是帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射;另一个用处则是在运行时使用随机端口映射时,也就是docker run -P时,会自动随机映射EXPOSE的端口。# 格式 EXPOSE <port1> [<port2>...]
扩展:
- 更多指令请参考菜鸟教程
- 通过Dockerfile创建镜像命令
docker build -t 镜像名称:版本(tag) -f 文件名称 .
使用 IDEA 连接 Docker
在 Java 开发中,通常使用 IDEA 作为集成开发环境,所以为了方便进行开发和调试工作,接下来了解一下如何通过 IDEA 来管理和操作 Docker 容器。
为了使 IDEA 能够连接到服务器中的 Docker,我们首先需要在 Linux 系统中进行 Docker 远程访问配置。
Linux 中 Docker 远程访问配置
-
修改 docker.service 配置
# /lib/systemd/system/docker.service 在第 13 行后面加上下面的内容 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
vim中使用
:set number显示行号 -
重启 Docker
配置修改后需重启 Docker 使配置生效。
systemctl daemon-reload systemctl restart docker.service -
防火墙开放 2375 端口
# 开放端口 firewall-cmd --add-port=2375/tcp --permanent # 重新加载 firewall-cmd --reload # 查看开放端口列表 firewall-cmd --list-ports -
查看 2375 端口是否处于监听状态
netstat -nplt|grep 2375成功如图所示:

-
测试服务是否启动
curl http://linux的ip地址:2375/info输出一大段内容即表示成功启动,如图所示:

服务启动成功后,我们就可以在 IDEA 中配置 Docker 连接了。
IDEA 中 Docker 连接配置
-
在 IDEA 中安装 Docker 插件(新版本已默认安装),然后打开 Setting->Docker 添加一个 Docker配置,如下图:

-
选择 TCP socket,按照下图配置,提示
Connection succeddful即代表连接成功。
现在我们已经可以通过 IDEA 连接 Docker 了。

接下来我们了解一下如何在 IDEA 中将 SpringBoot 项目通过 Dockerfile 文件部署到 Docker 中。
SpringBoot 整合 Dockerfile
-
使用 Maven 将 SpringBoot 项目打包


-
在项目中创建 Dockerfile 文件,如下:
注意:Dockerfile 文件名必须是
DockerfileFROM anapsix/alpine-java MAINTAINER xxx EXPOSE 9090 ADD ./book-bk/target/book-bk-1.0-SNAPSHOT.jar /book.jar ENTRYPOINT ["java","-jar"] CMD ["/book.jar"] -
编辑运行配置

如上图,点击 Dockerfile 文件左上角的箭头,选择
Edit 'Dockerfile'...


最后再配置一下镜像名称和容器名称,如下图:

Bind ports 相当于命令 docker run -p 0.0.0.0:8080:8080
-
验证
配置完成后,点击Run,然后我们在 Linux 上通过docker ps查看运行状态,如下图:

运行正常后,就可以在浏览器上访问了。


感谢大家读到这里,后续还会有其他相关文章,欢迎继续阅读。

本文介绍了Dockerfile的基本概念和常用指令,如FROM指定基础镜像、MAINTAINER维护者信息、ADD添加文件、ENTRYPOINT和EXPOSE等。同时指导如何在IDEA中配置并使用Dockerfile部署SpringBoot项目。
2万+

被折叠的 条评论
为什么被折叠?



