dockerfile是用来构建docker镜像的文件!命令参数脚步!
1、编写一个dockerfile文件
2、docker build 构建成为一个镜像
3、docker run 镜像id 运行镜像
4、docker push 发布镜像(DockerHub、阿里云镜像仓库)
1、每个保留关键字(指令)都必须是大写字母
2、执行从上到下顺序执行
3、# 表示注释
4、每一个指令都会创建提交一个新的镜像层,并提交
dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单!
Docker镜像逐渐成为企业交付的标准,必须掌握!
开发、部署、运维 缺一不可
Dockerfile:构建文件,定义了一切的步骤, 源代码
DockerImages:通过Dockerfile构建生成的镜像, 最终发布和运行的产品,最终发布和运行的产品
Docker容器: 容器就是镜像运行起来提供服务器
FROM # 基础镜像,一切从这里开始构建 MAINTAINER # 镜像是谁写的,姓名+邮箱 RUN # 镜像构建的时候需要运行的命令 ADD # 步骤:tomcat镜像, 这个tomcat压缩包! 添加内容 WORKDIR # 镜像的工作目录 VOLUME # 挂载的目录 EXPOST # 暴露的端口配置 CMD # 指定这个容器启动时候要运行的命令, 只有最后一个会生效, 可被替代 ENTRYPOINT # 制定这个容器启动时候要运行的命令, 可以追加命令 ONBUILD # 当构建一个被继承DockerFile这个时候就会运行ONBUILD的命令。触发指令。 COPY # 类似ADD,将我们文件拷贝到镜像中 ENV # 构建的时候设置环境变量!
Docker Hub中99%的镜像都是从这个基础镜像过来的 FROM scratch
, 然后配置需要的软件和配置来进行构建
创建一个自己的centos
# 1、编写dockerfile文件 FROM centos MAINTAINER xxxx<xxxx@email.com> ENV MYPATH /usr/local WORKDIR $MYPATH RUN yum -y install vim RUN yum -y install net-tools EXPOSE 80 CMD echo $MYPATH CMD echo "----end----" CMD ["/bin/bash"] # 2、通过这个文件构建镜像 docker build -f dockerfile文件路径 -t 镜像名:[tag] [+] Building 0.1s (8/8) FINISHED => [internal] load build definition from mydockerfile-centos 0.0s => => transferring dockerfile: 46B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/centos:latest 0.0s => [1/4] FROM docker.io/library/centos 0.0s => CACHED [2/4] WORKDIR /usr/local 0.0s => CACHED [3/4] RUN yum -y install vim 0.0s => CACHED [4/4] RUN yum -y install net-tools 0.0s => exporting to image 0.0s => => exporting layers 0.0s => => writing image sha256:a6303a994e32278394b7d9c560eac5a03da22afbc8f0d548a0868ad8b27d88e4 0.0s => => naming to docker.io/library/mycentos:0.1 # 3、测试运行 docker images #查看构建的镜像是否存在 REPOSITORY TAG IMAGE ID CREATED SIZE mycentos 0.1 a6303a994e32 4 minutes ago 287MB docker run -it mycentos:0.1 [root@e0949c873196 local]# ls bin etc games include lib lib64 libexec sbin share src [root@e0949c873196 local]# pwd
可以列出本地进行的变更历史
docker history a6303a994e32 IMAGE CREATED CREATED BY SIZE COMMENT a6303a994e32 9 minutes ago CMD ["/bin/bash"] 0B buildkit.dockerfile.v0 <missing> 9 minutes ago CMD ["/bin/sh" "-c" "echo \"----end----\""] 0B buildkit.dockerfile.v0 <missing> 9 minutes ago CMD ["/bin/sh" "-c" "echo $MYPATH"] 0B buildkit.dockerfile.v0 <missing> 9 minutes ago EXPOSE map[80/tcp:{}] 0B buildkit.dockerfile.v0 <missing> 9 minutes ago RUN /bin/sh -c yum -y install net-tools # bu… 14.4MB buildkit.dockerfile.v0 <missing> 9 minutes ago RUN /bin/sh -c yum -y install vim # buildkit 63.4MB buildkit.dockerfile.v0 <missing> 10 minutes ago WORKDIR /usr/local 0B buildkit.dockerfile.v0 <missing> 10 minutes ago ENV MYPATH=/usr/local 0B buildkit.dockerfile.v0 <missing> 10 minutes ago MAINTAINER qingyueyiyun<qingyueyiyun@163.com> 0B buildkit.dockerfile.v0 <missing> 7 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B <missing> 7 months ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B <missing> 7 months ago /bin/sh -c #(nop) ADD file:bd7a2aed6ede423b7… 209MB
实战:tomcat镜像
1、准备镜像文件tomcat压缩包,jdk压缩包
2、编写dockerfile文件,官方命名Dockerfile,build会自动寻找这个文件,不需要-f指定了!