标签: docker-networking

从Docker容器内部,如何连接到本机的本地主机?

所以我在Docker容器中运行了一个Nginx,我在localhost上运行了一个mysql,我想从我的Nginx中连接到MySql.MySql在localhost上运行,而不是将端口暴露给外部世界,所以它绑定在localhost上,而不是绑定在机器的ip地址上.

有没有办法从这个docker容器中连接到这个MySql或localhost上的任何其他程序?

reverse-proxy nginx docker docker-networking

1176
推荐指数
24
解决办法
65万
查看次数

如何使用Docker暴露多个端口?

所以我有3个端口应该暴露在机器的界面上.是否可以使用Docker容器执行此操作?

docker docker-networking

404
推荐指数
5
解决办法
23万
查看次数

Docker Networking已禁用:警告:禁用IPv4转发.网络无法正常工作

主机中的容器"突然"失去与外部世界容器的连接.然而,一些主机被刷新,突然我们遇到以下情况:

  1. 主机可以与其他主机通信.
  2. 在主机中运行的容器无法与其他主机通信.

这是一个例子:

[root@pprdespap322 deploy]# ping ci.docker.company.net
PING pprdespap324.corp.company.net (10.137.55.22) 56(84) bytes of data.
64 bytes from pprdespap324.corp.company.net (10.137.55.22): icmp_seq=1 ttl=64 time=0.282 ms
64 bytes from pprdespap324.corp.company.net (10.137.55.22): icmp_seq=2 ttl=64 time=0.341 ms
^C
--- pprdespap324.corp.company.net ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.282/0.311/0.341/0.034 ms
Run Code Online (Sandbox Code Playgroud)

现在,从容器本身,我们无法ping同一主机:

[root@pprdespap322 deploy]# docker run -ti quay.io/coreos/registry ping ci.docker.company.net
WARNING: IPv4 forwarding is disabled. Networking will not work.
ping: unknown host ci.docker.company.net
Run Code Online (Sandbox Code Playgroud)

我第一次看到这个警告是在Docker的初始版本中......拥有Docker 1.9.1和1.10.3,如何解决这个问题?

docker docker-networking

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

Docker Networking - nginx:[emerg]主机在上游找不到

我最近开始迁移到Docker 1.9和Docker-Compose 1.5的网络功能,以替换使用链接.

到目前为止链接没有问题nginx通过docker-compose连接到位于一组不同服务器中的php5-fpm fastcgi服务器.最近,当我运行docker-compose --x-networking up我的php-fpm时,mongo和nginx容器启动,但nginx立即退出[emerg] 1#1: host not found in upstream "waapi_php_1" in /etc/nginx/conf.d/default.conf:16

但是,如果我在php和mongo容器运行时再次运行docker-compose命令(nginx退出),nginx启动并从那时起正常工作.

这是我的docker-compose.yml档案:

nginx:
  image: nginx
  ports:
    - "42080:80"
  volumes:
    - ./config/docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro

php:
  build: config/docker/php
  ports:
    - "42022:22"
  volumes:
    - .:/var/www/html
  env_file: config/docker/php/.env.development

mongo:
  image: mongo
  ports:
    - "42017:27017"
  volumes:
    - /var/mongodata/wa-api:/data/db
  command: --smallfiles
Run Code Online (Sandbox Code Playgroud)

这是我default.conf的nginx:

server {
    listen  80;

    root /var/www/test;

    error_log /dev/stdout debug;
    access_log /dev/stdout;

    location / {
        # try to serve file directly, fallback to app.php …
Run Code Online (Sandbox Code Playgroud)

nginx docker docker-compose docker-networking

74
推荐指数
7
解决办法
9万
查看次数

Docker命令中的--net = host选项真的有用吗?

我是Docker的初学者.我找不到任何关于此选项在docker run命令中做什么的明确描述,并且对它有点困惑.

我们可以使用它来访问在docker容器上运行的应用程序而无需指定端口吗?举个例子,如果我使用-p 8080:8080docker run命令中的选项运行通过端口8080中的docker镜像部署的webapp ,我知道我将不得不在Docker容器ip/theWebAppName上的8080端口上访问它.但我真的想不出--net=host选项如何运作的方式.

docker docker-networking

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

如何使openvpn与docker一起工作

我最近安装了隐私vpn,事实证明启用openvpn打破了docker.

当我尝试运行时,docker-compose up我得到以下错误

ERROR: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
Run Code Online (Sandbox Code Playgroud)

禁用vpn可以解决问题(但我不想禁用它).有没有办法让这两个和平共处?我使用debian jessie,我的openvpn有以下版本字符串

 OpenVPN 2.3.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Jun 26 2017
Run Code Online (Sandbox Code Playgroud)

很多人通过禁用openvpn"解决"了这个问题,所以我特别要求如何让这两个工作同时工作.

参考文献:

  1. /sf/answers/3176414601/
  2. /sf/answers/2974957541/

如果这有什么不同,我的VPN提供商是:https://www.ovpn.com/,这里是(有些编辑)配置文件:

client
dev tun

proto udp

remote host port
remote-random

mute-replay-warnings
replay-window 256

push "dhcp-option DNS 46.227.67.134"    
push "dhcp-option DNS 192.165.9.158"

remote-cert-tls server
cipher aes-256-cbc
pull

nobind
reneg-sec 432000
resolv-retry infinite

comp-lzo …
Run Code Online (Sandbox Code Playgroud)

debian openvpn docker docker-networking

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

docker-compose:网络和链接之间的差异

我正在学习码头工人.我看到这两个词让我感到困惑.例如,这里是一个定义了两个服务redis和的docker-compose web-app.

services:
  redis:
    container_name: redis
    image: redis:latest
    ports:
      - "6379:6379"
    networks:
      - lognet

  app:
    container_name: web-app
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "3000:3000"
    volumes:
      - ".:/webapp"
    links:
      - redis
    networks:
      - lognet

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

docker-compose文件定义名为lognet的网桥,所有服务都将连接到此网络.据我了解,此操作使这些服务可以看到其他人.那么为什么app服务仍然需要在上面的情况下链接到redis服务.

谢谢

docker docker-compose docker-networking

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

启动具有多个网络接口的容器

使用1.9,有没有办法直接用两个或多个网络接口启动容器?

您可以在使用"docker network connect"启动容器后执行此操作,但这意味着该进程已在运行,可能会错过新进程的创建.

docker docker-networking

31
推荐指数
5
解决办法
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万
查看次数

在docker-compose服务中没有互联网

我无法通过docker-compose容器访问外部网络.

考虑以下docker-compose文件:

version: '2'
services:
    nginx:
      image: nginx
Run Code Online (Sandbox Code Playgroud)

使用简单的docker run -it nginx bash我设法到达外部IP或Internet IP(ping www.google.com).

另一方面,如果我使用docker-compose并附加到容器,我无法访问外部IP地址/ DNS.

码头信息:

Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 1
Server Version: 1.12.1
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 7
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge null host overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: apparmor seccomp
Kernel Version: 4.4.0-38-generic
Operating System: Ubuntu …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose docker-networking

27
推荐指数
3
解决办法
9350
查看次数