1、Dockerfile
1.1 Dockerfile是什么?
官网中是这么说的:“Docker can build images automatically by reading the instructions from a Dockerfile. A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image。”
简而言之,Dockerfile 是一个包含创建生成新镜像时用到的各种指令的文本文件。使用Dockerfile 文件来定义镜像,然后运行镜像,启动容器。
1.2 Dockerfile文件的基本结构
一个dockerfile文件包含以下部分:
·基础镜像,使用FROM关键字指定基础镜像信息,FROM是dockerfile文件的第一条指令。
·维护者信息,使用MAINTAINER关键字指定,通常可以使用dockerfile文件创建者的名字或者邮件作为维护者的信息。
·镜像操作指令,每执行一条镜像操作指令,都会在镜像中添加新的一层。
·容器启动指令,用户使用CMD ENTRYPOINT命令指定
1.3 创建第一个Dockerfile
连接虚拟机,进入var文件夹,mkdir df,进入df文件夹,创建文件touch hello。
编辑hello文件vim hello,进入配置:
FROM redis
MAINTAINER lll
docker build -t 镜像名称:版本(tag) -f 文件名称 .
1.4 Dockerfile文件常用指令
FROM 指定基础镜像
用于创建一个新的镜像,有效的 Dockerfile 必须以 FROM 指令开头,后+有效的镜像名称
格式:
FROM 镜像名称
FROM 镜像名称:<tag>
FROM 镜像名称@<digest>
注:
tag或digest是可选的,如果不使用这两个值时,会使用latest版本的基础镜像
MAINTAINER指定维护者信息
用于指定维护者的信息。
格式:
MAINTAINER 名字
ADD 复制文件
将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget。
从src目录复制文件到容器的dest。
格式:
ADD src … dest
ADD [“src”,… “dest”] 用于支持包含空格的路径
示例:
ADD target/springboot-dockerfile-1.0-SNAPSHOT.jar /app.jar
ENTRYPOINT 进入点
ENTRYPOINT 允许您配置将作为可执行文件运行的容器。用ENTRYPOINT的exec形式来设置相当稳定的默认命令和参数,然后使用CMD的任何一种形式来设置更可能更改的其他默认值。
格式:
ENTRYPOINT [“executable”, “param1”, “param2”] (可执行文件, 优先)
ENTRYPOINT command param1 param2 (shell内部命令)
示例:
ENTRYPOINT ["java","-jar","/app.jar"]
注意:ENTRYPOINT与CMD非常类似,不同的是通过docker run执行的命令不会覆盖ENTRYPOINT,而docker run命令中指定的任何参数,都会被当做参数再次传递给ENTRYPOINT。Dockerfile中只允许有一个ENTRYPOINT命令,多指定时会覆盖前面的设置,而只执行最后的ENTRYPOINT指令。
EXPOSE 端口暴露
格式:
EXPOSE <port> [<port>…]
VOLUME 指定挂载点
使用指令使容器中的一个目录具有持久化存储的功能,该目录可被容器本身使用,也可以共享给其它容器。
格式
VOLUME 文件路径
CMD
指定这个容器启动的时候要运行的命令,只有最后一个会生效,可以被代替。
2、Linux服务器配置远程访问docker
2.1 打开文件,vim /lib/systemd/system/docker.service
2.2 修改端口,后面加上 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
2.3 重启docker
2.4 测试配置端口2375是否有效
查询端口状态:
curl测试服务器是否启动
2.5 开放防火墙2375端口
3、idea配置docker连接
检查docker插件,+TCP socket
查看service中docker状态
4、SpringBoot整合Dockerfile
4.1 新建maven项目,配置pom.xml
创建目录,App.java
添加示例代码+@注解,启动程序
使用lifecycle打包项目成jar包,注意jdk版本问题,打包完成进行测试(cmd指令打开项目,打开网页测试)。
4.2 Linux安装jdk
在路径/usr/local/software/jdk 下上传jdk压缩包
解压:
tar -zxvf jdk-8u341-linux-x64.tar.gz
配置环境:
编辑/etc/profile文件
vim /etc/profile
退出编辑保存,:wq
source /etc/profile 记得最后这句命令
查看jdk版本
上传jar包,开放端口9090
运行jar包
java -jar hello-docker-1.0-SNAPSHOT.jar
补充知识点:
4.3 合并整合Dockerfile
在项目下右键新建文件File➡命名Dockerfile
输入Dockerfile相关命令:
FROM anapsix/alpine-java
MAINTAINER ohb
EXPOSE 9090
ADD target/hello-docker-1.0-SNAPSHOT.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
点击左上角绿色双小箭头,New Run Configuration
配置完成,Run运行。
查看运行状态:
Dockerfile与docker关系图:
————————————————————————————————————
感谢阅读,码字不易,多谢点赞!如有不当之处,欢迎反馈指出,感谢!