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

我试图从stream浪汉转到docker工(现在太晚了,现在不能回去)。

我已经删除了我的oracle vbox,我有:

  • 为mac安装docker
  • 拉sath89 / oracle-12c
  • 按照https://hub.docker.com/r/sath89/oracle-12c/上的说明操作

所以我使用这个命令创build了Docker容器:

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

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

然后我打开Kinematic查看是否可以find我的容器IP,我在那里发现我的docker容器IP是192.xxx

我能够login到192.xxx:8080/em,并设置我需要设置。

而我的应用程序连接到docker时,我指定dockerIP:192.xxx

但它应该是真正连接通过本地主机,为什么localhost:8080 / EM不工作,为什么应用程序无法通过本地连接到docker容器?

它为所有其他队友工作,我使用mac OS Sierra

简短的回答

尽pipe我在我的评论中说过,但事实certificate,在尝试连接到容器之前,您没有等太久。 显示日志以查看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分钟来启动分贝。 然后它正在工作

所以事实certificate,你使用的是Docker Machine而不是Docker for Mac。 这里是你的select:

保持Docker机器

如果你想要多个docker envs(例如,每个项目一个),Docker机器是非常好的,但是它有强迫你使用守护进程ip来连接容器而不是localhost的缺点。

不过,你可以编辑你的/etc/hosts文件,为你的docker守护进程ip添加一个别名,以方便使用。

守护进程IP可以通过docker-machine env <your_env>

切换到Docker for Mac

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

基本上,Docker机器(Docker Toolbox)和Docker for Mac都可以共存。 无论你真的想保持Docker机器是由你决定的。 Docker for Mac将使用Docker机器default env作为其唯一的env,可由localhost访问。

在这种情况下,在default env上启动你的oracle容器(例如,一旦Docker for Mac正在运行,打开一个新的bash会话),当它初始化的时候,你将能够直接从你的localhost访问它。