本地主机不会将请求转发到Oracle泊坞员容器

问题描述:

我试图从流浪者切换到泊坞窗(太迟,现在不能回去)。本地主机不会将请求转发到Oracle泊坞员容器

我已经删除了我的预言已经VBOX,我有:

所以我使用这个命令创建了码头集装箱:

docker run -d -p 8080:8080 -p 1521:1521 sath89/oracle-12c 

然后我试图用localhost:8080/em设置用户/权限等,这是无法访问的。

然后我打开运动,看看我能找到我的容器IP,我发现那里,我的码头工人集装箱IP是192.xxx

我能够登录到192.xxx:8080/em和设置什么我需要设置。

而且我的应用程序连接到泊坞窗的时候我指定的搬运工IP:192.xxx

但应通过本地主机连接真的,为什么本地主机:8080/EM没有工作,为什么应用程序无法通过本地主机连接到码头容器?

它的工作对我的所有其他的队友,我为使用Mac OS塞拉利昂

+0

您确定您使用的是Docker for Mac,而不是Docker机器吗?因为您描述的是Docker机器的行为方式,另一个想法是您尝试过早连接,但看起来不太可能。 –

+0

@Alexandre FILLATRE谢谢你的回应,我不知道,你能告诉我怎么检查我有哪个码头工人? –

+0

如果你必须运行像docker-machine env xxx'这样的commande才能连接到docker守护进程,那么你使用的是Docker机器,否则,如果你用th启动Docker e Docker应用程序,您可以立即连接,然后使用Docker for Mac。 –

简短的回答

尽管我在我的评论说,事实证明,你没等多久在尝试连接到容器之前就已经足够了。显示日志以查看init何时完成,然后重试。

龙回答

我得到了它以这种方式工作。首先,我开始容器(我只加了简单起见,--name):

$> docker run -d -p 8080:8080 -p 1521:1521 --name oracle-12c sath89/oracle-12c 

然后我试图连接到容器,做一个简单的:

$> curl http://localhot:8080 
curl: (52) Empty reply from server 

看到没工作,所以我显示了容器的日志:

$> docker logs -f oracle-12c 

这表明我的容器需要时间来启动,用下面的日志:

ls: cannot access /u01/app/oracle/oradata: No such file or directory 
Database not initialized. Initializing database. 
Starting tnslsnr 
Copying database files 
1% complete 
3% complete 
11% complete 
18% complete 
37% complete 
Creating and starting Oracle instance 
40% complete 
45% complete 
50% complete 
55% complete 
56% complete 
60% complete 
62% complete 
Completing Database Creation 
66% complete 
70% complete 
73% complete 
85% complete 
96% complete 
100% complete 
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/xe/xe.log" for further details. 
Configuring Apex console 
Database initialized. Please visit http://#containeer:8080/em http://#containeer:8080/apex for extra configuration if needed 
Starting web management console 

PL/SQL procedure successfully completed. 

Starting import from '/docker-entrypoint-initdb.d': 
found file /docker-entrypoint-initdb.d//docker-entrypoint-initdb.d/* 
[IMPORT] /entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* 

Import finished 

Database ready to use. Enjoy! ;) 

我花了大约15分钟来初始化数据库。然后它工作

所以事实证明,你使用的是Docker Machine而不是Docker for Mac。这里是你的选择:

保持泊坞窗机

泊坞窗机是伟大的,如果你想多泊坞窗ENVS(例如,每个项目之一),但它的缺点强迫你使用守护ip来连接容器,而不仅仅是localhost

尽管如此,您可以编辑/etc/hosts文件以向您的docker守护程序ip添加别名,以便于使用。

守护进程IP可以在docker-machine env <your_env>找到。

切换到多克的Mac

如何做到这一点的描述如下:https://docs.docker.com/docker-for-mac/

基本上都泊坞窗机(泊坞窗工具箱)和码头工人的Mac可以共存。无论你真的想保持Docker机器是由你决定的。 Docker for Mac将使用Docker机器default env作为其唯一env,可通过localhost访问。

在这种情况下,在default env(即运行Docker for Mac时打开一个新的bash会话)启动oracle容器,当它初始化完毕后,您将能够直接从本地主机访问它。