
dockerfile
构建三步骤
- 编写dockerfile
- docker build
- docker run
基础知识
- 每条保留字指令都必须为大写字母且后面要跟随至少一个参数
- 指令按照从上到下,顺序执行
- 字符#表示注释
- 每条指令都会创建一个新的镜像层,并对镜像进行提交
执行流程
- 从基础镜像运行一个容器
- 执行一条指令并对容器作出修改
- 执行类似commit的操作提交一个新的镜像层
- 基于刚提交的镜像运行一个新容器
体系结构
-
FROM
- 基础镜像
-
MAINTAINER
- 维护者姓名和邮箱
-
RUN
- 构建时需要的命令
- 并创建新的镜像层,通常用于安装软件包
- 构建时需要的命令
-
EXPOSE
- 当前容器对外暴露的端口
-
WORKDIR
- 创建容器后,默认的工作目录
-
ENV
- 环境变量
- 可以给后续任何run指令使用
- 如WORKDIR $dir
-
ADD
- 将宿主机目录下的文件拷贝进镜像
- 且ADD命令会自动处理URL和解压tar压缩包
-
COPY
- 单纯拷贝
-
VOLUME
-
CMD
-
指定运行时运行命令
-
shell格式
- CMD <commad>
-
exac 格式
- CMD ["exe","parameter","parameter"]
-
参数列表格式
- 指定ENTRYPOINT指令之后,用CMD指定具体的参数
-
注意点⚠️
- 可以有多个CMD,但只有最后一个生效CMD会被docker run之后的参数替换
-
-
ENTRYPOINT
- 指定容器中启动运行的命令
- 多个命令不会被覆盖而是变为追加
-
ONBUILD
- 当构建一个被继承的Dockerfile时运行命令
- 父镜像在被子镜像继承后父镜像的onbuild被触发
网友评论