dockerfile如何将SQL Server作为本地主机公开?
按照microsoft / mssql-server-linux 页面上的文档,它提供了以下命令来运行Docker容器。
docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Test!234' -p 1433:1433 -d --name sqllinux microsoft/mssql-server-linux
这工作正常,我可以打开SSMS并连接到localhost
与凭据:
用户名:sa
密码:testing!234
之后我想要做的是创build一个Dockerfile
,它将创build图像,将执行相同的事情:
FROM microsoft/mssql-server-linux ENV ACCEPT_EULA Y ENV SA_PASSWORD Test!234 EXPOSE 1433 1433
然后我运行docker build . -t sqltestfile
docker build . -t sqltestfile
后面跟着docker run sqltestfile
。
容器似乎开始很好,通过Kitematic,我可以看到(看起来像我)与运行其他图像相同的输出,但我无法通过SSMS使用localhost
连接到这个图像。
什么需要改变Dockerfile
以我期望的方式工作(可以通过localhost
使用SSMS连接到容器实例)?
任何帮助将不胜感激!
您仍然需要使用-p
显式发布端口。 从文档 :
EXPOSE指令通知Docker在运行时侦听指定的networking端口。 您可以指定端口是侦听TCP还是UDP,如果未指定协议,则默认为TCP。
EXPOSE指令不实际发布端口。 它用作构build映像的人和运行容器的人之间的文档types,关于哪个端口打算发布。 要在运行容器时实际发布端口,请使用docker run上的-p标志来发布和映射一个或多个端口,或使用-P标志来发布所有公开的端口并将它们映射到高阶端口。