标签: docker-network

Docker容器无法连接互联网

我在 AWS EC2 实例上运行 Docker 容器,Docker 容器通过 Docker 网络连接,该网络通过 etcd 集群进行复制。但所有容器都无法与外部连接。例如,如果我 ping 或 curl 主机,则 100% 的包丢失。etcd 网络通过 AWS 私有 IP 进行通信。

这是我的码头工人信息:

root@ip-10-0-127-34:/home# docker info
Containers: 3
 Running: 3
 Paused: 0
 Stopped: 0
Images: 9
Server Version: 17.05.0-ce
Storage Driver: devicemapper
 Pool Name: docker-202:1-2050903-pool
 Pool Blocksize: 65.54kB
 Base Device Size: 10.74GB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 4.554GB
 Data Space Total: 107.4GB
 Data Space Available: 102.8GB
 Metadata Space Used:sattler 6.922MB
 Metadata Space Total: …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 amazon-web-services docker etcd docker-network

2
推荐指数
1
解决办法
8324
查看次数

Docker docker-compose 多个网络

是否可以在 docker-compose 中拥有一个带有两个网络的 docker 容器,一个主机和另一个网桥?

docker docker-compose docker-network

2
推荐指数
1
解决办法
3338
查看次数

从一个容器到另一个容器的 SSH

我想创建一个容器网络,其中一个中央容器应该能够通过 ssh 连接到所有其他容器。通过 ssh 中央容器可以使用 Ansible 更改所有其他容器的配置。我知道不建议从一个容器 ssh 到另一个容器,我们可以使用 volume 进行数据共享,但这不适合我的用例。我能够从主机 ssh 到容器,但我不能从一个容器到另一个容器。

我正在使用的 Docker 文件是:

FROM ubuntu:16.04
RUN apt-get update
RUN apt-get install -y netcat ssh iputils-ping
EXPOSE 22
Run Code Online (Sandbox Code Playgroud)

Dockerfile 创建的镜像名为 ubuntu:v2

然后使用下面的命令我创建了两个容器 u1 和 u2

docker run -p 22 --rm -ti --name u1 ubuntu:v2 bash 
docker run -p 22 --rm -ti --name u2 ubuntu:v2 bash
Run Code Online (Sandbox Code Playgroud)

在容器中,我正在运行以下命令以在容器中创建用户。在 u1 容器中创建用户 u1,在 u2 容器中创建用户 u2

root@d0b0e44f7517:/# mkdir /var/run/sshd
root@d0b0e44f7517:/# chmod 0755 /var/run/sshd
root@d0b0e44f7517:/# /usr/sbin/sshd    
root@d0b0e44f7517:/#
root@d0b0e44f7517:/# useradd --create-home --shell /bin/bash --groups …
Run Code Online (Sandbox Code Playgroud)

ssh containers docker docker-networking docker-network

2
推荐指数
2
解决办法
7372
查看次数

如何使用 Docker compose 定义子网和 IP 地址并将其分配给容器

我认为我想做的事情很简单,但是通读有关网络的 docker compose 文档部分https://docs.docker.com/compose/networking/我发现没有有用的信息:(

我想创建 2 个子网(将来可能会更多 - 但现在我们只创建两个子网),并且能够手动将每个子网的 IP 地址分配给我在 docker-compose 中指定的容器。

如何才能做到这一点?

docker docker-compose docker-network

2
推荐指数
1
解决办法
5054
查看次数

无法连接到我的容器化 gRPC 服务器

我有一个具有给定文件夹结构的 git 存储库

grpc-repo
|---grpc-client (:8083)
|---grpc-server (:9000)
|---docker-compose.yml
|---Dockerfile
|---Dockerfile2
Run Code Online (Sandbox Code Playgroud)

现在,这些gRPC客户端-服务器项目正常无缝运行。但是,我需要将这个项目进行 dockerize。

下面给出的是我的docker-compose.yml

version: "3.3"

services:
  client:
    container_name: grpc-client
    build:
      dockerfile: Dockerfile
      context: .
    volumes:
      - .:/app
    ports:
      - 8083:8083
    networks:
      - my-network
  server:
    container_name: grpc-server
    build:
      dockerfile: Dockerfile2
      context: .
    volumes:
      - .:/app
    ports:
      - 9000:9000
    networks:
      - my-network

networks:
  my-network:
    driver: bridge
Run Code Online (Sandbox Code Playgroud)

对项目进行 docker 化后,我可以轻松连接到 gRPC 客户端。但是客户端无法连接到 gRPC 服务器。

它说 ...

rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing …
Run Code Online (Sandbox Code Playgroud)

go grpc docker-compose docker-network

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

Docker 每个网络端口映射

我正在寻找一种方法将同一端口映射到两个不同的端口,每个端口用于不同网络中的另一个容器。考虑以下 docker-compose 场景:

services:

  web:
    build: .
    ports:
      - "8080:8080"
    networks:
      Net1:
      Net2:

  serv1:
    image: tomcat:7.0.92-jre8
    networks:
      Net1:
  serv2:
    image: tomcat:7.0.92-jre8
    networks:
      Net2:
Run Code Online (Sandbox Code Playgroud)

现在我真正想做的是实际映射“web”服务端口 8080,以便 serv1 可以将其用作 8081,而 serv2 将其用作 8082。

这可能吗?

谢谢

docker docker-compose docker-network

0
推荐指数
1
解决办法
660
查看次数

Docker 容器连接到主机的 Kafka 抛出:错误:连接 ECONNREFUSED 127.0.0.1:9092

我有一个 Nodejs 应用程序容器化为 Linux 容器,它使用 kafka-node 库。

Kafka 在运行 Windows 的主机上运行:

  • 动物园管理员端口:2181
  • 卡夫卡经纪人端口:9092

我使用以下命令运行 nodejs 容器:

docker container run  --network host --name nm name:1.0
Run Code Online (Sandbox Code Playgroud)

为了连接主机的 kafka,我使用以下命令:

client = new kafka.KafkaClient({kafkaHost: "localhost:9092"});
Run Code Online (Sandbox Code Playgroud)

但这会抛出:

Error: connect ECONNREFUSED 127.0.0.1:9092
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1126:14) {
  errno: 'ECONNREFUSED',
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 9092
}
Run Code Online (Sandbox Code Playgroud)

当我将连接命令更改为:

client = new kafka.KafkaClient({kafkaHost: "host.docker.internal:9092"});
Run Code Online (Sandbox Code Playgroud)

我正进入(状态 :

TimeoutError: Request timed out after 30000ms
    at new TimeoutError (/usr/src/app/node_modules/kafka-node/lib/errors/TimeoutError.js:6:9)
    at Timeout._onTimeout (/usr/src/app/node_modules/kafka-node/lib/kafkaClient.js:491:14)
    at listOnTimeout (internal/timers.js:531:17)
    at processTimers (internal/timers.js:475:7) …
Run Code Online (Sandbox Code Playgroud)

node.js docker docker-network

0
推荐指数
1
解决办法
9377
查看次数