dockerfile
概念 装的是构建镜像的命令
镜像概念 镜像与jar包区别
- 镜像包含运行所需的所有环境和条件,不依赖于宿主环境;jar包依赖
- 镜像属于静态文件,jar包是可执行文件
- 镜像依赖docker引擎加载运行,例如可以在windows上用docker desktop来运行镜像(跨平台性)
dockerfile中的基本指令
- from 指定基础镜像
- run 【构建过程中】执行命令行,写法有2种:1、后面接shell命令;2、接执行文件和参数,如
RUN ["./test.php", "dev", "offline"] - copy 复制:写法
copy sources destination复制到新的一层。- 其中sources处于上下文路径,可以是多个,也可以用通配符(符合GO语法)匹配多个;destination 可以是容器的绝对路径,也可以是相对路径(基于工作目录workdir)。
- 另外,目标路径的文件夹无需提前创建,不存在时会自动创建。被复制的文件的元数据也会被保留,如权限、修改时间等。
- 可以使用
cory --chown=<user>:<group> xxx来改变复制后的用户和组。 - 如果source是文件夹,则会复制该文件夹下的所有文件,不是复制整个文件夹。
- add 更高级的复制命令,相比于
add,主要特点是还会自带解压功能(当源文件为压缩tar格式,且格式为gzip,bzip2,xz)。因此,COPY是更为准确的复制场景,如果是需要解压,才推荐使用ADD - env 容器内环境变量
- cmd 容器【创建时】执行的默认命令,可以被覆盖
- entrypoint 容器【创建时】执行的主要命令,不可被覆盖
- label 元数据,键值对形式
- expose 监听的端口
- volume 声明卷
- workdir 后续指令的工作目录
- user 后续指令的用户上下文
- arg 传递给构建器的变量
特殊符号:\, &&, ;
\为换行符,作为一个命令拆为多行写的每行末尾的换行符,提高可读性。并且这种写法不会使得因为多行run的写法,而生成多层镜像&&命令a && 命令b表示命令a执行成功,才会执行命令b;命令a ; 命令b命令b的执行不会受到命令a的结果影响 举例写法
|
|
构建镜像指令:docker build,用于从dockerfile中构建镜像。
常用命令:
docker build -t myimage:latest .
使用当前目录下的dockerfile进行构建,-t指定要构建的镜像的名词和标签
docker build -f dockerfilepath -t myimage:latest
-f 指定dockerfile路径