1 Dockerfile是什么
Dockerfile是一个制作镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
可以理解为Dockerfile就是构建镜像的一张工程图,里面定义了这个镜像需要几块砖,几片瓦,砖放哪里,瓦放哪里。
2 Dockerfile的基础结构
#开头的表示注释行,说明dockerfile中的指令
基础镜像信息
维护者的信息
镜像操作指令
容器操作指令
3 Dockerfile中常见的操作指令和作用
FROM:指定创建镜像的基础镜像
MAINTAINER:Dockerfile作者信息,一般写的是联系方式
RUN:运行Linux系统的命令使用
CMD:指定容器启动执行的命令;启动容器中的服务
LABEL:指定生成镜像的源数据标签
EXPOSE:指定镜像容器监听端口号;发布服务使用
ENV:使用环境变量
ADD:对压缩文件进行解压缩;将数据移动到指定的目录
COPY:复制宿主机数据到镜像内部使用
WORKDIR:切换到镜像容器中的指定目录中
VOLUME:挂载数据卷到镜像容器中
USER:指定运行容器的用户
ARG:指定镜像的版本号信息
ONBUILD:创建镜像,作为其他镜像的基础镜像运行操作指令
ENTRYPOINT:指定运行容器启动过程执行命令,覆盖CMD参数
4 Dockerfile举个栗子
代码语言:javascript复制FROM base-images:v1.0.0 #指定基础镜像:base-images, 版本:v1.0.0
MAINTAINER <wmh> #维护者信息<wmh>
ARG VERSION=dev #定义变量
COPY ./tmp/demo-core.tar.gz /app/core #COPY文件
WORKDIR /app/core #WORKDIR等于cd
RUN bash -c 'tar -xzvf demo-core.tar.gz' #RUN执行shell命令
ENV VERSION=${VERSION} #设置环境变量
EXPOSE 2222 #对外暴露端口2222
CMD ["/tmp/run-java.sh"] #运行启动脚本
注:CMD不同于RUN,CMD用于指定在容器启动时所要执行的命令,而RUN用于指定镜像构建时所要执行的命令。
5 Dockerfile构建镜像
通过docker build从Dockerfile构建镜像。可以理解为我们已经画好工程图,开始施工啦,构建完之后就可以放到500坪的大平层啦。
代码语言:javascript复制#使用当前目录的 Dockerfile 创建镜像,标签为 NewImages:v1.0.0
docker build -t NewImages:v1.0.0 . # . 指当前路径下的Dockerfile
使用docker images查看刚构建的镜像
5 总结
以上就是Dockerfile的基本介绍了,感兴趣的小伙伴可以去实践一下。
顺便提下,在执行Run bash copy命令是注意文件的相对路径,我之前就在这里搞错了路径,折腾了很久......
最后找到原因的我眼泪留下来......