如何通过名称(而非IP)访问主机上的Docker容器?

时间:2019-06-17 16:03:28

标签: windows docker

我想在docker容器中运行MS SQL Server(docker图像:microsoft / mssql-server-windows-developer)。在主机和容器上使用Windows。之后,应该通过一个有用的名称从主机(使用SQL Management Studio)访问数据库(以便可以重复使用这些指令)。但是,泊坞窗会生成一个看似随机的IP,它的作用不大,尤其是在每次运行调用时都会重置时。

因此,我想给容器一个主机名,该主机名可以从主机上访问(例如,通过SQL Management Studio)。我想在这里避免仅使用IP,但是如果没有更好的解决方案,那就足够了。

在docker中创建网络无效,因为该功能显然仅在Linux下受支持。

-网络别名也失败。

run命令如下:

docker run -d -p 1433:1433 -e sa_password=1234qwerT -e ACCEPT_EULA=Y --name docker_sql microsoft/mssql-server-windows-developer

2 个答案:

答案 0 :(得分:0)

这与这里的问题非常相似:How to get a Docker container's IP address from the host?

我认为您可以通过两步过程来实现所需的目标:

  1. 作为docker run命令的一部分,获取容器的容器ID。
  2. 使用docker inspect获取容器的IP地址。

如果您确实不想使用IP地址,则可以始终将IP地址添加到您的主机文件中,但是仅将IP地址用作shell变量应该几乎一样有用。

例如,从bash shell:

CID=$(docker run -d ubuntu /bin/sh -c 'while /bin/true; do sleep 10 ; done')
IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $ID)

现在,您可以根据需要在脚本中使用$IP。 (将CID=...行替换为用来启动容器的任何docker run命令)。

答案 1 :(得分:0)

根据bluescores的评论并绊倒this related question,我尝试并验证了可以连接到 localhost -因此实际上不需要为container-sql配置名称-server或配置其IP。

对于其他应用程序,一般问题可能仍然存在,但是对于我当前想要实现的目标,本地主机就足够了。