使用docker run无法从其他容器访问容器

时间:2019-01-16 12:01:43

标签: docker jdbc docker-compose

这里是情况:

当我使用

在本地运行MySQL 5.7 docker映像(docker-compose)时
container_name: test-mysql-docker  

它工作正常。我在另一个Docker容器中的JDBC程序可以通过container_name访问MySQL容器。

但是,当我将该MySQL 5.7映像推送到我的docker hub帐户,然后尝试在单独的命令窗口中运行它时,它不起作用(请参阅下面使用的运行命令)。问题:在另一个Docker容器中运行的JDBC程序无法访问它,并给出“尝试3次”错误消息。

因此,我认为我的以下run命令中的语法不正确。从下面的run命令下载MySQL之后,我可以从docker外部访问MySQL容器,这样它就启动了,并且我需要的数据在那里。因此,我在想,只是container_name错了,但在这里找专家给我一些想法。

这是我的run命令,可以成功关闭MySQL 5.7映像(可在docker外部访问,但不能从另一个docker容器访问,就像使用“ docker-compose up”在本地运行时一样)

$ docker run -it -p 3307:3306 --name test-mysql-docker -v /Users/.../ZipCodeLookup.sql:/docker-entrypoint-initdb.d/ZipCodeLookup.sql -e MYSQL_ROOT_PASSWORD=thepass docker-account/mysql:5.7 

我假设要从docker hub运行docker容器,我需要手动指定所有参数作为上述命令(使用docker-compose时不必这样做)。

有人能看到上面的运行命令出了什么问题或可能丢失了什么,该命令会使另一个容器无法通过JDBC使用“ test-mysql-docker”作为容器名称来访问MySQL容器?

非常感谢

1 个答案:

答案 0 :(得分:0)

假设您正确使用dmesg作为从JDBC访问数据库的URL,则需要将它们附加到相同的自定义网络。默认网桥网络不起作用。

test-mysql-docker:3306