需要您的帮助。
在19.3e上创建了两个容器,但当我同时打开这两个容器时发生了冲突。。。
docker run -d --name oracle1931 -p 1522:1521 -e ORACLE_PWD=password123 -v oradata:/opt/oracle/oradata test/oracledb:latest
docker run -d --name oracle1931 -p 1522:1521 -e ORACLE_PWD=password123 -v oradata:/opt/oracle/oradata test/oracledb:latest
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
47b792580c29 test/oracledb:latest "/bin/sh -c 'exec $O…" 3 minutes ago Up 3 minutes (health: starting) 0.0.0.0:1523->1523/tcp oracle193
88d4d0b326ae test/oracledb:latest "/bin/sh -c 'exec $O…" 3 hours ago Up About an hour (healthy) 0.0.0.0:1522->1521/tcp oracle1931
我的第二个容器无法处理以下内容,即使它被重定向到主机端口1522。想法?
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
Services Summary...
Service "ORCLCDB" has 1 instance(s).
Instance "ORCLCDB", status BLOCKED, has 1 handler(s) for this service...
如果我理解正确,则显示问题的第二个容器命名为"oracle193";(我认为,根据容器的健康检查状态和使用期限(,如果这一切都是真的,那是因为容器绑定到主机上的1523,并且正在侦听容器内的端口1523,这是错误的端口,oracle使用端口1521(这就是为什么名为"oracle1931"的容器显示为正常运行3小时的原因(再次因为尽管主机端口是1522,但是被监听的容器端口是1521。
在";Oracle Net Listener":
https://docs.oracle.com/en/database/oracle/oracle-database/19/rilin/port-numbers-and-protocols-of-oracle-components.html#GUID-D168F70C-BECE-4F9A-B616-D9103A35F1FF
这有助于解决问题,请记住,当打开容器并使用docker绑定到端口时,第一个端口在主机上,冒号之后的第二个端口是从容器内部侦听的端口。
参考docker官方文件:
https://docs.docker.com/config/containers/container-networking/
干杯