Kubernetes有一个pods的概念,容器可以在它们之间共享端口。例如,在同一个pod中,容器可以通过localhost:80
访问另一个容器(在端口80上侦听)。
但是在docker-compose上,localhost
指的是容器本身。
无论如何在docker上实现kubernetes网络配置?
基本上我有一个kubernetes配置,我想在docker-compose配置中重用,而不必修改图像。
答案 0 :(得分:0)
是的,你可以。您运行服务然后可以使用network_mode: service:<nameofservice>
version: '3'
services:
mainnetwork:
image: alpine
command: tail -f /dev/null
mysql:
image: mysql
network_mode: service:mainnetwork
environment:
- "MYSQL_ROOT_PASSWORD=root"
mysqltest:
image: mysql
command: bash -c "sleep 10 && mysql -uroot -proot -h 127.0.0.1 -e 'CREATE DATABASE tarun;'"
network_mode: service:mainnetwork
修改-1 强>
因此network_mode
可能具有以下可能的值
在这种情况下,我使用了service:mainnetwork
,因此主网络需要启动。
此问题已经在Docker 17.06 ce
进行了测试。所以我假设您使用的是较新版本
答案 1 :(得分:0)
我似乎已经通过在我的docker-compose配置中的每个容器配置中添加network_mode: host
来实现它。
答案 2 :(得分:-1)
使用Docker Links机制,您可以将容器连接在一起,然后通过localhost可以使用声明的端口。