問(wèn)題描述
我正在嘗試從 docker-compose.yml
創(chuàng)建一個(gè) SQL Server 容器,但是當(dāng)我運(yùn)行它時(shí),它直接停止并出現(xiàn)一些錯(cuò)誤.注意:它在帶有 docker Preview 的 Apple M1 芯片上運(yùn)行
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:
我遇到的錯(cuò)誤:
sql-server-db |/opt/mssql/bin/sqlservr:0x4000000000000 以下保留地址空間中地址 0x40092b8000 的無(wú)效映射.可能的原因:
sql-server-db | /opt/mssql/bin/sqlservr: Invalid mapping of address 0x40092b8000 in reserved address space below 0x400000000000. Possible causes:
sql-server-db |1) 進(jìn)程(本身,或通過(guò)包裝器)啟動(dòng)自己的運(yùn)行環(huán)境,通過(guò) syscall setrlimit(2) 將堆棧大小限制設(shè)置為無(wú)限制;
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) 進(jìn)程(本身,或通過(guò)包裝器)調(diào)整自己的執(zhí)行域,并通過(guò)系統(tǒng)調(diào)用個(gè)性(2)標(biāo)記系統(tǒng)其遺留個(gè)性;
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 通過(guò)調(diào)整 sysctl 旋鈕 vm.legacy_va_layout 故意將系統(tǒng)設(shè)置為在舊版 VA 布局模式下運(yùn)行.
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
容器,因?yàn)?MSSQL DB 不支持ARM架構(gòu).我發(fā)現(xiàn)的唯一方法是使用支持 ARM 并且可以在 M1 上運(yùn)行的 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:
您將能夠使用用戶名:sa
、密碼:Passw@rd
和數(shù)據(jù)庫(kù):master
連接到此數(shù)據(jù)庫(kù).如果您想要其他數(shù)據(jù)庫(kù)名稱 - 您可以創(chuàng)建一個(gè)新的 使用 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
該數(shù)據(jù)庫(kù)具有與 MSSQL DB 相同的 API,因此它適用于 pyodbc
(M1 不支持)和 pymssql
庫(kù).
This database has the same API as MSSQL DB, so it works with pyodbc
(not supported on M1) and pymssql
libraries.
如果您在 M1 機(jī)器上本地使用它 - 考慮使用 pymssql
庫(kù)連接到 Azure SQL DB.這是我對(duì) pyodbc
問(wèn)題的回答 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
這篇關(guān)于Docker 連接 SQL Server 容器非零代碼:1的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!