【问题标题】:CoreOS: dockerized mongo instance connection refused from another dockeried mongoCoreOS:dockerized mongo 实例连接被另一个 dockeried mongo 拒绝
【发布时间】:2016-09-12 14:40:13
【问题描述】:

我在我的 CoreOS 实例上设置了两个服务。简而言之,第一个是官方的 mongo 容器,另一个是尝试连接到“mongo”实例的自定义镜像。

  - name: living-mongo.service
    command: start
    enable: true
    content: |-
      [Unit]
      Description=Mongo
      Author=Living
      After=docker.service

      [Service]
      Restart=always
      RestartSec=10s
      ExecStartPre=-/usr/bin/docker stop mongo
      ExecStartPre=-/usr/bin/docker rm mongo
      ExecStart=/usr/bin/docker run --name mongo -p 27017:27017 --hostname mongo mongo:2.6
      ExecStop=/usr/bin/docker stop mongo
      ExecStopPost=-/usr/bin/docker rm mongo
  - name: living-mongo-seed.service
    command: start
    enable: true
    content: |-
      [Unit]
      Description=Mongo Seed
      Author=Living
      Requires=living-mongo.service
      After=living-mongo.service

      [Service]
      User=core
      Type=oneshot
      ExecStartPre=-/usr/bin/docker stop mongo-seed
      ExecStartPre=-/usr/bin/docker rm mongo-seed
      ExecStart=/usr/bin/docker run --name mongo-seed --link mongo:mongo registry.living-digital-way.com/mongo-qa:v1
      ExecStop=/usr/bin/docker stop mongo-seed

基本上,我首先启动 mongo 实例,然后尝试连接到它以提供一些数据:

# docker run --name mongo -p 27017:27017 --hostname mongo mongo:2.6
# docker run --name mongo-seed --link mongo:mongo registry.living-digital-way.com/mongo-qa:v1

当第二个服务启动时,它告诉我:

Sep 12 14:12:21 core-01 docker[1672]: Status: Downloaded newer image for registry.living-digital-way.com/mongo-qa:v1
Sep 12 14:12:21 core-01 docker[1672]: 2016-09-12T14:12:21.704+0000 warning: Failed to connect to 172.17.0.4:27017, reason: errno:111 Connection refused
Sep 12 14:12:21 core-01 docker[1672]: couldn't connect to [mongo] couldn't connect to server mongo:27017 (172.17.0.4), connection attempt failed
Sep 12 14:12:21 core-01 docker[1672]: 2016-09-12T14:12:21.728+0000 warning: Failed to connect to 172.17.0.4:27017, reason: errno:111 Connection refused
Sep 12 14:12:21 core-01 docker[1672]: couldn't connect to [mongo] couldn't connect to server mongo:27017 (172.17.0.4), connection attempt failed

系统启动后,我在shell上手动执行第二个服务:

docker run --name mongo-seed --link mongo:mongo registry.living-digital-way.com/mongo-qa:v1

而且效果很好。

我在做什么?

编辑

自定义 docker 镜像 Dockerfile:

FROM mongo:2.6
MAINTAINER Living Digital Way
COPY ./clients.init.json .
COPY ./users.init.json .
COPY ./import.sh .

RUN ["chmod", "+x", "./import.sh"] # -> only required, if import.sh is not executable
CMD ["./import.sh"]

import.sh:

mongoimport --host mongo --db lvdb --collection clients --type json --file ./clients.init.json --jsonArray --upsert --upsertFields client_id
mongoimport --host mongo --db lvdb --collection users --type json --file ./users.init.json --jsonArray --upsert --upsertFields username

【问题讨论】:

    标签: mongodb docker coreos


    【解决方案1】:

    您需要弄清楚连接断开的位置。

    首先检查 mongo 容器以确保公共 IP 正确。

    docker inspect mongo_container | egrep "IPAddress[^,]+"
    

    这将打印 IP 地址 - 确保这是正确的。

    将容器作为守护进程(如果还没有的话)

    docker run -it -d mongo
    

    获取容器 ID

    docker ps -a
    

    登录容器

    docker exec -it mongo_container_id bash
    

    安装 curl

    sudo apt-get update
    sudo apt-get curl
    

    Ping MongoDB 端点

    curl localhost:27017
    

    应该打印出来

    It looks like you are trying to access MongoDB over HTTP on the native driver port.
    

    control + d 退出容器。

    在容器仍在运行时运行相同的命令,但使用此命令中的 IP 而不是 localhost。

    docker inspect mongo_container | egrep "IPAddress[^,]+"
    
    curl 172.17.4.124:27017
    

    应该看到相同的输出

     It looks like you are trying to access MongoDB over HTTP on the native driver port.
    

    IP,端口,端口暴露,服务器,或者容器都没有起来。

    【讨论】:

    • 我刚刚测试了你写下的所有内容。一切都按照您的指示出现。因此,似乎一切正常。请记住,这个容器是在启动阶段启动的。
    • 向我们展示自定义 docker 镜像用于连接官方 mongo 容器的代码。如果你还没有硬编码在容器IP地址:mongodb_port
    • 我在帖子中添加了Dockerfile
    • 1.如果您要连接到 mongo:27017,请将其更改为 mondo 容器 IP:端口号,因此 "containder_ip:mongo_port" 2. 执行连接时,mongo 容器可能尚未启动,您可以站在 mondo 容器上然后等待在尝试连接之前位?我相信这可能是您的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 2016-04-15
    • 1970-01-01
    • 2021-09-18
    相关资源
    最近更新 更多