Docker组成端口映射
我有一个docker-compose yml文件,如下所示
version: '2' services: nodejs: build: context: . dockerfile: DockerFile ports: - "4000:4000" links: - redis expose: - "6379" redis: build: context: . dockerfile: Dockerfile-redis
我的目标是转发nodejs-127.0.0.1端口6379到redis主机。 我已经可以从nodejs机器上ping redis了,但是这些端口没有映射。 试图公开选项,但没有机会。
如果要绑定到来自nodejs
容器的redis端口,则必须在redis
容器中公开该端口:
version: '2' services: nodejs: build: context: . dockerfile: DockerFile ports: - "4000:4000" links: - redis redis: build: context: . dockerfile: Dockerfile-redis expose: - "6379"
这个expose
标签可以让你公开端口,而不会将它们发布到主机上,但是它们会暴露在容器networking中。
https://docs.docker.com/compose/compose-file/#expose
ports
标记将映射主机端口与容器端口HOST:CONTAINER
需要指出的是,所有上述解决scheme都将端口映射到您计算机上的每个接口。 如果您拥有公共IP地址,或者您的机器在大型networking上拥有IP,则这并不理想。 您的应用程序可能会暴露给比您希望的更广泛的受众。
redis: build: context: dockerfile: Dockerfile-redis ports: - "127.0.0.1:3901:3901"
127.0.0.1
是映射到本机上的主机名localhost
的IP地址。 所以现在你的应用程序只能通过这个接口暴露出来,因为127.0.0.1
只能通过你的机器访问,所以你并没有把你的容器暴露给整个世界。
文档解释了这一点,可以在这里find: https : //docs.docker.com/compose/compose-file/#ports
如果要从主机(127.0.0.1)访问redis
,则必须使用ports
命令。
redis: build: context: . dockerfile: Dockerfile-redis ports: - "6379:6379"
- 使用docker-compose远程的byebug实例
- 在Dokku应用程序Wkhtmltopdf?
- Kubernetes本地集群中的networking和DNS与Docker
- 在Docker容器之间共享数据库的最佳实践是什么?
- Docker中的Clickhouse选项是experimental_allow_extended_storage_definition_syntax
- ENV 。编码返回#<Encoding:ASCII-8BIT>在生产时被分配一个Unicodestring
- docker:运行CD …没有按预期工作
- docker工人使用自签名证书运行可从外部访问的registry
- 在远程主机上使用pycharm在Docker容器中进行debugging