我正在管理一个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进程在运行,这是通常的吗? 希望我添加了所有必需的信息