Mac环境下Docker部署的SQL Server 2019重启后命令行启动问题
Mac环境下重启后Docker版SQL Server命令行启动失败问题
我在Mac设备上下载了SQL Server Docker容器,首先通过终端执行以下命令拉取镜像:
docker pull mcr.microsoft.com/mssql/server:2019-latest
随后使用以下命令成功运行容器:
docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=MyStrongPassword' -p 1433:1433 --name sql2019_latest -d mcr.microsoft.com/mssql/server:2019-latest
但后续发现Mac从休眠状态恢复或者重启后,容器始终处于停止状态。执行docker images命令可以看到镜像存在,返回结果如下:
REPOSITORY TAG IMAGE ID CREATED SIZE mcr.microsoft.com/mssql/server 2019-latest 80bdc8efc889 4 weeks ago 1.55GB
执行docker ps命令没有返回任何运行中的容器:
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
我可以通过Docker Desktop启动容器,但希望掌握命令行启动的方法。先后尝试执行以下两条命令均失败:
docker run mcr.microsoft.com/mssql/server:2019-latest
返回提示需要同意SQL Server最终用户许可协议(EULA),内容如下:
SQL Server 2019 will run as non-root by default. This container is running as user mssql. To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216. The SQL Server End-User License Agreement (EULA) must be accepted before SQL Server can start. The license terms for this product can be downloaded from http://go.microsoft.com/fwlink/?LinkId=746388. You can accept the EULA by specifying the --accept-eula command line option, setting the ACCEPT_EULA environment variable, or using the mssql-conf tool.
随后我尝试执行:
docker run mcr.microsoft.com/mssql/server:2019-latest --accept-eula
返回exec参数错误,内容如下:
SQL Server 2019 will run as non-root by default. This container is running as user mssql. To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216. /opt/mssql/bin/permissions_check.sh: line 59: exec: --: invalid option exec: usage: exec [-cl] [-a name] [command [arguments ...]] [redirection ...]
请问我通过命令行启动容器的操作哪里存在问题?
*** 更新 ***
参照Jamie F的回复我完成了以下操作:首先执行docker ps -a命令查看所有容器,返回结果如下:
docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cac05db1aac7 mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/perm…" 38 minutes ago Exited (2) 38 minutes ago agitated_cohen 0327940b7393 mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/perm…" 39 minutes ago Exited (2) 39 minutes ago focused_mclean ad077064a63a mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/perm…" 41 minutes ago Exited (1) 41 minutes ago objective_torvalds c9809150f9d1 mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/perm…" 2 days ago Exited (255) 44 hours ago 0.0.0.0:1433->1433/tcp, :::1433->1433/tcp mssql2019
可以看到共有4个已停止的容器,其中3个为随机命名的冗余容器,1个名为mssql2019的为我之前创建的有效容器。执行docker start mssql2019命令即可成功启动容器:
docker start mssql2019
该容器名称与我最初配置的名称存在差异,但已满足我的使用需求。随后我执行以下命令清理了冗余容器:
docker rm cac05db1aac7 docker rm 0327940b7393 docker rm ad077064a63a
此时执行docker ps即可看到运行中的SQL Server容器:
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c9809150f9d1 mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/perm…" 3 days ago Up 4 minutes 0.0.0.0:1433->1433/tcp, :::1433->1433/tcp mssql2019
执行docker ps -a也仅保留1个有效容器实例:
docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c9809150f9d1 mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/perm…" 3 days ago Up 3 minutes 0.0.0.0:1433->1433/tcp, :::1433->1433/tcp mssql2019
内容的提问来源于stack exchange,提问作者Darren Guy
相关产品推荐
相关产品推荐

