Docker【9】

您所在的位置:网站首页 docker镜像制作 Docker【9】

Docker【9】

2023-03-01 18:36| 来源: 网络整理| 查看: 265

在这里插入图片描述

文章目录 一、什么是DcokerFile二、DockerFile的基本结构三、DockerFile的构建指令四、实战

在之前的文章中,了解到了Docker的基本知识以及最为炫酷的Docker-compose。我想你不会仅仅满足于此,学习知识的过程犹如吸毒,越学越带劲。

接下来我们以最为通俗的话去理解DockerFile。实现容器化技术的更近一步深入。

一、什么是DcokerFile

dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。可以理解为是用来创建镜像的脚本文件。

因此:我们可以知道,一个新容器的构建有以下步骤:

1、编写DockerFile文件2、docker build 构建镜像3、docker run 二、DockerFile的基本结构

Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。

首先来定制一个简单nginx镜像:

(构建好的镜像内会有一个 /usr/share/nginx/html/index.html 文件)

在一个空目录下,新建一个名为 Dockerfile 文件,并在文件内添加以下内容:

FROM nginx RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html

pSsSlHx.png

这样,我们的Dockerflile文件就编写完成了,接着就通过 Dockerfile 构建一个 nginx:v3(镜像名称:镜像标签):

docker build -t nginx:v3 .

pSsSNgH.png

这样一个简单的nginx镜像就创建完成。

三、DockerFile的构建指令

上节,简单的说明了构建镜像的过程,其实在Dockerfile的编写的根据自己的需要,进行各种自定义操作。

dockerfile的指令:   FROM:指定基础镜像(FROM是必备的指令,并且必须为第一条指令)。   RUN: 用来执行命令行命令。其基本格式:       shell格式: RUN ,输入在bash环境中的命令即可,一个dockerfile允许使用RUN不得超过127层,所以,使用一次RUN, 使用 ‘ \ ’ 换行,使用‘ && ’执行下一条命令。一般使用此种格式;       exec格式: RUN ,此种方式像是函数调用中的格式;   COPY: 复制文件。 其基本格式:       格式1:COPY ...       格式2:COPY [“”,.....""]   ADD: 更高级的复制文件,在COPY的基础上增加了一些功能,如果复制的是压缩包的话,会直接解压,而不需要在使用RUN解压;   CMD:容器启动命令。其基本格式:       shell格式: CMD       exec格式: CMD ["可执行文件", "参数1", "参数2"...]       参数列表格式: CMD [“参数1”, “参数2”...],在指定了ENTRYPOINT指令后,用CMD指定具体的参数   ENTRYPOINT: 入口点。其基本格式分为exec和shell,       ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数。当指定了ENTRYPOINT后,CMD的含义就发生了改变,不在是直接运行其命令,而是将CMD的内容作为参数传递给ENTRYPOINT指令。其执行时就变成了: ""   ENV: 设置环境变量。(都可以使用这里使用的变量)其基本格式:       格式1:ENV       格式2:ENV = =...   ARG: 构建参数。构建参数和ENV的效果一样,都是设置环境变量,所不同的是ARG所构建的环境变量在将来容器运行时是不存在的。其基本格式:       格式1: ARG [=]       格式2: 该默认值可以在构建命令 docker build 中用 --build-arg = 来覆盖   VOLUME: 定义匿名卷。 其基本格式:       格式1: VOLUME ["", ""...]       格式2: VOLUME   EXPOSE: 暴露端口。EXPOSE指令是声明运行时容器所提供的端口,在启动容器时不会在因为这个声明而开启端口。 其基本格式:       格式1: EXPOSE [...]   WORKDIR: 指定工作目录。其基本格式:       格式1: WORKDIR   USER: 指定当前用户。USER是帮助你切换到指定用户。 其基本格式:       格式1: USER   HEALTCHECK: 健康检查,判断容器的状态是否正常。 其基本格式:       格式1: HEALTCHECK [选项] CMD :设置检查容器健康状况的命令       格式2: HEALTCHECK NONE: 如果基础镜像有健康检查指令,使用此格式可以屏蔽掉其健康检

Dockerflie的命令是很多的,不过用熟悉了就非常nice了。

简要版命令

FROM基础镜像,当前新镜像是基于哪个镜像的MAINTAINER镜像维护者的姓名混合邮箱地址RUN容器构建时需要运行的命令EXPOSE当前容器对外保留出的端口WORKDIR指定在创建容器后,终端默认登录的进来工作目录,一个落脚点ENV用来在构建镜像过程中设置环境变量ADD将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包COPY类似ADD,拷贝文件和目录到镜像中VOLUME容器数据卷,用于数据保存和持久化工作CMD指定一个容器启动时要运行的命令,dockerFile中可以有多个CMD指令,但只有最后一个生效!ENTRYPOINT指定一个容器启动时要运行的命令!和CMD一样ARG构建时指定的一些参数HEALTHCHECH健康检查USER为RUN、CMD、和 ENTRYPOINT 执行命令指定运行用户

总结的构建流程如下:

pSsSza6.png

四、实战

通过Dockerfile来部署datax容器

首先,datax运行需要python2.x和jdk1.8。

上传jdk1.8 tar包已经datax安装包到本地服务器 pSg3NyF.png

在当前目录下编辑Dockerfile文件

1、编写Dockerfile FROM centos/python-27-centos7 //安装jdk ADD jdk-8u221-linux-x64.tar.gz /opt/local ENV JAVA_HOME /opt/local/jdk1.8.0_221 ENV PATH $JAVA_HOME/bin:$PATH // 添加并解压datax文件到/opt/local 目录 ADD datax.tar.gz /opt/local/ // 设置运行的工作目录,可不添加,运行中使用 docker -w 指定 WORKDIR /opt/local/datax ENTRYPOINT ["bash"] 2、构建 格式命令:在当前目录下-> docker build -t="镜像名称:TAG" . . 表示当前目录。 docker build -t="datax_python2" .

这个命令必须在Dockerfile文件所在的目录下运行: pSg3gyD.png

查看本地的镜像,可以看到刚刚创建到的镜像: pSg3hTA.png

3、运行

通过该镜像创建容器:

docker run -it --name dataxpython2 datax_python2


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3