【问题标题】:Docker Container exit immediately after runningDocker Container 运行后立即退出
【发布时间】:2018-01-24 06:44:29
【问题描述】:

我是 Docker 新手,在检查了类似的 SO 问题后尝试解决该问题,但没有成功。所以请不要将其标记为重复。

问题:

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

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

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

当尝试类似的 SO 链接 link

$ 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.

当试图杀死引用link1的进程时

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 检查日志。它们显示了什么?
  • 我执行了相同的命令,所以图像是从hub.docker.com/r/microsoft/mssql-server-linux 提取的,它对我来说运行良好。你有足够的内存吗?
  • @lvthillo,我已经添加了日志。我设置了 4 GB 内存。
  • 嗯,当我检查你的运行命令时,它包含一个错误的引用,但这可能是因为复制/粘贴。也许尝试使用docker rm -fv container-id 删除此容器,然后通过重新键入命令或从 docker hub 复制它再次尝试?
  • @lvthillo 我会试试的

标签: sql-server macos docker


【解决方案1】:

这对我有用:

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。

【讨论】:

    【解决方案2】:

    您的密码(例如Technocrat123)不符合complexity requirements。因此,请尝试添加非字母数字字符,例如感叹号 (!)。其次,使用双引号而不是单引号。

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

    【讨论】:

    【解决方案3】:

    您正在运行的命令中有错字:

    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  
    

    【讨论】:

    • 有什么区别?
    • 感谢您的回复,能否请您重写命令?我找不到错字
    【解决方案4】:

    我在 Mac 上运行 Docker 并尝试安装 sql-server。最初,我粘贴了此处提供的命令 - https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker 更改密码。然后我会尝试运行 docker 镜像。这给了我所说的错误“这是一个评估版......”。在运行上述链接上的命令后,我做了一个附加步骤。我再次以 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镜像就可以使用了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-23
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      • 2017-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多