无法从Docker主机内部通过域名或IP地址访问Docker容器

时间:2019-12-20 15:46:48

标签: docker

我正在管理一个LAMP Centos 7 Linux服务器,该服务器具有bout 8个docker容器,这些容器已经在运行 每个Docker容器都拥有一个运行在特定主机名或特定域名上的特定应用程序网站 容器在“ 172.22.1.0/16”专用网络中具有IP地址 以下是“ route”命令的输出:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 em1
default         gateway         0.0.0.0         UG    101    0        0 em2
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.22.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-xxxx01
172.30.11.0     0.0.0.0         255.255.255.0   U     0      0        0 br-xxxx02
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 em1
192.168.1.0     0.0.0.0         255.255.255.0   U     101    0        0 em2

主要问题是我可以ping容器ip,但是当尝试使用“ lynx”访问容器域或ip时,我没有进入域或ip内容 没有为容器完成端口映射&它们已经在运行&我只需要能够从Docker主机访问域 这是“ docker ps”命令的输出:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
xxxxxxxxxxxx        xxxxx               "xxxx"                   from xx ago         Up xx hours         80/tcp              conatiner_name

上一个示例是可用容器之一的快照,例如,容器ip为“ 172.22.1.6”,域为“ domain.tld”,运行容器时未指定端口映射 现在我可以ping其IP地址,但同时我无法使用以下任何命令访问域:

lynx domain.tld
lynx http://172.22.1.6
lynx http://172.22.1.6:80

这是“ ifconfig”命令的输出:

    br-xxxx01: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 172.22.0.1  netmask 255.255.0.0  broadcast 172.22.255.255
    inet6 fe80::42:e7ff:fe55:e8ae  prefixlen 64  scopeid 0x20<link>
    ether 02:42:e7:55:e8:ae  txqueuelen 0  (Ethernet)
    RX packets 89055  bytes 74862487 (71.3 MiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 87943  bytes 237947470 (226.9 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    br-xxxx02: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
    inet 172.30.11.1  netmask 255.255.255.0  broadcast 172.30.11.255
    ether 02:42:ba:1f:2f:a5  txqueuelen 0  (Ethernet)
    RX packets 0  bytes 0 (0.0 B)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 0  bytes 0 (0.0 B)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
    inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
    ether 02:42:00:05:56:20  txqueuelen 0  (Ethernet)
    RX packets 0  bytes 0 (0.0 B)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 0  bytes 0 (0.0 B)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    em1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.1.1  netmask 255.255.255.0  broadcast 192.168.1.255
    inet6 fe80::b077:517c:3a32:7de7  prefixlen 64  scopeid 0x20<link>
    ether 4c:d9:8f:5c:57:d2  txqueuelen 1000  (Ethernet)
    RX packets 29703966  bytes 10774759723 (10.0 GiB)
    RX errors 0  dropped 126  overruns 0  frame 0
    TX packets 30866165  bytes 12215171426 (11.3 GiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    device interrupt 17

    em2: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
    inet 192.168.1.21  netmask 255.255.255.0  broadcast 192.168.1.255
    inet6 fe80::ff40:7795:e6b9:2b7  prefixlen 64  scopeid 0x20<link>
    ether 4c:d9:8f:5c:57:d3  txqueuelen 1000  (Ethernet)
    RX packets 0  bytes 0 (0.0 B)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 0  bytes 0 (0.0 B)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    device interrupt 18

    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
    inet 127.0.0.1  netmask 255.0.0.0
    inet6 ::1  prefixlen 128  scopeid 0x10<host>
    loop  txqueuelen 1000  (Local Loopback)
    RX packets 825376  bytes 47381835 (45.1 MiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 825376  bytes 47381835 (45.1 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

我该如何解决这个问题? 任何帮助将不胜感激 谢谢大家

更多说明 这是用于运行我拥有的容器之一的命令:

docker run --name=hostname_portal --hostname=hostname.example.com --env=portal=hostname --env=REDIS_HOST=redis_server --env=APP_DOMAIN=example.com --env=PORTAL_URL=example.tld --env=APP_URL=https://hostname.example.com --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env='PHPIZE_DEPS=autoconf               dpkg-dev file            g++             gcc             libc-dev                make            pkg-config              re2c' --env=PHP_INI_DIR=/usr/local/etc/php --env=APACHE_CONFDIR=/etc/apache2 --env=APACHE_ENVVARS=/etc/apache2/envvars --env=PHP_EXTRA_BUILD_DEPS=apache2-dev --env='PHP_EXTRA_CONFIGURE_ARGS=--with-apxs2 --disable-cgi' --env='PHP_CFLAGS=-fstack-protector-strong -fpic -fpie -O2' --env='PHP_CPPFLAGS=-fstack-protector-strong -fpic -fpie -O2' --env='PHP_LDFLAGS=-Wl,-O1 -Wl,--hash-style=both -pie' --env='GPG_KEYS=xxxxxxxxxxxxxxx' --env=PHP_VERSION=7.2.23 --env=PHP_URL=https://www.php.net/get/php-7.2.23.tar.xz/from/this/mirror --env=PHP_ASC_URL=https://www.php.net/get/php-7.2.23.tar.xz.asc/from/this/mirror --env=PHP_SHA256=xxxxxxxxxxxxxx --env=PHP_MD5= --volume=/var/www/example_com_appp:/var/www/html:rw --volume=/var/www/html --network=docker_network01 --expose=80 --restart=unless-stopped --label com.docker.compose.version="1.18.0" --label com.docker.compose.config-hash="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" --label com.docker.compose.oneoff="False" --label com.docker.compose.service="hostname" --label com.docker.compose.project="docker" --label com.docker.compose.container-number="1" --detach=true versionxxx:v1 apache2-foreground

这是“ docker network ls”命令的输出,该命令显示了承载我无法从主节点到达的所有容器的网桥(PS:我删除了其他自定义和默认的docker bridges网桥):

NETWORK ID          NAME                  DRIVER              SCOPE
xxxxxxxxxx          docker_network01      bridge              local

以下是“ docker network inspect docker_network01”命令输出的子集:

{
    "Name": "docker_network01",
    "Id": "xxxxxxxxxxx,
    "Created": "xxxxxxx",
    "Scope": "local",
    "Driver": "bridge",
    "EnableIPv6": false,
    "IPAM": {
        "Driver": "default",
        "Options": null,
        "Config": [
            {
                "Subnet": "172.22.1.1/16",
                "Gateway": "172.22.0.1"
            }
        ]
    },
    "Internal": false,
    "Attachable": true,
    "Ingress": false,
    "ConfigFrom": {
        "Network": ""
    },

任何帮助将不胜感激 我也注意到没有docker-proxy进程在运行,这是通常的吗? 希望我添加了所有必需的信息

0 个答案:

没有答案