首页 > 解决方案 > docker-compose up --build 与 docker-compose build && docker-compose up 有区别吗

问题描述

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

docker-compose -H 'ssh://remote_address' up --build

并得到

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

所以我们尝试了:

docker-compose -H 'ssh://remote_address' build
docker-compose -H 'ssh://remote_address' up

效果很好。我的问题是我在文档中找不到证据证明这是正确的行为。这是 docker-compose 中的错误、功能还是我的环境中的错误?

标签: dockerdocker-compose

解决方案


我不确定您在第一个命令中遇到的错误,我的意思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 exists 中的所有内容并下载基础镜像等。然后制作镜像并运行容器。

如果该映像之前已构建,它只是运行它。

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


推荐阅读