2017-08-28 68 views
0

Kubernetes有一個容器的概念,容器可以在它們之間共享端口。例如,在同一個容器中,容器可以通過localhost:80訪問另一個容器(在端口80上偵聽)。是否有可能用Docker複製Kubernetes容器網絡環境?

但是,在碼頭組成部分,localhost指的是容器本身。

是否有無法在Docker上實現kubernetes網絡配置?

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

回答

0

我似乎已經通過將network_mode: host添加到我的docker-compose配置中的每個容器配置中來實現它。

-1

使用Docker Links機制,您可以將容器連接在一起,然後聲明的端口將通過本地主機提供。

+0

我認爲這已被棄用。 –

+0

沒錯,但是在鏈接之後,有一個例子說明了如何通過鏈接提到。 – webdizz

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

  • 主機
  • 服務:在相同的(服務名撰寫文件)
  • 容器:(外部容器的名稱或標識alre ady正在運行)

在這種情況下,我使用了service:mainnetwork,所以主網絡需要啓動。

此外,這已經在Docker 17.06 ce測試。所以我假設你使用的是更新版本

+0

欣賞答案。你能否添加關於這個功能被調用的額外信息?或者任何相關的文檔鏈接也是有用的。 –

+0

這是否工作?如果我在配置中使用了相關的'network_mode'值,'ERROR:for nginx'無法啓動服務nginx:無法加入非運行容器的網絡:'。 –

+0

@ChrisStryczynski,請檢查編輯 –

相關問題