0

我正在尝试将主机目录绑定到 mssql docker 容器并具有以下 [bash] 脚本:

#!/bin/sh

IMPORTDIR=$(cd $(dirname $0); pwd)
DATADIR=${DATADIR:-/tmp/db/}

set -xe

docker run --detach \
       -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=Passw0rd" -e "MSSQL_PID=Express" \
       -v ${DATADIR}:/mnt/db \
       -v ${IMPORTDIR}:/mnt/importing \
       -p 127.0.0.1:1433:1433 \
       --name mssql-db \
       mcr.microsoft.com/mssql/server:latest
sleep 30

docker exec mssql-db /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P Passw0rd -Q "
RESTORE FILELISTONLY FROM DISK = '/mnt/db/mssql_db.bak'"

我在运行脚本时收到以下错误消息:

RESTORE FILELISTONLY FROM DISK = '\''/mnt/db/mssql_db.bak'\'''
Msg 3201, Level 16, State 2, Server cd17fd41ce82, Line 2
Cannot open backup device '/mnt/db/mssql_db.bak'. Operating system error 2(The system cannot find the file specified.).
Msg 3013, Level 16, State 1, Server cd17fd41ce82, Line 2
RESTORE FILELIST is terminating abnormally.

当我登录到容器时,我看到确实存在于主机目录中的文件不在容器的目录中。

以下是我的设置信息:

操作系统: Mac Os 10.13.6
Docker 版本:文件权限(在主机上): -rw -r--r--@
docker引擎细节截图

4

1 回答 1

0

我解决了这个问题,因为通过将真实路径添加到/tmpdocker 中的文件共享资源路径。在我的操作系统版本中(不能对更高版本发表评论),一旦我将它添加到文件共享资源中,它/tmp就是一个指向它的真实路径的符号链接,它就起作用了。我刚刚升级到 docker,因为这不是我之前在升级前遇到的问题/private/tmp

于 2020-11-24T13:36:08.150 回答