Link docker Dockerfile 中的容器
Link docker containers in the Dockerfile
我在本地机器的 docker 容器中有一个 Jaeger 运行。
我创建了一个将跟踪数据发送到 Jaeger 的示例应用程序。当运行从IDE开始,数据就完美发送了。
我已经将我的应用程序容器化,现在我将它部署为一个容器,但只有当我使用 --link jaeger
到 link 两个容器(预期)时,通信才有效。
我的问题是:
有没有办法在我的 Dockerfile 中添加 --link
参数,这样我就不需要在 运行 docker run
命令时指定它?
如果您想保留两个单独的图像,则无法在 Docker 文件中执行此操作。您应该如何提前知道您要 link 的容器的 name/id?
以下是两种解决方案:
- 使用Docker撰写。这样,Docker会自动link所有的容器一起
- 创建一个
bridge
网络并添加所有你想要的容器到link 里面。这样,您就可以进行名称解析,并且可以使用名称联系每个容器
我建议您使用 netwoking,方法是创建:
docker network create [OPTIONS] NETWORK
然后 运行 使用 --network="network"
将 docker-compose 与 network 和 link 相互使用
示例:
version: '3'
services:
jaeger:
network:
-network1
other_container:
network:
-network1
networks:
network1:
external: true
我在本地机器的 docker 容器中有一个 Jaeger 运行。
我创建了一个将跟踪数据发送到 Jaeger 的示例应用程序。当运行从IDE开始,数据就完美发送了。
我已经将我的应用程序容器化,现在我将它部署为一个容器,但只有当我使用 --link jaeger
到 link 两个容器(预期)时,通信才有效。
我的问题是:
有没有办法在我的 Dockerfile 中添加 --link
参数,这样我就不需要在 运行 docker run
命令时指定它?
如果您想保留两个单独的图像,则无法在 Docker 文件中执行此操作。您应该如何提前知道您要 link 的容器的 name/id?
以下是两种解决方案:
- 使用Docker撰写。这样,Docker会自动link所有的容器一起
- 创建一个
bridge
网络并添加所有你想要的容器到link 里面。这样,您就可以进行名称解析,并且可以使用名称联系每个容器
我建议您使用 netwoking,方法是创建:
docker network create [OPTIONS] NETWORK
然后 运行 使用 --network="network" 将 docker-compose 与 network 和 link 相互使用 示例:
version: '3'
services:
jaeger:
network:
-network1
other_container:
network:
-network1
networks:
network1:
external: true