Docker:将文件复制到卷后无法启动mssql Windows容器

时间:2018-07-31 13:11:49

标签: docker

按如下所示创建docker映像后:

PS> docker run -d -p 1433:1433 --name sql1 -v sql1data:C:/sqldata -e sa_password=MyPass123 -e ACCEPT_EULA=Y microsoft/mssql-server-windows-developer

我停止了我的容器并将备份文件复制到了我的卷中:

PS> docker cp .\DataBase.bak sql1:C:\data

此后,我无法再启动容器,错误消息如下:

Error response from daemon: container 5fe22f4ac151d7fc42541b9ad2142206c67b43579ec6814209287dbd786287dc encountered an error during Start: failure in a Windows system call: Le système de calcul s’est fermé de façon inattendue. (0xc0370106)
Error: failed to start containers: sql1

我可以启动和停止任何其他容器,只有将文件复制到卷中后,才会出现问题。 我正在使用Windows容器 我的docker版本是18.06.0-ce-win72(19098)

我发现的唯一解决方法是不将任何文件复制到我的容器卷中。

1 个答案:

答案 0 :(得分:0)

似乎是因为文件的所有权和权限。当您通过复制文件进行备份并将这些文件用于新的Docker Container时,MYSQL Daemon中的Docker Container会发现其文件的所有权和权限已更改。

我认为最好的方法是创建一个原始MySQL Docker Container并查看谁是该容器中备份文件的所有者(我想它必须是1000)。然后将备份文件的所有者更改为该用户ID,然后创建一个Container且映射到您的备份文件的Volumes