dockerfile是用来构建docker镜像的文件!命令参数脚本!
DockerFile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,
DockerFile: 构建文件,定义了一切得步骤,源代码
DockerImages: 通过dockerfile构建生成的镜像。最终发布和运行的产品。
Docker容器:容器使得镜像运行起来,提供服务器
构建步骤:
1、 编写一个dockerfile文件
2、 docker build 构建称为一个镜像
3、 docker run运行镜像
4、 docker push发布镜像(DockerHub 、阿里云仓库)
FROM # from:基础镜像,一切从这里开始构建
MAINTAINER # maintainer:镜像是谁写的, 姓名+邮箱
RUN # run:镜像构建的时候需要运行的命令
ADD # add:步骤,tomcat镜像,这个tomcat压缩包!添加内容 添加同目录
WORKDIR # workdir:镜像的工作目录
VOLUME # volume:挂载的目录
EXPOSE # expose:保留端口配置
CMD # cmd:指定这个容器启动的时候要运行的命令,只有最后一个命令会生效,可被替代
ENTRYPOINT # entrypoint:指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD # onbuild:当构建一个被继承DockerFile这个时候就会运行onbuild的指令,触发指令
COPY # copy:类似ADD,将我们文件拷贝到镜像中
ENV # env:构建的时候设置环境变量!
样例:
# 编写dockerFile
vim mydockerfile-centos
FROM centos
MAINTAINER lizehan<[email protected]>
ENV MYPATH /usr/local
WORKDIR $MYPATH
#构建镜像运行的命令, 相当于在镜像里面下载了vim
RUN yum -y install vim
EXPOSE 80
CMD echo "------end --------"
追随build的过程
docker history {dockerID} 可以看他的dockerFile怎么一步一步来的
CMD和ENTRYPOINT的区别
CMD会被替换但是ENTRYPOINT是追加
例如当我们使用CMD [ls]的时候,运行docker会执行这个命令。但是如果我们运行这个docker的时候加入参数
docker run {镜像文件} -l
就会找不到-l这个命令,但是如果使用ENTRYPOINT的话就是会运行[ls -l]这个方法