是否可以使用“Microsoft SQL Server”docker 容器创建卷?

yor*_*ram 18 sql-server docker

我在我的 Linux 机器上运行以下命令,并且想要附加一个卷,就像在 Mysql 中一样

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=12345678' -p 1433:1433 -d mcr.microsoft.com/mssql/server:2017-latest
Run Code Online (Sandbox Code Playgroud)

Seb*_*sch 27

您也可以在 Microsoft SQL Server 上附加卷,如Microsoft 文档中所述

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=12345678' -p 1433:1433 -v <host directory>/data:/var/opt/mssql/data -v <host directory>/log:/var/opt/mssql/log -v <host directory>/secrets:/var/opt/mssql/secrets -d mcr.microsoft.com/mssql/server:2017-latest
Run Code Online (Sandbox Code Playgroud)

使用上述命令将容器的三个文件夹挂载到主机目录

  • <host directory>/data:/var/opt/mssql/data
  • <host directory>/log:/var/opt/mssql/log
  • <host directory>/secrets:/var/opt/mssql/secrets

您还可以使用数据卷容器而不是安装的主机目录:

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=12345678' -p 1433:1433 -v sqlvolume:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest
Run Code Online (Sandbox Code Playgroud)

  • SA_PASSWORD 环境变量已弃用。请改用 MSSQL_SA_PASSWORD。 (2认同)

sae*_*iri 10

您可以将其用作docker-compose.yaml文件:

services:
  mssql:
    image: mcr.microsoft.com/mssql/server:2022-latest
    ports:
      - 1433:1433
    volumes:
      - ./data:/var/opt/mssql/data
      - ./log:/var/opt/mssql/log
      - ./secrets:/var/opt/mssql/secrets
    environment:
      - ACCEPT_EULA=Y
      - SA_PASSWORD=123456789
Run Code Online (Sandbox Code Playgroud)

然后,为了防止权限被拒绝错误,创建数据、日志和机密文件夹并更改它们的权限:

mkdir data && sudo chown 10001 data
mkdir log && sudo chown 10001 log
mkdir secrets && sudo chown 10001 secrets
Run Code Online (Sandbox Code Playgroud)

最后,用于docker-compose up -d启动容器。

  • 我认为您错过了第一卷映射中的“数据”。它应该是`./data:/var/opt/mssql/data`而不是`./data:/var/opt/mssql/` (2认同)