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容器镜像,并在需要时使用它来创建容器。构建的镜像可以在多个环境中部署和共享,从而实现容器化应用程序的便携性和可重复性。