DockerFile


DockerFile 解析 :
  是什么 :
  dockerfile 是用来构建docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。  

  独立于docker build 创建成docker镜像
官网 : http://docs.docker.com/engine/reference/builder/

构建三步骤 :
  1, 编写dockerfile文件
  2, docker build 命令构建镜像
  3, docker run 依据镜像运行容器实例

dockerfile 构建原理 :
  1,每条保留字指令都必须为大写字母且后面要跟随至少一个参数
  2,指令按照从上到下,顺序执行
  3,#表示注释
  4,每条指令都会创建一个新的镜像层并对镜像进行提交
docker 执行dockerfile的大致流程
  1,docker从基础镜像运行一个容器
  2,执行一条指令并对容器作出修改
  3,执行类似docker commitd的操作提交一个新的镜像层
  4,docker 再基础刚提交的镜像运行一个新容器
  5,执行dockerfile中的下一条指令直到所有指令都执行完成

dockerfile常用保留字 :
  参考Tomcat8 的dockerfile 入门
  http://github.com/docker-library/tomcat

DockerFile保留字:
  FROM :基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板,第一条必须是from
  MAINTAINER :镜像维护者的姓名和邮箱地址
  RUN :容器构建时需要运行的命令 两种格式 shell格式 exec格式
  Run 是在 docker build 时运行
  EXPOSE :当前容器对外暴露的端口
  WORKDIR :指定在创建容器后,终端默认登录的进来工作目录,一个落脚点
  USER : 是定该镜像以什么样的用户去执行,如果都不指定,默认时root
  EVN : 用来在构建镜像过程中设置环境变量
  ADD :将宿主机目录下得文件拷贝进镜像且会自动处理url和解压tar压缩包
  COPY : 类似add,拷贝文件和目录到镜像中。
  将从构造上下文目录中<原路径>的文件/目录复制到新的一层镜像内的<目的路径>位置


  eg:COPY src dest
  COPY ["src","dest"] <src原路径>:源文件或者源目录
  <dest目标路径>: 容器内的制定滤镜,该路径不用事先建好,如果没有会自动创建
  VOLUME :
  CMD : 指定容器启动后要做的指令(事情)
  注意: DockerFile 中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
  它和前面RUN命令的区别 CMD 是在docker run 时运行 RUN 是在docker build 时运行
  ENTRYPOINT : 也是用来指定一个容器启动时要运行的命令
  类似于CMD 指令,但是ENTRYPOINT不会被docker run后面的命令覆盖,而且这些命令会被当作参数送给ENTRYPOINT指令指定的程序
  eg : 变参 nginx 启动命令 nginx -c

FROM nginx
ENTRYPOINT ["nginx","-c"] # 定参
CMD ["/etc/nginx/nginx.conf"] # 变参


是否传参 按照dockefile编写执行 传参运行
Docker 命令 docker run nginx:test docker run nginx:test -c /etc/nginx/nginx.conf
衍生出的实际命令 nginx -c /etc/nginx/nginx.conf nginx -c /etc/nginx/nginx.conf


案例:contos案例
https://www.oracle.com/java/technologies/downloads/#java8下载安装 (登录oracle)
https://mirrors.yangxingzhen.com/jdk/ 分享路径个人博客
自定义镜像 centos java8
要求:Centos 镜像具备vim+jdk8+ifconfig
编写: 准备编写DockerFile文件 大写字母D

构建 :docker build -t centosjava8:1.5 .
注意 : .

docker run -it 镜像ID /bin/bash
pwd
登录查看 vim a.text
cat a.text
java -version


虚悬镜像:是什么 :仓库名、标签都是<none>的镜像,俗称dangling image

  查看虚悬镜像 docker images ls -f dangling=true 全部删除 docker image prune
  虚悬镜像已经失去存在价值,可以删除

  ubuntu 其他工具
RUN apt-get updata
RUN apt-get install net-tools
# RUN apt-get install -y iprout2
# RUN apt-get install install -y inetutils-ping

posted @ 2024-05-10 18:15  夜纸鸢  阅读(3)  评论(0编辑  收藏  举报