相关疑难解决方法(0)

如何通过名称而不是IP地址访问docker容器?

有没有办法可以使用名称而不是IP地址访问我的docker容器?

我听说过管道工程,我已经看到了docker的一些dns和主机名类型选项,但我仍然无法将所有内容拼凑在一起.

感谢您的时间.

我不确定这是否有用,但这是我到目前为止所做的:

  • 使用docker-machine和vmwarevsphere驱动程序安装docker container host
  • 用docker-compose启动所有服务
  • 我可以使用IP和端口从网络上的任何其他计算机上获取所有服务

我已经将DNS别名条目添加到我的专用网络DNS服务器,它与docker-machine使用的机器名称相匹配.但是,当计算机启动并连接到网络时,它始终会选择不同的IP地址.

我只是迷失在哪里解决这个问题:

  • 网络DNS服务器
  • docker-machine主机名
  • docker container hostname
  • 可能是所有这些的组合

我可能正在寻找类似这个问题的东西:

如何让docker使用我的网络路由器轻松地将dhcp ip分配给容器而不是管道?

任何大方向都会很棒......再次感谢!

dns hostname docker docker-compose docker-machine

34
推荐指数
3
解决办法
3万
查看次数

Docker 1.10通过主机的主机名访问容器

我有Docker版本1.10与嵌入式DNS服务.

我在docker-compose文件中创建了两个服务容器.它们可以通过主机名和IP相互访问,但是当我想从主机到达其中一个时,它不起作用,它只适用于IP但不适用于主机名.

那么,是否可以通过Docker 1.10中的主机名从主机访问docker容器,好吗?

更新:

泊坞窗,compose.yml

version: '2'
services:
    service_a:
        image: nginx
        container_name: docker_a
        ports:
           - 8080:80
    service_b:
        image: nginx
        container_name: docker_b
        ports:
            - 8081:80
Run Code Online (Sandbox Code Playgroud)

然后我按命令启动它: docker-compose up --force-recreate

当我跑:

  • docker exec -i -t docker_a ping -c4 docker_b - 有用
  • docker exec -i -t docker_b ping -c4 docker_a - 有用
  • ping 172.19.0.2- 它的工作原理(172.19.0.2docker_b的)
  • ping docker_a- 失败了

结果docker network inspect test_default

[
    {
        "Name": "test_default",
        "Id":   "f6436ef4a2cd4c09ffdee82b0d0b47f96dd5aee3e1bde068376dd26f81e79712",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": { …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose docker-networking

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

MongoDB docker 副本集连接错误“找不到主机”

我按照这个 SO 答案创建了一个本地 MongoDB 副本集。

docker-compose 文件:

services:
  mongo1:
    container_name: mongo1
    image: mongo:4.2
    ports:
      - 27017:27017
    restart: always
    command: ["--bind_ip_all", "--replSet", "rs" ]
  mongo2:
    container_name: mongo2
    image: mongo:4.2
    ports:
      - 27018:27017
    restart: always
    command: ["--bind_ip_all", "--replSet", "rs" ]
  mongo3:
    container_name: mongo3
    image: mongo:4.2
    ports:
      - 27019:27017
    restart: always
    command: ["--bind_ip_all", "--replSet", "rs" ]
  replica_set:
    image: mongo:4.2
    container_name: replica_set
    depends_on:
      - mongo1
      - mongo2
      - mongo3
    volume:
      - ./initiate_replica_set.sh:/initiate_replica_set.sh
    entrypoint: 
      - /initiate_replica_set.sh
Run Code Online (Sandbox Code Playgroud)

initiate_replica_set.sh 文件:

#!/bin/bash

echo "Starting replica set initialize" …
Run Code Online (Sandbox Code Playgroud)

mongodb docker replicaset docker-compose

8
推荐指数
1
解决办法
6364
查看次数

使用主机名而不是 localhost 访问 docker 容器

我正在使用 docker-compose 和 docker。一切都很好。但是从主机访问服务的唯一方法是通过http://localhost:port。我希望能够使用容器名称进行访问,例如:http://elastic:9020

It works well inside the docker. if one container needs to access another i can use the http://elastic:9020 but not from the Host. Of Course that i am exposing the ports and using port mapping and it works using localhost as i said. Docker

UPDATE: I was looking for a native solution without the needs of installing DNS Server or updating the .host file.

docker docker-compose

5
推荐指数
1
解决办法
2152
查看次数