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

是否可以使用docker compose复制Kubernetes容器网络环境?,docker,kubernetes,containers,docker-compose,Docker,Kubernetes,Containers,Docker Compose,Kubernetes有一个吊舱的概念,容器可以在吊舱之间共享端口。例如,在同一个pod中,一个容器可以通过localhost:80访问另一个侦听端口80的容器 但是,在docker compose上,localhost指的是容器本身 是否有在docker上实现kubernetes网络配置的方法 本质上,我有一个kubernetes配置,我想在docker compose配置中重用它,而不必修改图像 使用该机制,您可以将容器连接在一起,然后通过localhost可以使用声明的端口。是的,您可以。您

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

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

是否有在docker上实现kubernetes网络配置的方法


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

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

是的,您可以。您运行服务,然后可以使用网络模式:服务:

编辑-1

因此,网络模式可能具有以下可能值

主办 服务:同一合成文件中的servicename 容器:已运行的外部容器的名称或id 在本例中,我使用了service:mainnetwork,因此需要启动mainnetwork


这也在Docker 17.06 ce上进行了测试。因此,我假设您使用的是较新的版本

我似乎已经通过在docker compose配置中的每个容器配置中添加网络模式:主机使其正常工作。

我认为这是不推荐的。是的,但在链接后面有一个示例,其中提到了链接。感谢您的回答。您是否可以添加有关此功能的其他信息?或者任何与文档相关的链接也会很有用。这有用吗?如果我在配置中使用相关的网络模式值,我会得到错误:对于nginx,无法启动服务nginx:无法加入非运行容器的网络:。
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