Dockerfile
结构
创建一个 Dockerfile
-
创建文件hello,编辑内容
FROM <镜像名称>
指定基础镜像,用于后续的指令构建。MAINTAINER <作者名称>
指定Dockerfile的作者/维护者。
FROM redis MAINTAINER Yang
-
运行 Dockerfile
docker build -t <镜像名称>:<版本>(tag) -f <文件名称> .
.
表示构建上下文路径,构建上下文路径是指 Docker 引擎用于查找构建过程中所需文件和目录的路径。docker build -t redis:latest -f hello .
Dockerfile 文件常用指令
FROM
FROM指令初始化一个新的构建阶段,并为后续指令设置基础镜像。因此,有效的 Dockerfile 必须以 FROM 指令开头。该镜像可以是任何有效的镜像–很容易通过从Public Repositories(镜像仓库) 拉取一个镜像。
FROM类似于Java中extends关键字继承于基础镜像,即FROM之后的内容都依赖于此基础镜像。
格式
格式:
FROM 镜像名称
FROM 镜像名称:<tag>
FROM 镜像名称@<digest>
注:
tag或digest是可选的,如果不使用这两个值时,会使用latest版本的基础镜像
案例
FROM mysql:5.6
FROM java:8
MAINTAINER
MAINTAINER指令用于指定维护者的信息,用于为Dockerfile署名。
格式
MAINTAINER 名字
案例
MAINTAINER ohb
ADD 复制文件
将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget。
格式
ADD src … dest
ADD [“src”,… “dest”] 用于支持包含空格的路径
从src目录复制文件到容器的dest。
案例
ADD target/springboot-dockerfile-1.0-SNAPSHOT.jar /app.jar
将本机target/springboot-dockerfile-1.0-SNAPSHOT.jar文件拷贝到容器内**/app.jar**
ENTRYPOINT 入口点
ENTRYPOINT 允许您配置将作为可执行文件运行的容器。用ENTRYPOINT的exec形式来设置相当稳定的默认命令和参数,然后使用CMD的任何一种形式来设置更可能更改的其他默认值。
注: 一般在制作一些执行就关闭的容器中会使用。
格式
ENTRYPOINT [“executable”, “param1”, “param2”] (可执行文件, 优先)
ENTRYPOINT command param1 param2 (shell内部命令)
ENTRYPOINT与CMD非常类似,不同的是通过docker run执行的命令不会覆盖ENTRYPOINT,而docker run命令中指定的任何参数,都会被当做参数再次传递给ENTRYPOINT。Dockerfile中只允许有一个ENTRYPOINT命令,多指定时会覆盖前面的设置,而只执行最后的ENTRYPOINT指令。
案例
ENTRYPOINT ["java","-jar","/app.jar"]
EXPOSE
指定于暴露的端口。
格式
EXPOSE <port> [<port>…]
案例
EXPOSE 9091
VOLUME 指定挂载点
使用指令使容器中的一个目录具有持久化存储的功能,该目录可被容器本身使用,也可以共享给其它容器。