docker(Dockerfile、 关键字解释、Dockerfile编写、构建) -day04

发布时间:2023年12月17日

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

一、常用保留字汇总

Dockerfile 的保留字(关键字)是用于定义和构建 Docker 镜像的指令。以下是一些常用的 Dockerfile 保留字:

  1. FROM:指定基础镜像。
  2. RUN:执行命令并提交结果。 (docker ?build? 时候运行)
  3. CMD:容器启动时执行的命令。(docker run时候运行)
  4. LABEL:为镜像添加元数据标签。
  5. EXPOSE:暴露容器的端口。
  6. ENV:设置环境变量。
  7. ADD:将文件或目录添加到镜像中。(自动处理URL 和解压tar压缩包)
  8. COPY:复制文件或目录到镜像中
  9. ENTRYPOINT:指定容器启动时要运行的命令。(ENTRYPOINT可以和CMD一起用,一般是变参才会使用 CMD ,这里的 CMD 等于是在给 ENTRYPOINT 传参。当指定了ENTRYPOINT后,CMD的含义就发生了变化,不再是直接运行其命令而是将CMD的内容作为参数传递给ENTRYPOINT指今)
  10. VOLUME:定义容器中的卷
  11. USER:指定运行容器的用户。
  12. WORKDIR:设置容器中的工作目录。
  13. ARG:定义传递给构建过程的参数。
  14. ONBUILD:定义当构建作为另一个 Dockerfile 的基础镜像时执行的指令。
  15. HEALTHCHECK:定义容器健康检查的命令和参数。
  16. SHELL:指定容器中执行的默认 shell。
  17. MAINTAINER:指定维护者信息。
  18. FIPS:启用或禁用 FIPS 模式(适用于美国政府)。
  19. CONTAINERD_GRAPH:设置容器d守护进程使用的目录路径。
  20. HELP:为 Docker 守护进程打印帮助信息。
  21. REJECT_UNSAFE_ Volumes:拒绝从 Dockerfile 中使用不安全的卷。
  22. LABEL_OPTIONS:为镜像添加标签选项。
  23. EXTRA_HOSTS:添加主机名到 /etc/hosts 文件(主机名称和 IP 地址列表)。
  24. NOPROXY:添加主机名到 /etc/hosts 文件(主机名称列表),以避免使用 DNS 进行反向解析。
  25. HTTP_PROXY/HTTPS_PROXY/NO_PROXY:设置 HTTP/HTTPS 代理和不使用代理的服务器列表。?

?一、dockerfile 案列

操作背景: centos 7镜像具备vim + ifconfig +jdk8

?1.1 编写Dokerfile

Dokerfile? ?<<---------注意文件名是这个

1-新建文件夹 上传文件
[root@iZuf6hxabqikytnrumsi4gZ /]# mkdir myfile
?

2- 创建如下Dokerfile文件
[root@iZuf6hxabqikytnrumsi4gZ myfile]# vim Dokerfile


3- 编写build文档
#基础镜像 以及作者定义
FROM centos:7
MAINTAINER syf<1336.qq.com>
#指定登录后的路径
ENV MYPATH /usr/local
WORKDIR $MYPATH

#安装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-8u381-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
ADD jdk-8u381-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_381
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 $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash

1.2构建镜像

在当前目录下构建

docker build -t centosJava8:1.0 .

构建之前先核对下,我这用的cenos7

1-拉去基础镜像
[root@iZuf6hxabqikytnrumsi4gZ myfile]# docker pull centos:7

2-核对镜像
[root@iZuf6hxabqikytnrumsi4gZ myfile]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
redis        6.2.6     7614ae9453d1   24 months ago   113MB
mysql        5.7       c20987f18b13   24 months ago   448MB
centos       7         eeb6ee3f44bd   2 years ago     204MB

?构建结果如下,1、2、3、4

1-构建命令
[root@iZuf6hxabqikytnrumsi4gZ myfile]# docker build -t centosjava8:1.0 .

2-构建过程

[+] Building 89.1s (12/12) FINISHED                                                                                                                                                                docker:default
 => [internal] load build definition from Dockerfile                                                                                                                                                         0.0s
 => => transferring dockerfile: 830B                                                                                                                                                                         0.0s
 => [internal] load .dockerignore                                                                                                                                                                            0.0s
 => => transferring context: 2B                                                                                                                                                                              0.0s
 => [internal] load metadata for docker.io/library/centos:7                                                                                                                                                  0.0s
 => [1/7] FROM docker.io/library/centos:7                                                                                                                                                                    0.0s
 => [internal] load build context                                                                                                                                                                            1.6s
 => => transferring context: 139.30MB                                                                                                                                                                        1.3s
 => [2/7] WORKDIR /usr/local                                                                                                                                                                                 0.2s
 => [3/7] RUN yum -y install vim                                                                                                                                                                            61.3s
 => [4/7] RUN yum -y install net-tools                                                                                                                                                                       2.5s
 => [5/7] RUN yum -y install glibc.i686                                                                                                                                                                     11.5s 
 => [6/7] RUN mkdir /usr/local/java                                                                                                                                                                          0.3s 
 => [7/7] ADD jdk-8u381-linux-x64.tar.gz /usr/local/java/                                                                                                                                                    3.1s 
 => exporting to image                                                                                                                                                                                       9.9s 
 => => exporting layers                                                                                                                                                                                      9.9s 
 => => writing image sha256:b66e5037b732600d2de0b74f6058ea21b396a5f61646f4290812d67734047668                                                                                                                 0.0s 
 => => naming to docker.io/library/centosjava8:1.0



3- 查看 
[root@iZuf6hxabqikytnrumsi4gZ myfile]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
centosjava8   1.0       b66e5037b732   4 minutes ago   1.27GB
redis         6.2.6     7614ae9453d1   24 months ago   113MB
mysql         5.7       c20987f18b13   24 months ago   448MB
centos        7         eeb6ee3f44bd   2 years ago     204MB

4-运行容器
[root@iZuf6hxabqikytnrumsi4gZ myfile]# docker run -it b66e5037b732 /bin/bash
[root@ecd00b1d0b26 local]# pwd
/usr/local
[root@ecd00b1d0b26 local]# 


二、虚悬镜像

虚悬镜像已经失去存在价值,可以删除

查看虚悬镜像

docker image ls -f dangling=true

删除虚悬镜像

docker image prune


?

文章来源:https://blog.csdn.net/javaxueba/article/details/134919378
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。