【发布时间】:2020-05-11 16:02:41
【问题描述】:
在使用非默认 docker 上下文时,我在通过 docker-compose build 而不是通过 docker build 构建时遇到问题。难道我做错了什么?还是 docker-compose 不能正确支持上下文...或者?
我在具有两个 docker 上下文的 mac 上运行,default 上下文是指运行 linux 的标准 vm,而第二个上下文是 windows 服务器 virtualbox vm。
(我也喜欢用剪刀跑步……)
我有一个Dockerfile,它来自 Windows 图像。 docker build . 在使用 windows 上下文时工作正常。
我创建了一个docker-compose.yml 文件,它试图引用该Dockerfile 来构建。 docker-compose build 失败并出现错误“没有匹配的清单”。无论我身处何种环境,这都是正确的。
这里是Dockerfile:
FROM mcr.microsoft.com/dotnet/framework/samples:aspnetapp
在父目录中,docker-compose.yml 文件:
version: '3.7'
services:
web:
build:
context: ./web
还有docker build .和docker-compose build和docker version和docker context ls的输出
11:52:42 ~/proj/k/docker/web (master) $ docker build .
Sending build context to Docker daemon 2.048kB
Step 1/1 : FROM mcr.microsoft.com/dotnet/framework/samples:aspnetapp
---> bd698e59f147
Successfully built bd698e59f147
11:52:45 ~/proj/k/docker/web (master) $ cd ..
11:56:38 ~/proj/k/docker (master) $ docker-compose build
Building web
Step 1/1 : FROM mcr.microsoft.com/dotnet/framework/samples:aspnetapp
aspnetapp: Pulling from dotnet/framework/samples
ERROR: Service 'web' failed to build: no matching manifest for linux/amd64 in the manifest list entries
11:56:43 ~/proj/k/docker (master) $ docker version
Client: Docker Engine - Community
Version: 19.03.5
API version: 1.40
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:22:34 2019
OS/Arch: darwin/amd64
Experimental: false
Server: Docker Engine - Enterprise
Engine:
Version: 19.03.5
API version: 1.40 (minimum version 1.24)
Go version: go1.12.12
Git commit: 2ee0c57608
Built: 11/13/2019 07:58:51
OS/Arch: windows/amd64
Experimental: false
11:56:49 ~/proj/k/docker (master) $ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
2019-box * 2019-box windows-docker-machine tcp://192.168.99.90:2376
default Current DOCKER_HOST based configuration unix:///var/run/docker.sock swarm
11:56:52 ~/proj/k/docker (master) $
【问题讨论】:
-
您如何控制
docker-compose正在使用您的两个 Docker 上下文中的哪一个? -
我“假设” docker-compose 知道使用当前的 docker 上下文。但也许这就是问题所在?我应该如何为撰写指定非默认上下文?
标签: docker docker-compose