DockerFile
这是个人笔记,观看他人教学视频整合的,视频底部有链接,侵删。
DockerFile是用来构建Docker镜像的构建文件,本质就是命令脚本。
编写一个Hello Word级别的DockerFile:
dockerfile01:
#这里表明以centos镜像为基础
FROM centos
#创建数据卷挂载,挂载的多个文件(这里是匿名挂载)
VOLUME ["volume01","volume02"]
#打印结果,成功反馈
CMD echo “-----end-----”
CMD /bin/bash
每行命令相当于镜像的一层
构建Docker镜像命令:
docker build -f dockerfile01 -t hello_centos:1.1 .
dockerfile01就是上面编写的脚本,hello_centos是生成的镜像名称。
如果DockerFile的名称叫Dockerfile,那么就不用-f指定文件,Docker会自动扫描到这个文件。
这里数据卷是匿名挂载的,可以用inspect来查看数据卷的路径映射。
注意最后的一个点不能少.
DockerFile指令
FROM #基础镜像,以某个镜像为基础
MAINTAINER #镜像的作者,邮箱等等
RUN #镜像构建时运行的命令
ADD #步骤,如果要搭建一个tomcat容器,那么add里面要加tomcat压缩包
WORKDIR #镜像工作目录(进入时的当前目录)
VOLUME #挂载目录
EXPOSE #暴露端口配置
CMD #指定容器启动时运行的命令,(替换命令)
ENTRYPOINT #类似于CDM,但是CDM只会生效最后一个,这个不会。(追加命令)
ONBUILD #当构建一个呗继承的DockerFile,这时会运行ONBUILD指令
COPY #类似于ADD
ENV #构建时配置环境变量
实践
绝大部分的基础Docker都是从scratch开始的。即:
FROM scratch
创建自己的centos
官方的centos没有clear,vim,ipconfig等命令。现在我们打算增加一些功能,形成一个新的镜像。
添加vim命令和ipconfig
DockerFile:
FROM centos
MAINTAINER tutulei<xxxxxxxxxxxx@qq.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
我也不懂为什么要三个CMD,CMD不是会覆盖之前的命令吗???
创建一个Tomcat镜像
需要准备tomcat压缩包和jdk压缩包
其他命令
docker history 镜像ID
列出镜像构建过程。
docker tag 镜像ID 镜像名称:<TAG>
修改镜像名称和版本号,修改成功后,本地会生成这个镜像。
docker整体逻辑图
笔记来源
该笔记是观看b站up主狂神的视频所记录的。
感谢狂神大佬的分享!
视频链接:https://www.bilibili.com/video/BV1og4y1q7M4