docker系列:dockerfile及其用法解析

2023年 9月 30日 28.2k 0

9.1 CMD 指令

CMD 指令:指定容器启动后默认执行的命令

CMD 指令用于指定容器在启动时要执行的默认命令。它定义了容器的主要执行命令,可以包括可执行文件、脚本或应用程序的启动命令。如果 Dockerfile 中有多个 CMD 指令,只有最后一个会生效。以下是 CMD 指令的基本语法:

CMD ["可执行文件", "参数1", "参数2", ...]
  • "可执行文件" 是容器启动时要运行的可执行文件的路径或名称。
  • "参数1", "参数2", ... 是可执行文件的参数,它们会传递给可执行文件以启动应用程序。

例 :使用 CMD 启动应用程序

假设你有一个简单的 Python 应用程序,你可以使用 CMD 指令指定容器启动时要运行的 Python 脚本:

FROM python:3.9

WORKDIR /app
COPY myapp.py /app/

CMD ["python", "myapp.py"]

在这个示例中,我们首先基于 python:3.9 镜像构建一个新的镜像。然后,我们将 myapp.py 文件复制到容器的工作目录 /app/ 中,并使用 CMD 指令定义了容器的启动命令。当容器启动时,它将执行 python myapp.py 命令来运行 Python 应用程序。

9.2 ENTRYPOINT 指令

ENTRYPOINT 指令 与 CMD 指令类似,但参数不会被覆盖

ENTRYPOINT 指令与 CMD 类似,也用于指定容器启动时要执行的命令。然而,与 CMD 不同的是,ENTRYPOINT 指令的参数不会被覆盖,而是作为 CMD 的参数。以下是 ENTRYPOINT 指令的基本语法:

ENTRYPOINT ["可执行文件", "参数1", "参数2", ...]
  • "可执行文件" 是容器启动时要运行的可执行文件的路径或名称。
  • "参数1", "参数2", ... 是可执行文件的参数,它们会传递给可执行文件。

示例 2:使用 ENTRYPOINT 启动应用程序

继续前面的 Python 应用程序示例,我们可以使用 ENTRYPOINT 指令来指定容器启动时要运行的命令,并且参数将作为该命令的一部分:

FROM python:3.9

WORKDIR /app
COPY myapp.py /app/

ENTRYPOINT ["python", "myapp.py"]

在这个示例中,与之前的示例不同,我们使用了 ENTRYPOINT 指令。当容器启动时,它将执行 python myapp.py 命令,并且任何附加的参数将被传递给 myapp.py 脚本。例如,如果你运行容器时指定了额外的参数,如 docker run my-container arg1 arg2,那么这些参数将被传递给 myapp.py 脚本,成为它的参数。

总结来说,CMD 用于指定容器的默认命令,而 ENTRYPOINT 也可以用于定义容器的默认命令,但它的参数不会被覆盖,而是被附加到默认命令的末尾,从而允许更灵活的容器启动配置。

5. 构建容器镜像

构建Docker容器镜像是将Dockerfile中的指令转换为实际容器镜像的过程。使用docker build命令可以根据Dockerfile构建镜像,同时可以指定镜像的名称和标签。

以下是对构建Docker容器镜像的详细步骤:

  • 准备Dockerfile:
    在构建容器镜像之前,确保已经创建了一个包含所需配置的Dockerfile。这个Dockerfile定义了容器的配置、依赖关系和行为。

  • 打开终端:
    打开命令行终端或终端窗口,确保已经登录到Docker守护进程所在的主机上。可以使用docker version命令来验证Docker是否已经启动。

  • 定位到Dockerfile目录:
    使用cd命令在终端中进入包含Dockerfile的目录。这是因为docker build命令默认在当前目录中查找Dockerfile。

  • 运行docker build命令:
    使用以下命令来构建Docker容器镜像,其中-t选项用于指定镜像名称和标签(格式为name:tag),. 表示Dockerfile所在的当前目录。

    docker build -t my-image:1.0 .
    
    • my-image:是镜像的名称。
    • 1.0:是镜像的标签,通常表示版本号或标识符。
    • .:表示Dockerfile所在的目录。这是Docker build命令的最后一个参数。

    可以根据自己的需求为镜像指定不同的名称和标签。

  • 等待镜像构建完成:
    Docker将会执行Dockerfile中的每个指令,并创建镜像的各个层。构建时间的长短取决于Dockerfile中的操作以及基础镜像的大小。

  • 查看构建日志:
    构建过程中,Docker会在终端中显示每个步骤的构建日志。可以查看这些日志以了解构建的进度和任何错误信息。如果一切顺利,将在终端中看到成功的构建消息。

  • 验证构建的镜像:
    完成构建后,可以使用docker images命令来列出所有已构建的镜像,以验证新创建的镜像是否存在。

  • 使用构建的镜像:
    构建完成后,可以使用docker run命令来创建和运行新容器,使用构建的镜像。例如:

    docker run -d my-image:1.0
    

    这将创建一个新容器,基于刚刚构建的镜像运行。

  • 通过这些步骤,可以成功构建Docker容器镜像,并在需要时使用它来创建容器。构建的镜像可以在多个环境中部署和共享,从而实现容器化应用程序的便携性和可重复性。

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论