問題描述
我正在嘗試從 docker-compose.yml
創建一個 SQL Server 容器,但是當我運行它時,它直接停止并出現一些錯誤.注意:它在帶有 docker Preview 的 Apple M1 芯片上運行
I'm trying to create a SQL Server container from a docker-compose.yml
but when I run it, it directly stops with some errors. Note: it's running on an Apple M1 chip with docker Preview
docker-compose.yml:
docker-compose.yml:
version: "3.7"
services:
sql-server-db:
container_name: sql-server-db
image: mcr.microsoft.com/mssql/server:2019-latest
ports:
- "1433:1433"
environment:
SA_PASSWORD: "ApplePassDockerConnect"
ACCEPT_EULA: "Y"
我遇到的錯誤:
sql-server-db |/opt/mssql/bin/sqlservr:0x4000000000000 以下保留地址空間中地址 0x40092b8000 的無效映射.可能的原因:
sql-server-db | /opt/mssql/bin/sqlservr: Invalid mapping of address 0x40092b8000 in reserved address space below 0x400000000000. Possible causes:
sql-server-db |1) 進程(本身,或通過包裝器)啟動自己的運行環境,通過 syscall setrlimit(2) 將堆棧大小限制設置為無限制;
sql-server-db | 1) the process (itself, or via a wrapper) starts-up its own running environment sets the stack size limit to unlimited via syscall setrlimit(2);
sql-server-db |2) 進程(本身,或通過包裝器)調整自己的執行域,并通過系統調用個性(2)標記系統其遺留個性;
sql-server-db | 2) the process (itself, or via a wrapper) adjusts its own execution domain and flag the system its legacy personality via syscall personality(2);
sql-server-db |3) sysadmin 通過調整 sysctl 旋鈕 vm.legacy_va_layout 故意將系統設置為在舊版 VA 布局模式下運行.
sql-server-db | 3) sysadmin deliberately sets the system to run on legacy VA layout mode by adjusting a sysctl knob vm.legacy_va_layout.
sql-server-db |
sql-server-db |
sql-server-db 退出,代碼為 1
sql-server-db exited with code 1
推薦答案
你不能真正在 M1 上使用 mcr.microsoft.com/mssql/server:2019-latest
容器,因為 MSSQL DB 不支持ARM架構.我發現的唯一方法是使用支持 ARM 并且可以在 M1 上運行的 Azure SQL 容器.
You cant really use mcr.microsoft.com/mssql/server:2019-latest
containers on M1 because MSSQL DB does not support ARM architecture. The only way I found - is to use Azure SQL container that supports ARM and can be run on M1.
這里是我的 docker-compose.yml
配置示例:
Here my docker-compose.yml
config example:
version: "3.9"
services:
# Database instance
mssql:
image: mcr.microsoft.com/azure-sql-edge:latest
volumes:
- events_mssql:/var/opt/mssql
ports:
- 1433:1433
environment:
- ACCEPT_EULA=1
- MSSQL_SA_PASSWORD=Passw@rd
volumes:
events_mssql:
您將能夠使用用戶名:sa
、密碼:Passw@rd
和數據庫:master
連接到此數據庫.如果您想要其他數據庫名稱 - 您可以創建一個新的 使用 SQL:CREATE DATABASE TestDB
You will be able to connect to this DB using username: sa
, password: Passw@rd
and database: master
. If you want other db name - you can create a new one using SQL: CREATE DATABASE TestDB
該數據庫具有與 MSSQL DB 相同的 API,因此它適用于 pyodbc
(M1 不支持)和 pymssql
庫.
This database has the same API as MSSQL DB, so it works with pyodbc
(not supported on M1) and pymssql
libraries.
如果您在 M1 機器上本地使用它 - 考慮使用 pymssql
庫連接到 Azure SQL DB.這是我對 pyodbc
問題的回答 https://stackoverflow.com/a/66919686/11515610
If you are using it locally on your M1 machine - consider using pymssql
library for connection to Azure SQL DB. Here my answer on issue with pyodbc
https://stackoverflow.com/a/66919686/11515610
這篇關于Docker 連接 SQL Server 容器非零代碼:1的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!