这是我的情况。我们正在慢慢将我们的虚拟机从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地址。换句话说,我可以与外部网络进行通信,但外部不能与容器通信。无论是来自我的主机还是流浪汉。 也许我不清楚,码头集装箱没有运行在流浪汉身上。他们并肩奔跑。这就是为什么我认为在码头一侧需要做一些额外的网络工作才能让流浪者向泊坞员发送请求。 –