docker-compose up --build 与 docker-compose build && docker-compose up 有区别吗

Jak*_*oga 5 docker docker-compose

我们试图在远程主机上构建和运行 docker-compose 项目。我尝试使用:

docker-compose -H 'ssh://remote_address' up --build
Run Code Online (Sandbox Code Playgroud)

并得到

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Run Code Online (Sandbox Code Playgroud)

所以我们尝试:

docker-compose -H 'ssh://remote_address' build
docker-compose -H 'ssh://remote_address' up
Run Code Online (Sandbox Code Playgroud)

哪个工作得很好。我的问题是我无法在文档中找到证据证明这是正确的行为。这是 docker-compose 中的错误、功能还是我环境中的错误?

Sae*_*eed 10

我不确定您在第一个命令中遇到的错误,我的意思docker-compose -H 'ssh://ip' up --build是它可能实际上是一个但是,但是提到的三个命令肯定有差异。我将尝试用简单的方式解释:

  1. 第一个命令是docker-compose up --build.

此命令查找docker-compose文件并重建映像,然后使其运行。假设您对文件进行了一些更改docker-compose,因此当您仅运行时docker-compose,您会收到一条警告,表明图像未重建,您应该运行docker-compose up --build以重建它并重新构建所有内容(尽管之前完成了一些操作并存在于缓存中) 。

  1. 第二个命令是docker-compose build.

此命令仅基于 构建您的映像docker-compose但不运行它。docker image ls您可以通过或 来查看构建的图像docker images。另外,执行时docker ps -a不应看到您最近构建的映像正在运行。

  1. 第三个也是最后一个命令是docker-compose up

如果第一次输入此命令,它会尝试运行Dockerfileif 存在的所有内容并下载基础映像等。然后制作映像并运行容器。

如果之前已经构建了映像,则它只会运行它。

与第一个命令不同,第三个命令仅运行该映像的最新版本,但不会再次构建它。