相关疑难解决方法(0)

使用容器名称从主机访问docker容器

我正在开发一个服务,并使用docker compose来旋转postgres,redis,elasticsearch等服务.我有一个基于RubyOnRails的Web应用程序,可以从所有这些服务中进行写入和读取.

这是我的 docker-compose.yml

version: '2'

services:
  redis:
    image: redis:2.8
    networks:
      - frontapp

  elasticsearch:
    image: elasticsearch:2.2
    networks:
      - frontapp

  postgres:  
    image: postgres:9.5
    environment:
      POSTGRES_USER: elephant
      POSTGRES_PASSWORD: smarty_pants
      POSTGRES_DB: elephant
    volumes:
      - /var/lib/postgresql/data
    networks:
      - frontapp

networks:
  frontapp:
    driver: bridge
Run Code Online (Sandbox Code Playgroud)

我可以ping这个网络中的容器

$ docker-compose run redis /bin/bash
root@777501e06c03:/data# ping postgres
PING postgres (172.20.0.2): 56 data bytes
64 bytes from 172.20.0.2: icmp_seq=0 ttl=64 time=0.346 ms
64 bytes from 172.20.0.2: icmp_seq=1 ttl=64 time=0.047 ms
...
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.现在我想在我的主机上的rails应用程序上运行ruby但是能够使用url访问postgres实例,就像postgresql://username:password@postgres/database目前那样是不可能的

$ ping postgres
ping: unknown host …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

51
推荐指数
4
解决办法
4万
查看次数

docker 容器中的 DNS 解析

[环境]

  • CentOS 7
  • Docker 19.03.12,构建 48a66213fe

我有一个失败cerbot一个内(让我们加密客户端)泊坞窗容器。看起来acme-v02.api.letsencrypt.org不能从容器解析但可以从主机解析(最可能的原因)。我已经习惯了容器从主机的 DNS 参数继承的事实,但是对于 AWS EC2 实例,似乎有一些微妙之处

DNS 手动设置

[ec2-user@ip-172-31-32-243 ~]$ cat /etc/resolv.conf 
# Generated by NetworkManager
search eu-west-2.compute.internal
nameserver 172.31.0.2
Run Code Online (Sandbox Code Playgroud)

基于此和AWS 控制台中的一些元素,我尝试手动添加这些地址

docker run --dns 172.31.0.2 --dns 172.65.32.248
Run Code Online (Sandbox Code Playgroud)

(我可能没有找到合适的 DNS)

一个不雅的修复

使用主机的网络解决问题

docker run --network="host"
Run Code Online (Sandbox Code Playgroud)

但我只是不太明白为什么。是否与.net 中使用的网络接口有关--network="host"?以下是可用的:

[ec2-user@ip-172-31-32-243 ~]$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group …
Run Code Online (Sandbox Code Playgroud)

dns docker certbot

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

docker ×2

certbot ×1

dns ×1

docker-compose ×1