Dockerfile简介

时间:2020-03-21 11:42:19  来源:igfitidea点击:

dockerfile只不过是一个简单的文本文件,具有构建Docker镜像的说明。
它包含用户可以在命令行上调用以构建图像的所有命令。
我们可以使用dockerfile创建自己的自定义图像。
然后,我们可以通过Docker Hub共享这些自定义Docker镜像。
对于那些想知道的人来说,Docker Hub是Docker提供的托管存储库服务,用于与团队查找和共享容器图像,当然与世界上任何人一起使用。

早些时候,如果我们想使用Jenkins,那么我们需要安装jenkins,涉及许多步骤。
有了DockerHub,我们现在可以在几分钟内下载并运行Jenkins的预构建容器图像。

从DockerHub中拉Jenkins图像,运行:

# docker pull Jenkins

一旦我们拔下了Docker镜像,我们就可以使用命令运行镜像来使用它:

# docker run -it -d -p 8080:8080 jenkins

这很简单!

要了解更多有关Docker使用情况的信息,请参阅以下教程。

  • Docker搬家

软件供应商,开源项目以及DockerHub中可用的社区有超过100,000个Docker图像。
我们可以从DockerHub搜索和下载我们选择的任何容器图像,并立即开始使用它,如上所示。

了解dockerfile格式

Docker可以通过从Dockerfile中读取指令自动构建图像。

典型的dockerfile包含以下说明:

1.从它设置容器的基础图像。

例子:

FROM ubuntu:18.04

它将将容器的基本图像设置为Ubuntu。
如果未指定标记18.04,则它将将标签作为"最新"。

2.标签是用于指定图像的元数据信息的键值对。

例子:

LABEL ENV=”DEVELOPMENT”

3.运行它用于在基础图像上执行命令,它将创建一个新图层。

例子:

RUN apt-get update
RUN apt-get install tomcat
  1. CMD使用它用于在容器启动时设置要首先执行的命令。

例子:

CMD [“java”, “-jar”, “app.jar”]

5.公开它将公开端口以访问容器。
容器将倾听此网络端口。
我们可以访问
使用此端口的输出。

例子:

EXPOSE 8080

6.维护者它将提供创建此Docker图像的作者的细节。

例子:

MAINTAINER Hyman@theitroad
  1. ENV它用于在键值对中设置环境变量。
    这些变量在图像构建过程中设置
    并在Docker创建后可用。

例子:

ENV DB_NAME=”MySQL”
ENV DB_VERSION=”8.0”

8.复制它用于将本地文件复制到容器。

例子:

COPY /target/devops.jar devops.jar

9.添加它与副本相同但具有更多功能,如我们可以提取本地tar并添加远程URL。

例子:

ADD devops.tar.xz/.
ADD http://example.com/abc.git /usr/local/devops/

10.用于为图像设置MAM命令的EntryPoint。
它与CMD指令一样。

CMD和RESTPOINT之间的区别在于RESTPOINT中不会覆盖指令。

例子:

ENTRYPOINT [“java”, “-jar”, “app.jar”]

11.卷它将创建具有指定名称的挂载点。

例子:

VOLUME /app/devops

12.用户将在运行图像时设置用户名和用户组。

例子:

USER dhruv
USER admin
  1. Workdir它将设置工作目录。
    如果不存在,它将创建目录。

例子:

WORKDIR /var/lib/

这是一个用于我们参考的示例Dockerfile。

FROM ubuntu:latest
MAINTAINER Dhruv Tiwari "Hyman@theitroad"
RUN apt-get install -y software-properties-common python
RUN add-apt-repository ppa:chris-lea/node.js
RUN echo "deb http://us.archive.ubuntu.com/ubuntu/precise universe" >>
/etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y nodejs
RUN mkdir /var/www
ADD app.js /var/www/app.js
CMD ["/usr/bin/node", "/var/www/app.js"]

请允许我向我们展示一个简单的示例来创建示例Dockerfile并使用它构建图像。

创建一个dockerfile.

创建名为dockerfile的文件,在文件中添加内容。
在以下示例中,我们正在更新和安装Vim和Curl。

# cat dockerfile
FROM alpine
RUN apk update
RUN apk add vim
RUN apk add curl

现在我们有Docker文件到位。
让我们继续使用dockerfile构建镜像。

使用dockerfile构建镜像

要从Dockerfile构建镜像,只需运行:

# docker build -t devops .

根据上面的命令,Docker将通过读取在当前工作目录中保存的DockerFile的指令自动启动镜像。

如果dockerfile保存在其他地方,则可以使用下面的-f标志提及其路径。

# docker build -f /path/to/a/Dockerfile .

创建镜像后,我们可以使用命令运行它:

# docker run -it devops