docker - 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 中的错误、功能还是我的环境中的错误?
解决方案
我不确定您在第一个命令中遇到的错误,我的意思docker-compose -H 'ssh://ip' up --build
是它可能真的是一个但是,但是提到的三个命令肯定有区别。我将尝试以简单的方式解释:
- 第一个命令是
docker-compose up --build
.
此命令查找docker-compose
文件并重建映像,然后使其运行。假设您对docker-compose
文件进行了一些更改,所以当您只运行时docker-compose
,您会收到一个警告说图像未重建,您应该运行docker-compose up --build
以重建它并重新构建所有内容(尽管之前已完成某些操作并存在于缓存中) .
- 第二个命令是
docker-compose build
.
此命令仅基于 构建您的映像docker-compose
,但不运行它。docker image ls
您可以通过或看到构建的图像docker images
。执行docker ps -a
也不应该看到您最近构建的映像正在运行。
- 第三个也是最后一个命令是
docker-compose up
.
如果是第一次输入这个命令,它会尝试运行Dockerfile
if exists 中的所有内容并下载基础镜像等。然后制作镜像并运行容器。
如果该映像之前已构建,它只是运行它。
与第一个命令不同,第三个命令仅运行该映像的最新构建,但不会再次构建它。
推荐阅读
- node.js - 禁止在 express 中的 next(err) 方法上将日志记录到控制台
- c - 在 root 下运行的进程中检索登录的用户名或 id
- swift - ViewController 无法识别 UITextField
- angular - 离子显示和隐藏部分文本
- javascript - 两个同名的打字稿全局模块
- json - 使用 Athena AWS (HIVE_BAD_DATA) 处理损坏的 JSON 结构
- wordpress - if else 语句给出数组
- bash - $# 计算哪些字符?
- oracle - PLS-00103 在 Oracle 游标中提供参数时
- javascript - Django Stripe Fake Card 导致 TemplateDoesNotExist 错误