我想在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
答案 0 :(得分:0)
这与这里的问题非常相似:How to get a Docker container's IP address from the host?
我认为您可以通过两步过程来实现所需的目标:
docker run
命令的一部分,获取容器的容器ID。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。
对于其他应用程序,一般问题可能仍然存在,但是对于我当前想要实现的目标,本地主机就足够了。