是否可以使用docker compose复制Kubernetes容器网络环境?

时间:2017-08-28 09:50:04

标签: docker kubernetes containers docker-compose

Kubernetes有一个pods的概念,容器可以在它们之间共享端口。例如,在同一个pod中,容器可以通过localhost:80访问另一个容器(在端口80上侦听)。

但是在docker-compose上,localhost指的是容器本身。

无论如何在docker上实现kubernetes网络配置?

基本上我有一个kubernetes配置,我想在docker-compose配置中重用,而不必修改图像。

3 个答案:

答案 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可能具有以下可能的值

  • 宿主
  • 服务:(同一个撰写文件中的服务名称)
  • container :(已经运行的外部容器的名称或ID)

在这种情况下,我使用了service:mainnetwork,因此主网络需要启动。

此问题已经在Docker 17.06 ce进行了测试。所以我假设您使用的是较新版本

答案 1 :(得分:0)

我似乎已经通过在我的docker-compose配置中的每个容器配置中添加network_mode: host来实现它。

答案 2 :(得分:-1)

使用Docker Links机制,您可以将容器连接在一起,然后通过localhost可以使用声明的端口。