什么是Dockerfile
Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。
Dockerfile结构大概分为四个部分
- 基础镜像信息
- 维护者纳西
- 镜像操作指令
- 容器启动时执行指令
扩展:
1,实现多条命令可以使用:封号“;”(封号不管前一条命令是否运行成功)或者使用&&(&&会在前一条命令运行成功之后才运行下一条命令)
2,容器删除重启之后,里面的数据也会消失;可以使用容器持久化,做数据卷,将容器挂载到宿主机上。
3,数据库一般单独运行,并不会放在容器中。
4,容器数据分层中,只要有一层镜像变了,上面的其他镜像都会改变。
5,镜像层是不可变的。
复制代码
Dockerfile常用指令
FROM + 镜像
指定新镜像所基于的基础镜像,第一条指令必须为from指令,没创建一个镜像就需要一条from指令
复制代码
MAINTAINER + 名字
说明新建镜像的维护人信息
复制代码
RUN + 命令
镜像构建的时候被需要运行的命令
复制代码
ENPRYPOINT ["运行的程序","参数1","参数2"]
设定容器启动时第一个运行的命令及其参数。
可以通过使用命令docker run --entrypoint 来覆盖镜像中的ENTRYPOINT指令的内容。
复制代码
CMD ["要运行的程序", "参数1", "参数2"]
用于指定默认的容器主进程的启动命令的(就是开启容器时候,就运行指定的命令)
exec形式:
CMD ["要运行的程序", "参数1", "参数2"]
shell形式:
CMD 命令 参数1 参数2
启动容器时默认执行的命令或者脚本,Dockerfile只能有一条CMD命令。如果指定多条命令,只执行最后一条命令。
复制代码
EXPOSE + 端口号
指定新镜像加载到 Docker 时要开启的端口
复制代码
AGE
EVN + 环境变量 + 变量值