首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >本地主机不会将请求转发给Oracle Docker容器

本地主机不会将请求转发给Oracle Docker容器
EN

Stack Overflow用户
提问于 2016-12-16 16:10:45
回答 2查看 1.6K关注 0票数 3

我正试图从瓦格兰特转到码头(太晚了,不能再回去了)。

我已经删除了我的Oracle Vbox,我已经:

因此,我使用以下命令创建了Docker容器:

代码语言:javascript
复制
docker run -d -p 8080:8080 -p 1521:1521 sath89/oracle-12c

然后,我尝试使用无法到达的localhost:8080/em设置用户/权限等。

然后我打开运动学,看看是否能找到我的容器IP,在那里我发现我的Docker容器IP是192.x.x.x。

我能够登录到192.x.x.x:8080/em并安装我所需的设置。

当我指定停靠者ip: 192.x.x.x时,我的应用程序正在连接到Docker

但是它应该通过本地主机进行真正的连接,为什么本地主机:8080/em不能工作,为什么应用程序不能通过本地主机连接到Docker容器?

它适用于我的其他队友,我用的是mates。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-16 22:53:34

短答案

尽管我在评论中说了些什么,但事实证明,在试图连接到容器之前,您没有等待足够长的时间。显示日志以查看init何时完成,然后再试一次。

长答案

我把它弄成这样。首先,我启动了容器(为了简单起见,我只添加了--名称):

代码语言:javascript
复制
$> docker run -d -p 8080:8080 -p 1521:1521 --name oracle-12c sath89/oracle-12c

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

代码语言:javascript
复制
$> curl http://localhot:8080
curl: (52) Empty reply from server

这不起作用,所以我显示了容器的日志:

代码语言:javascript
复制
$> docker logs -f oracle-12c

它向我展示了容器启动所需的时间,包括以下日志:

代码语言:javascript
复制
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分钟才进入分局。然后它起作用了

票数 3
EN

Stack Overflow用户

发布于 2016-12-16 23:08:30

原来你用的是码头机器,而不是Mac的Docker。以下是您的选择:

保持码头机

如果您想要多个码头env(例如,每个项目一台),那么Docker机器是很棒的,但是它的缺点是迫使您使用守护进程ip连接容器,而不仅仅是localhost

不过,您可以编辑您的/etc/hosts文件以将别名添加到您的停靠守护进程ip中,以便更容易地使用。

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

切换到用于Mac的Docker

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

基本上,Docker机器(Docker Toolbox)和用于Mac的Docker可以共存。你是否真的想保留码头机器取决于你。Docker将使用Docker default env作为其唯一的env,可由localhost访问。

在本例中,在default env上启动oracle容器(即,一旦Docker运行,打开一个新的bash会话),当它初始化完毕后,您将能够从本地主机直接访问它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41188316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档