Kubernetes有一个pods的概念,容器可以在它们之间共享端口 . 例如,在同一个pod中,容器可以通过 localhost:80 访问另一个容器(侦听端口80) .
localhost:80
但是在docker-compose上, localhost 指的是容器本身 .
localhost
无论如何在docker上实现kubernetes网络配置?
基本上我有一个kubernetes配置,我想在docker-compose配置中重用,而不必修改图像 .
我似乎已经通过在docker-compose配置中的每个容器配置中添加 network_mode: host 来实现它 .
network_mode: host
是的你可以 . 你运行一个服务然后你可以使用 network_mode: service:<nameofservice>
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
Edit-1
所以 network_mode 可以有以下可能的值
network_mode
主持人
service :(同一个撰写文件中的servicename)
container :(已经运行的外部容器的名称或ID)
在这种情况下,我使用了 service:mainnetwork ,因此主网络需要启动 .
service:mainnetwork
此外,这已在 Docker 17.06 ce 上测试过 . 所以我假设您使用的是更新版本
Docker 17.06 ce
使用Docker Links机制,您可以将容器连接在一起,然后通过localhost可以使用声明的端口 .
3 回答
我似乎已经通过在docker-compose配置中的每个容器配置中添加
network_mode: host
来实现它 .是的你可以 . 你运行一个服务然后你可以使用
network_mode: service:<nameofservice>
Edit-1
所以
network_mode
可以有以下可能的值主持人
service :(同一个撰写文件中的servicename)
container :(已经运行的外部容器的名称或ID)
在这种情况下,我使用了
service:mainnetwork
,因此主网络需要启动 .此外,这已在
Docker 17.06 ce
上测试过 . 所以我假设您使用的是更新版本使用Docker Links机制,您可以将容器连接在一起,然后通过localhost可以使用声明的端口 .