如何使用DockerFile为Docker容器构建图像?

Docker容器运行并对图像进行了更改。通常,我们使用现有的图像,这就像一个模板来创建一个新的容器。许多Linux发行版和软件都提供服务Docker映像。但在某些情况下,我们可能需要创建或增强现有的图像。Dockerfile可以通过提供有关新图像的说明来创建新图像。

null

Dockerfile文件

Dockerfile是一个简单的文本文件,包含将要创建的Docker映像的配置。Dockerfile包含用于更改图像属性的Dockerfile命令。我们也可以将Dockerfile称为图像的配方。

这是一个简单而精巧的Dockerfile。这个文件简单地从当前和最新的ubuntudocker映像派生基本映像,然后更新现有的包。更新完成后 apache2 软件包正在安装。一般来说,Dockerfile比这个例子更复杂,我们将在下面看到。

#This is a sample Image FROM ubuntu MAINTAINER [email protected] RUN apt-get update RUN apt-get install –y apache2
Dockerfile
Dockerfile文件

构建Dockerfile并创建新映像

我们将从简单的步骤开始,在这里我们将构建前面给出的Dockerfile示例。此生成将使用 -t 选择 docker build 命令 poftut1 .

$ mkdir poftut1$ cd poftut1/$ vim Dockerfile

使用示例内容创建DockerFile后,我们可以使用 docker build 命令。我们将需要sudo,因为当前用户没有足够的权限创建Docker映像,因此我们得到 root 特权。

$ sudo docker build -t poftut1 .
Build Dockerfile and Create New Image
构建Dockerfile并创建新映像

我们可以从给定的Dockerfile图像中看到,指令是逐行执行的。

  • 第一步是打基础 ubuntu 形象
  • 第二步是设置维护人员信息
  • 步骤3正在运行 apt-get update 命令
  • 第4步是安装 apache2 具有 apt 包管理器。

运行并使用Docker映像

我们可以使用这个名为 poftut1 比如一个普通的图像 ubuntu . 我们将从中创建一个新容器 poftut1 图像 docker run 命令。

$ sudo docker run -t -i poftut1 bash
Use Docker Image
使用Docker图像

Dockerfile命令

到目前为止,我们已经学会了用 Dockerfile . 有很多不同的Dockerfile命令可以用来运行命令、创建文件、创建元数据、复制文件等。

添加–将文件从本地系统复制到映像中

Add是一个非常有用的命令,用于从docker运行到图像文件的本地系统复制文件和文件夹。这可用于复制特殊配置、复制应用程序或数据。  我们也可以使用URL作为[SOURCE DIRECTORY],比如 https://www.poftut.com/data

相关文章: 如何在Ubuntu上安装Kubernetes 1.4

语法

ADD [SOURCE DIRECTORY] [DESTINATION DIRECTORY]

在本例中,我们将复制 httpd.conf 文件到图像中 /etc/httpd/httpd.conf .

ADD  httpd.conf   /etc/httpd/httpd.conf

ARG–提供构建时参数

如果我们想在构建时以键值格式提供一些参数,我们可以使用 ARG 指令。这个论点提供了 build 命令。如果我们想使用默认值,我们可以用 ARG 指令。

语法

ARG [NAME] [=DEFAULT VALUE]

在本例中,我们将设置构建时参数 VERSION 使用默认值 18.10

ARG VERSION="18.01"

CMD–在容器开始时运行命令

CMD 是另一个有用的命令,用于在容器开头运行命令。 CMD 不会在映像生成期间运行。创建新容器时,将运行此命令。

语法

CMD  [COMMAND]  [ARGUMENT1]  [ARGUMENT2]

在本例中,我们希望在从该图像创建新容器时将Hello Poftut打印到终端。命令将是 echo 而争论1将是 "Hello Poftut"

CMD "echo" "Hello Poftut"

入口点–在前台运行单个命令

ENTRYPOINT 用于设置在容器启动时在前台运行的单个命令。例如,如果我们想将web服务器作为容器运行,我们可以将web服务器守护进程设置为入口点。

语法

ENTRYPOINT [COMMAND]

在这个例子中,我们将开始 httpd 容器启动时的命令。

ENTRYPOINT /bin/httpd

ENV–在键值中设置环境变量

ENV 命令可以在Dockerfile中使用,以便设置相关的图像环境变量,如键值对。这可以像数据库或与图像的通信通道一样使用。

相关文章: 什么是Docker注册表?如何使用它?

语法

 ENV [KEY]  [VALUE]

在本例中,我们将设置线程计数,该计数将由守护程序服务用作环境变量。

ENV THREADS 20

EXPOSE–将主机端口重定向到容器端口

EXPOSE 用于将容器端口重定向到它运行的本地系统端口。例如,如果在容器TCP端口80中运行web服务器,并且希望使用本地系统端口80,则可以使用EXPOSE。

语法

EXPOSE [PORT]

在本例中,我们将把端口8080重定向到本地系统端口。

EXPOSE 8080

FROM–使用给定的基本图像

FROM 用于为创建的图像设置基础图像。这是一个非常重要的命令,因为它将从现有图像创建基本图像,如 ubuntu , centos 等。将在本地系统中搜索基本图像并 码头中心 .

语法

FROM [IMAGE NAME]

在本例中,我们将使用Docker Hub中的CentOS图像。

FROM centos

如果需要,还可以指定图像的版本,如 ubuntu18.10 等。

FROM ubuntu18.10

MAINTAINER–设置作者信息或图像元数据

MAINTAINER 用于设置诸如作者姓名、电子邮件等信息。我们可以简单地为容器设置一些信息性数据。这些信息就像编程语言中的注释。

语法

MAINTAINER [NAME]

在本例中,我们将设置作者电子邮件 [email protected]

MAINTAINER [email protected]

RUN–生成映像期间的RUN命令

在建立形象的过程中,我们需要采取一些行动。这些行动可以通过 RUN 命令。例如,我们可以安装一个带有 apt 命令 ubuntu 形象。

相关文章: 如何在Linux下创建、启动、停止、管理Docker容器?

语法

RUN [COMMAND]

在本例中,我们将安装 apache2 打包然后删除缓存文件。

RUN apt updateRUN apt install apache2RUN apt autoremove

用户–设置用户名

这个 USER 指令可用于设置运行映像的UID或username。

语法

USER [UID or USERNAME]

在本例中,我们将用户名设置为 ismail

USER ismail

卷–将本地系统目录装载到容器中

在某些情况下,我们可能需要将本地系统路径或目录装载到正在运行的容器中。我们可以用 VOLUME 指令以装入本地系统路径 /home/ismail 进入运行容器给定的路径,如 /myhome 等。

语法

VOLUME [LOCAL SYSTEM PATH]  [CONTAINER PATH]

在本例中,我们将挂载本地路径 /home/ismail 进入容器路径 /myhome 将自动创建。

VOLUME /home/ismail /myhome

WORKDIR–更改或设置当前工作目录

由于我们可以在构建映像的过程中运行命令,我们可能还需要更改工作目录,这可能会影响命令的执行。我们将使用 WORKDIR 更改当前工作目录。

语法

WORKDIR [PATH]

在这个例子中,我们将设置 /tmp 作为当前工作目录

WORKDIR /tmp
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享