Docker连接SQL Server容器的非零代码:1 [英] Docker connect SQL Server container non-zero code: 1

查看:105
本文介绍了Docker连接SQL Server容器的非零代码:1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从 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:在0x400000000000以下的保留地址空间中,地址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 配置示例:

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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆