以下命令失败,尝试从Docker Hub中提取图像:
from scipy.spatial import KDTree
def kd_near_fn(*args, dist = 2., outfile = "practicefilecreate.txt"):
trees = [KDTree(arg) for arg in args]
if len(trees) == 1:
i, j = trees[0].query_pairs(dist)
k = np.unique(np.r_[i, j])
elif len(trees) == 2:
queries = trees[0].query_ball_tree(trees[1], dist)
k = np.array([len(query) > 0 for query in queries])
else:
assert False, "too many inputs"
np.savetxt(args[0][k], outfile, delimiter = ',')
但我只是想使用图像的本地版本,它存在:
$ docker-compose up -d
Pulling web-server (web-server:staging)...
ERROR: repository web-server not found: does not exist or no pull access
为什么Docker不在本地存储的图像中搜索?
这是我的Docker Compose文件:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
web-server staging b94573990687 7 hours ago 365MB
和我的.env文件:
version: '3'
services:
chat-server:
image: chat-server:staging
ports:
- "8110:8110"
web-server:
image: web-server:staging
ports:
- "80:80"
- "443:443"
- "8009:8009"
- "8443:8443"
答案 0 :(得分:43)
一般来说,这应该像你描述的那样工作。试图重现它,但它只是工作...
文件夹结构:
function(marker){
marker.on('mouseover', function(e) {
this.openPopup();
marker.setIcon(bigIcon);
});
}(marker)
Dockerfile的内容:
import pandas as pd
df1 = pd.DataFrame({"machine":["M1"]*4, "WeekNum": [2,5,8,10], "Percent":[75,80,95,90]})
df2 = pd.DataFrame({"machine":["M1"]*10,"WeekNum":np.arange(1,11,1),"Percent":[100]*10})
newcol = df2.merge(df1, on = "WeekNum", how = "outer")["Percent_y"].fillna(100)
df2["Percent"] = newcol
构建和标记图片:
.
├── docker-compose.yml
└── Dockerfile
使用docker-compose.yml:
FROM alpine
CMD ["echo", "i am groot"]
并启动docker-compose:
docker build -t groot .
docker tag groot:latest groot:staging
答案 1 :(得分:9)
在您的docker-compose.yml中,您可以为本地构建指定build: .
而不是build: <username>/repo>
(而不是从docker-hub中提取) - 我无法验证这一点,但是我相信你可以能够为docker-compose文件提供多种服务的相对路径。
services:
app:
build: .
答案 2 :(得分:6)
您可能需要更改图片代码,使两个部分用斜杠/
分隔。而不是
chat-server:staging
做类似的事情:
victor-dombrovsky/chat-server:staging
我认为Docker标签背后有一些逻辑,“一部分”标签被解释为来自DockerHub的官方图像。
答案 3 :(得分:5)
最简单的方法是将image
更改为build:
并在相对目录中引用Dockerfile
,如下所示:
version: '3.0'
services:
custom_1:
build:
context: ./my_dir
dockerfile: Dockerfile
这允许docker-compose
在单个命令中管理整个构建和图像编排。
# Rebuild all images
docker-compose build
# Run system
docker-compose up
答案 4 :(得分:3)
在@Tom Saleeba的回复中,
用“ /”标记容器后,我仍然出现错误
(例如:victor-dombrovsky/docker-image:latest
)
它一直在从远程docker.io服务器寻找图像。
registry_address/docker-image
似乎“ /”之前的URL是注册表地址,而“ /”之后的URL是映像名称。并且不提供“ /”,默认情况下docker-compose从远程docker.io查找该图像。
似乎是known bug,带有docker-compose
我终于在running the local registry下使它工作,使用注册表标记将其推送到本地注册表,然后从本地注册表中提取图像。
$ docker run -d -p 5000:5000 --restart=always --name registry registry:2
$ docker tag your-image-name:latest localhost:5000/your-image-name
$ docker push localhost:5000/your-image-name
,然后在dockerfile中更改图像网址:
version: '3'
services:
chat-server:
image: chat-server:staging
ports:
- "8110:8110"
web-server:
image: localhost:5000/your-image-name #####change here
ports:
- "80:80"
- "443:443"
- "8009:8009"
- "8443:8443"
类似地,用于聊天服务器图像。
答案 5 :(得分:2)
对我来说,把“ build:。” 做到了。我正在工作的docker compose文件如下所示,
version: '3.0'
services:
terraform:
build: .
image: tf:staging
env_file: .env
working_dir: /opt
volumes:
- ~/.aws:/.aws
答案 6 :(得分:1)
根据您的.env文件的外观,您似乎已将docker-compose
配置为使用远程Docker主机:
DOCKER_HOST=tcp://***.***.**.**:2376
此外,此.env仅由docker-compose
加载,而不由docker
加载。因此,在这种情况下,您的docker images
输出不会代表运行docker-compose
时可用的图像。
运行docker-compose
时,实际上是在远程主机tcp://***.***.**.**:2376
上运行Docker,而单独运行docker
时,则是在本地运行Docker。
运行docker images
时,实际上的确看到了存储在本地计算机上的图像列表。但是docker-compose up -d
将尝试启动容器,而不是在***.***.**.**:2376
上启动容器。 docker images
不会显示远程Docker主机上可用的映像,除非您设置DOCKER_HOST
环境变量,例如:
DOCKER_HOST=tcp://***.***.**.**:2376 docker images
很显然,远程Docker主机上没有存储web-server:staging
映像,该映像在Docker Hub上也不可用。这就是Docker抱怨找不到图像的原因。
如果您打算在本地运行容器,则只需从.env中删除DOCKER_HOST=...
行,然后重试。
但是,如果计划在给定的DOCKER_HOST上远程运行映像,则可能应该将其推送到存储库中。您可以在Docker Hub上创建一个免费的存储库,也可以在某个地方托管自己的存储库,然后使用docker push
将映像推送到那里,然后确保docker-compose.yml引用了正确的存储库。
如果您不想将映像推送到Docker Hub或托管自己的存储库,也可以使用docker image save
和docker image load
的组合来传输映像:
docker image save web-server:staging | DOCKER_HOST=tcp://***.***.**.**:2376 docker image load
请注意,对于大图像,这可能需要一段时间,尤其是在连接速度较慢的情况下。
答案 7 :(得分:0)
一个人也可以引用本地图像名称,而无需标签
docker build -t imagename .
可以称为:
version: "3"
services:
web:
image: imagename
在docker-compose yaml中。
答案 8 :(得分:0)
在我的测试中,要使其正常工作,您必须指定一个数字标签,否则docker将尝试远程检查最新版本。
将本地映像重命名为“ web-server:1”而不是“ web-server:staging”,然后相应地更改撰写文件。