我正在尝试创建一个链接来访问在另一个容器中运行的服务。我使用的命令是:
dokku docker-options:add service deploy,build,run --link service.unoserver.1:unoserver_host
然后
dokku ps:restart service
但是,由于某种原因,dokku 不断在容器名称末尾添加数字(可能是替换容器的名称),我收到以下错误消息:
Error response from daemon: Cannot link to a non running container: /service.unoserver.1.1695992273 AS /sevice.prepareworker.1/unoserver_host
如何链接容器
service.unoserver.1
以便我可以从容器service.preparewoker.1
访问它?
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f47bb2ec5626 dokku/service:latest "unoserver --interfa…" 6 minutes ago Up 6 minutes 5000/tcp service.unoserver.1
d35c1a242d52 dokku/service:latest "python manage.py ru…" 6 minutes ago Up 6 minutes 5000/tcp service.prepareworker.1
使用 docker link 时,跨容器联网需要稳定的容器名称。因此,Dokku 仅将它们用于服务链接。
如果您想跨应用程序联网,您将需要使用网络。以下内容足以创建一个网络并将您的应用程序添加到其中:
# create a network named my-network
dokku network:create my-network
# attach the app to it
dokku network:set node-js-app attach-post-deploy my-network
从那时起,应用程序node-js-app将可以在网络上通过
http://node-js-app.web:5000
访问,其中web
是进程类型,5000
是应用程序在容器内侦听的端口。您可以将其他应用程序附加到同一网络以连接到此服务。
请参阅 dokku 网络管理文档,了解有关其工作原理的更多详细信息。