DockerFile
Dockerfile
Dockerfile介绍
dockerfile是用来构建docker镜像的文件!命令参数脚步!
构建步骤
1、编写一个dockerfile文件
2、docker build 构建成为一个镜像
3、docker run 镜像id 运行镜像
4、docker push 发布镜像(DockerHub、阿里云镜像仓库)
Dockerfile构建过程
基础知识:
1、每个保留关键字(指令)都必须是大写字母
2、执行从上到下顺序执行
3、# 表示注释
4、每一个指令都会创建提交一个新的镜像层,并提交
dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单!
Docker镜像逐渐成为企业交付的标准,必须掌握!
开发、部署、运维 缺一不可
Dockerfile:构建文件,定义了一切的步骤, 源代码
DockerImages:通过Dockerfile构建生成的镜像, 最终发布和运行的产品,最终发布和运行的产品
Docker容器: 容器就是镜像运行起来提供服务器
Dockerfile指令
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指定了!