概述
DockerFile 可以编译成为一个 镜像. 是一个精简版的 OS. 只包含内核.
指令初解
FROM: 表示 centos 的镜像文件最基础来自于 scrath 这个文件
MAINTAINER: 作者+邮箱
RUN: 容器构建时需要运行的命令
EXPOSE: 当前容器对外暴露的端口
WORKDIR: 容器创建后的落脚点. 一个目录. 没有的话容器创建时会自动创建
ENV: 设置环境变量
ADD: 将宿主机文件 拷贝到 镜像并解压
COPY: 将宿主机文件 copy到镜像但是不解压
VOLUME: 容器数据卷,用于数据保存和持久化工作
CMD: 容器启动时要运行的命令.可以有多个. 但是只会执行最后一个.会被 run 后的 命令替代
ENTRYPOINT: 容器启动时要运行的命令.和 CMD一样,指定容器启动程序及参数
基础知识
每条保留字指令必须为 大写字母,且后面要跟随一个参数
指令从上到下顺序执行
# 表示注释
每条指令会创建一个新的镜像层,并对镜像提交
Base镜像: Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的
FROM scratch
详解
有时候我们在 执行 docker run -it 时,有时候会在最末尾带上 /bin/bash
有时候不会带上.
如果我们 +上 /bin/bash. 相当于 在DockerFile 末尾又加上一句 /bin/bash
一堆啊.之前学过了都,怎么又忘了呢
RUN
容器构件时,会执行的命令.一般是 Linux 命令.安装 一些软件包之类的
EXPOSE
创建容器后,指定 暴露的端口号
WORKDIR
创建容器后,登录进来创建的落脚点. 进来容器在哪个目录下
ENV
在构建镜像中设置环境变量. 后续任何指令中使用这些环境变量
ENV MY_PATH /usr/myTemp
WORKDIR $MY_PATH
ADD
在镜像build过程中.
会自动处理RUL和解压缩文件
COPY
将文件copy到镜像中,但不会进行解压缩的操作
COPY src dest
COPY ["src","dest"]
VOLUME
容器数据卷. 用于数据保存和持久化工作
CMD
指定一个容器启动要运行的命令
dockerFile 可以有多个CMD,且会被最后一个替换.
如果生成 docker 容器的命令中, 输入了 cmd 命令的话. 将会被替换成你输入的命令
cmd <命令>
cmd ["可执行文件","参数1","参数2"]
参数列表格式:
CMD ["参数1","参数2",...] 在制定了 ENTRYPOINT 指令后,用CMD 制定具体参数
ENTRYPOINT
可以追加命令或参数
ONBUILD
当构建一个被继承的DockerFIle时运行命令. 父镜像在被子继承后父镜像的 onbuild 被触发
案例
FROM centos
ENV MYPATH /tmp
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "success...ok"
CMD /bin/bash
docker build -f /home/dxh/docker/dockerFileName -t imageName:TAG .
指令值一行一行执行的.虽然会被覆盖. 但是在镜像构建完成后.
在运行容器. 则会被最后一行的 /bin/bash 覆盖.
如果你运行容器就可以看到
列出镜像变更历史
docker history 镜像名
编写可以查询IP地址的镜像
原谅我,实在懒得写了
一共34集.记录到26集