DockerFile
What?
DockerFile是用来构建Docke镜像的构建文件,是由一系列命令和参数构成的脚本。
构建三步骤:
- 编写DockerFile源文件
- 使用docker build -f 命令进行构建
- 使用docker run 运行。
DockerFile解析
Dockerfile内容基础知识
- 每条保留字指令都必须为大写字母且后面要跟随至少一个参数
- 指令按照从上到下,顺序执行
- #表示注释
- 每条指令都会创建一个新的镜像层,并对颈项进行提交
Docker执行Dockerfile的大致流程
- docker从基础镜像运行一个容器
- 执行一条指令并对容器作出修改
- 执行类似docker commit的操作 提交一个新的镜像层
- docker再给予刚提交的镜像运行一个新容器
- 执行dockerfile中的下一条指令知道所有指令都执行完成
Dockerfile相当于软件的原材料========>>Dockerfile面向开发
Docker镜像是软件的交付品========>>Docker镜像称为交付标准
Docker 容器则可以认为是软件的运行态========>>Docker容器设计部署与运维。
Dockerfile保留关键字
- FROM:基础镜像,当前亲镜像是基于那个镜像的
- MAINTAINER:镜像维护者的姓名和邮箱地址
- RUN:容器构建时需要运行的命令,
比如想在自己的ubuntu镜像中使用vim,那么在dockerfile中就需要写
RUN apt-get update
RUN apt-get install vim
- EXPOSE:当前容器对外暴露的端口
- WORKDIR:指定在创建容器后,终端默认登录进来的目录,一个落脚点
- ENV:用来在构建镜像过程中设置环境变量
- ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
- COPY:和ADD类似,这个命令不会解压
- VOLUME:制定容器数据卷
- CMD:指定一个容器启动时要运行的命令
Dockerfile中可以有多个CMD命令。但只有随后一个生效。
CMD会被docker run之后的参数替换
- ENTRYPOINT:和CMD类似,这个命令不会覆盖,是追加
- ONBUILD:当构建一个被继承的Dockerfile是运行命令,父镜像在被集成后父镜像的onbuild被触发
Example
Base镜像(scratch)
相当于Java中的Object类。
Docker Hub中99%的镜像都是通过在base镜像中安装和配置需要的软件构建出来的
自定义镜像myubuntu
需求:
1. 可以使用ifconfig
2. 启动后可以直接进入家目录,而不是默认的根目录
编写dockerfile文件:
FROM yao/ubuntu
MAINTAINER yao<jtalentyao@gamil.com>
ENV MYPATH /root
WORKDIR $MYPATH
RUN apt install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "success-----------OK"
CMD /bin/bash
#bash 运行
docker build -f ~/Document/mydocker/Dockerfile2 -t yao/ubuntu:1.1 .
如此,yao/ubuntu可以使用ifconfig命令
docker history imageid 查看镜像历史
ps:本博客是学习视频时所做,目的是作为自己的学习笔记。同时发表出来是希望可以帮到其他人,有大佬发现本博客的错误、不足,还请指正。
End.