這是我的情況。我們正在慢慢將我們的虛擬機從Vagrant遷移到Docker,但我們大多仍然是Docker新手。我們的一些新系統的開發環境已經轉移到了Docker。我們有測試代碼,運行在舊Vagrant虛擬機上,用於與運行Django Restful API應用程序的Vagrant進行通信,以便運行集成測試。此Django API現在位於Docker容器中。所以現在我們需要在流浪者中運行的測試代碼能夠向docker中運行的API發出請求。碼頭集裝箱和流浪者都在主機(MacOS)上並排運行。我們使用Docker組合來初始化Docker容器,主要組成yaml文件如下所示。通過Docker阻止Docker通信IP地址
services:
django-api:
ports:
- "8080:8080"
build:
context: ..
dockerfile: docker/Dockerfile.bapi
extends:
file: docker-compose-base.yml
service: django-api
depends_on:
- db
volumes:
- ../:/workspace
command: ["tail", "-f", "/dev/null"]
env_file:
- ${HOME}/.pam_environment
environment:
- DATABASE_URL=postgres://postgres:[email protected]
- PGHOST=db
- PGPORT=5432
- PGUSER=postgres
- PGPASSWORD=password
- CLOUDAMQP_URL=amqp://rabbitmq
db:
ports:
- "5432"
extends:
file: docker-compose-base.yml
service: db
volumes:
- ./docker-entrypoint-initdb.d/init-postgress-db.sh:/docker-entrypoint-initdb.d/init-postgress-db.sh
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: django-api-dev
我想這是在漂浮的運行測試,仍然能夠與現在的碼頭工人正在運行的Django應用程序,類似於當它在運行它可以與API溝通的方式進行溝通流浪漢。我已經在Docker撰寫文件中嘗試了幾種不同類型的網絡配置,但唉網絡不是我的強項,我真的只是在黑暗中拍攝而已。
有沒有辦法配置我的碼頭集裝箱和/或我的流浪者,以便他們可以相互交談?我需要公開我的碼頭集裝箱的IP地址,以便我的流浪者可以訪問它。
任何幫助/提示/指導在這裏將不勝感激!
所以我的流浪者設置使用私人主機網絡'192.168.33.11'。由於我使用的是VirtualBox,因此我有一個額外的網絡適配器'vboxnet1'。 該機器如何與在碼頭集裝箱中運行的應用進行通信。接下來的步驟?更改我的碼頭撰寫文件並添加一個「網絡」部分? 然後創建網絡,例如? '泊塢窗網創建 --subnet = 192.168.33.0/24 --gateway = 192.168.33.1 -o父= vboxnet1 vboxnetdocker' 書面但只是在尋找在泊塢窗結束步驟,此項不工作流浪者與私人網絡建立後。 –
您可以使用'192.168.33.11'從機器ping虛擬機?如果是,那麼你只需要在運行碼頭容器'docker run -p 8080:8080 image'時映射端口。從你的機器192.168.33.11:8080將被訪問 –
是從運行的碼頭集裝箱我可以ping流浪的VM,但是我不能ping通碼頭集裝箱,因爲它在碼頭上運行'ifconfig'獲得IP地址。換句話說,我可以與外部網絡進行通信,但外部不能與容器通信。無論是來自我的主機還是流浪漢。 也許我不清楚,碼頭集裝箱沒有運行在流浪漢身上。他們並肩奔跑。這就是爲什麼我認爲在碼頭一側需要做一些額外的網絡工作才能讓流浪者向泊塢員發送請求。 –