Kubernetes有一個容器的概念,容器可以在它們之間共享端口。例如,在同一個容器中,容器可以通過localhost:80
訪問另一個容器(在端口80上偵聽)。是否有可能用Docker複製Kubernetes容器網絡環境?
但是,在碼頭組成部分,localhost
指的是容器本身。
是否有無法在Docker上實現kubernetes網絡配置?
基本上我有一個kubernetes配置,我想在docker-compose配置中重用,而不必修改圖像。
Kubernetes有一個容器的概念,容器可以在它們之間共享端口。例如,在同一個容器中,容器可以通過localhost:80
訪問另一個容器(在端口80上偵聽)。是否有可能用Docker複製Kubernetes容器網絡環境?
但是,在碼頭組成部分,localhost
指的是容器本身。
是否有無法在Docker上實現kubernetes網絡配置?
基本上我有一個kubernetes配置,我想在docker-compose配置中重用,而不必修改圖像。
我似乎已經通過將network_mode: host
添加到我的docker-compose配置中的每個容器配置中來實現它。
使用Docker Links機制,您可以將容器連接在一起,然後聲明的端口將通過本地主機提供。
是的,你可以。你運行一個服務,然後你可以使用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
測試。所以我假設你使用的是更新版本
欣賞答案。你能否添加關於這個功能被調用的額外信息?或者任何相關的文檔鏈接也是有用的。 –
這是否工作?如果我在配置中使用了相關的'network_mode'值,'ERROR:for nginx'無法啓動服務nginx:無法加入非運行容器的網絡:'。 –
@ChrisStryczynski,請檢查編輯 –
我認爲這已被棄用。 –
沒錯,但是在鏈接之後,有一個例子說明了如何通過鏈接提到。 – webdizz