Docker容器运行后立即退出

6

我是一名 Docker 新手,尝试查看了类似的 SO 问题并尝试解决,但没有成功。请不要将其标记为重复。

问题:

容器创建并运行后立即退出。

我尝试使用以下命令运行 mssql 实例:

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Technocrat123’ -p 1433:1433 -d microsoft/mssql-server-linux  

在尝试类似于此链接的操作时:

$ docker run -t -d --name microsoft/mssql-server-linux 0adcdf822722

我遇到了以下错误,

Unable to find image '0adcdf822722:latest' locally
docker: Error response from daemon: repository 0adcdf822722 not found: does not exist or no pull access.

当尝试结束与链接1相关的进程时,

Kill: illegal process id: PID

我正在使用一台Mac电脑。提前感谢您。
编辑: 在运行命令后记录日志。
 docker logs 0adcdf822722

它显示

This is an evaluation version.  There are [160] days left in the evaluation period.
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.

但在运行命令中,我已经设置了“ACCEPT_EULA=Y”。


当您的容器存在(在执行第一个命令 docker run -e 'ACC... 后),执行 docker ps -a 命令以查看已停止的容器,并使用 docker logs container-id 命令检查日志。它们显示了什么? - lvthillo
我已经执行了相同的命令,所以镜像是从 https://hub.docker.com/r/microsoft/mssql-server-linux/ 拉取的,并且在我的机器上正常运行。你的内存是否足够? - lvthillo
@lvthillo,我已添加日志。我已设置4GB内存。 - user2695433
1
嗯,当我检查你的运行命令时,发现其中包含一个错误的引号,但这可能是由于复制/粘贴造成的。也许尝试使用 docker rm -fv container-id 删除此容器,然后重新输入命令或从 Docker Hub 复制它再试一次? - lvthillo
@lvthillo 我会尝试的。 - user2695433
@lvthillo 非常感谢您指出这个错别字。 - user2695433
4个回答

11

您的密码(如Technocrat123)不符合复杂性要求。请尝试添加一个非字母数字字符,例如感叹号(!)。其次,请使用双引号而不是单引号。

要检查错误,请运行:docker logs ID (其中ID是来自docker ps的容器ID)。


谢谢!对我来说,这就是问题所在。我遵循了这个指南:https://database.guide/how-to-install-sql-server-on-an-m1-mac-arm64/ ,那个人使用了“bigStrongPwd”作为密码,这是有意故意设置的太弱的密码。 - goidelg
谢谢!对我来说,复杂性要求也是个问题。我计划在图像内更改密码,所以有点奇怪 - 还奇怪的是日志中没有任何指示。谢谢! - Jim T
在 Linux Mint 上作为主机运行时,我经过 2 小时的故障排除终于解决了问题,原来是我的密码太弱了,导致进程立即以代码 1 退出。非常感谢! - Chestera

8
这对我有效:

这对我有效:

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Sprpwd1234" --name sql_server_dev -p 1433:1433 -d store/microsoft/mssql-server-linux:2017-GA 

使用双引号 (") 而非单引号 (')。在 Windows 10 上运行 Docker。


1
我在Mac上运行Docker并尝试安装sql-server。最初,我复制了此处提供的命令 - https://learn.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker 并更改了密码。然后我尝试运行docker镜像。这给了我所说的错误"This is an evaluation version....."。在运行上面链接中的命令之后,我进行了额外的步骤。我再次运行它,作为docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=Very_StrongPassword' -p 1401:1433 microsoft/mssql-server-linux:2017-latest。这启动了sql-server的安装。此安装大约需要20-30分钟。然后,docker镜像就可以使用了。

1

你正在运行的命令中有一个拼写错误:

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Technocrat123’ -p 1433:1433 -d microsoft/mssql-server-linux  

"

'Technocrat123' 应该是 'Technocrat123'。错别字在末尾: ’ vs '。

正确的命令是:

"
docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Technocrat123' -p 1433:1433 -d microsoft/mssql-server-linux  

有什么区别吗? - user2695433
谢谢您的回复,您能否重新编写这个命令吗?我找不到打字错误。 - user2695433

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接