如何通过 docker CLI 将主机目录绑定到 docker 容器?

How to bind a host directory to docker container via docker CLI?

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

#!/bin/sh

IMPORTDIR=$(cd $(dirname [=12=]); 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--@

我解决了这个问题,因为通过将 /tmp 的真实路径添加到 docker 中的文件共享资源路径。 在我的 OS 版本中(无法评论更高版本),/tmp 是指向其真实路径 /private/tmp 的符号链接,一旦我将其添加到 FILE SHARING 资源,成功了。 我最近刚刚升级到 docker,因为这不是我以前在升级前遇到的问题