DockerFile 简介

这篇具有很好参考价值的文章主要介绍了DockerFile 简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 是什么

2 构建过程解析

2.1 构建的三个步骤

2.2 Docker内容基础知识

2.3 Docker执行DockerFile的大致流程

3. DockerFile 常用保留字指令

4. 案例理解常用保留字指令

4.1 案例要求

4.2 pull镜像

4.3 编写 Dockerfile文件

4.4 构建

4.5 运行

5. 虚悬镜像

5.1 是什么

5.2 查找容器中的虚悬镜像

5.3 删除虚悬镜像


1. 是什么

DockerFile使用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。

DockerFile 简介,Docker高级,java,开发语言

2 构建过程解析

2.1 构建的三个步骤

  1. 编写DockerFile文件
  2. docker build命令构建镜像
  3. docker run 依照镜像运行容器实例

2.2 Docker内容基础知识

  1. 每条保留字指令都必须为大写字母且后面要跟随至少一个参数
  2. 指令按照从上到下,顺序执行
  3. #表示注释
  4. 每条指令都会创建一个新的镜像层并对镜像进行提交

2.3 Docker执行DockerFile的大致流程

  1. docker从基础镜像运行要一个容器
  2. 执行一条指令并对容器做出修改
  3. 执行类似docker commit的操作提交一个新的镜像层
  4. docker再基于刚提交的镜像运行一个新容器
  5. 执行dockerFile中的下一条指令直到所有指令都执行完成

总结:DockerFile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维,三者缺一不可,合力充当Docker体系的基石。

DockerFile 简介,Docker高级,java,开发语言

3. DockerFile 常用保留字指令

  1. FROM : 基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模版,第一条必须是from
  2. MAINTAINER : 镜像维护者的姓名和邮箱地址
  3. RUN:容器构建时需要运行的命令;
    俩种格式:
           shell:RUN <命令行命令> ,类似于在终端操作shell命令 ,例 RUN yum -y install vim
           exec:RUN ["可执行文件","参数1","参数2"...],例RUN ["./test.php","dev","offline"] 等价         于RUN ./test.php dev offline
    RUN是在docker build时运行
  4. EXPOSE:当前容器对外暴露出的关口
  5. WORKDIR:指定在创建容器后,终端默认登录进来的工作目录,一个落脚点
  6. USER:指定该镜像以什么样的用户去执行,如果都不指定,默认是root
  7. ENV:用来在构建镜像过程中设置环境变量。
    ENV MY_PATH /usr/mytest,这个环境变量可以在后续的任何RUN指令中使用,这就 如同在命令前面指定了环境变量前缀一样;也可以在其它指令中直接使用这些环境变量
  8. VOLUME:容器数据卷,用于数据保存和持久化工作
  9. ADD:将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包
  10. COPY:类似ADD,拷贝文件和目录到镜像中。
    将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>            位置。COPY src dest  等价于 COPY["src","dest"]
  11. CMD:指定容器启动后要干的事情。和RUN相似,也是俩种格式。
    注意:Dockerfiel 中可以有多个CMD指令,但是只有最后一个生效,CMD会被docker run之后的参数替换。
    CMD是在docker run时运行;RUN是在docker build时运行。
  12. ENTRYPOINT:也是一个用来指定容器启动时要运行的命令。类似CMD指令,但是ENTRYPOINT不会被docker run后面的命令覆盖,而且这些命令行参数会被当做参数送给ENTRYPOINT指令指定的程序

4. 案例理解常用保留字指令

4.1 案例要求

在原有centos基础上增加vim + ifconfig + jdk8的功能

4.2 pull镜像

docker pull centos:7

pull拉去centos镜像的时候,建议拉取centos:7(指定版本),要是不指定版本,默认拉取最新版即8.x,但是cengos官方在21年年底停止更新,yum指令没有源,会报错。

4.3 编写 Dockerfile文件

FROM centos:7
MAINTAINER dylan

ENV MY_PATH /usr/local
WORKDIR $MY_PATH

#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看网络ip
RUN yum -y install net-tools
#安装java8及lib库
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD 是相对路径jar。把 jdk-8u181-linux-x64.tar.gz 添加到容器中,安装包必须要和Dockerfile文件在同一位置
ADD jdk-8u181-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_181
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
EXPOSE 80

CMD echo $MY_PATH
CMD echo "success..................ok"
CMD /bin/bash

将上面的内容编写到 /myfile/Dockerfile 文件中。(下载的jdk 也在这个目录中)

4.4 构建

docker build -t 新镜像名字:TAG .
注意 上面TAG 后面后个点


构建信息:
[+] Building 29.6s (12/12) FINISHED                                                                                                                                                                 docker:default
 => [internal] load build definition from Dockerfile                                                                                                                                                          0.0s
 => => transferring dockerfile: 827B                                                                                                                                                                          0.0s
 => [internal] load metadata for docker.io/library/centos:7                                                                                                                                                   0.0s
 => [internal] load .dockerignore                                                                                                                                                                             0.0s
 => => transferring context: 2B                                                                                                                                                                               0.0s
 => [1/7] FROM docker.io/library/centos:7                                                                                                                                                                     0.0s
 => [internal] load build context                                                                                                                                                                             0.0s
 => => transferring context: 107B                                                                                                                                                                             0.0s
 => CACHED [2/7] WORKDIR /usr/local                                                                                                                                                                           0.0s
 => CACHED [3/7] RUN yum -y install vim                                                                                                                                                                       0.0s
 => CACHED [4/7] RUN yum -y install net-tools                                                                                                                                                                 0.0s
 => [5/7] RUN yum -y install glibc.i686                                                                                                                                                                      11.4s
 => [6/7] RUN mkdir /usr/local/java                                                                                                                                                                           0.5s 
 => [7/7] ADD jdk-8u181-linux-x64.tar.gz /usr/local/java/                                                                                                                                                     5.7s 
 => exporting to image                                                                                                                                                                                       11.6s 
 => => exporting layers                                                                                                                                                                                      11.5s 
 => => writing image sha256:e31b03196027d41b27e2f4342fa0705405b03b180b0239a95f1bb8a11cfbd4e0                                                                                                                  0.0s 
 => => naming to docker.io/library/centosjava:1.0.1    

DockerFile 简介,Docker高级,java,开发语言

4.5 运行

docker run -it 新镜像名字:TAG

DockerFile 简介,Docker高级,java,开发语言

5. 虚悬镜像

5.1 是什么

仓库名、标签都是<none>的镜像,称之为dangling image。

5.2 查找容器中的虚悬镜像

docker image ls -f dangling=true

5.3 删除虚悬镜像

虚悬镜像已经失去存在价值,可以删除文章来源地址https://www.toymoban.com/news/detail-848974.html

[root@localhost ~]# docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] 

到了这里,关于DockerFile 简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包