영어로 읽기

다음을 통해 공유


빠른 시작: Docker에서 SQL Server linux 컨테이너 이미지 실행

명령 셸 선택

적용 대상: SQL Server - Linux

이 빠른 시작에서 Docker를 사용하여 SQL Server 2017(14.x) linux 컨테이너 이미지인 mssql-server-linux를 끌어와 실행합니다. 그런 다음 sqlcmd를 연결하여 첫 번째 데이터베이스를 만들고 쿼리를 실행합니다.

지원되는 플랫폼에 대한 자세한 내용은 SQL Server 2017 on Linux 릴리스 정보를 참조하세요.

경고

컨테이너를 중지하고 제거하면 컨테이너의 SQL Server 데이터가 영구적으로 삭제됩니다. 데이터 보존에 대한 자세한 내용은 컨테이너에서 백업 파일을 만들고 복사하거나 컨테이너 데이터 지속성 기술을 사용합니다.

이 빠른 시작에서는 SQL Server 2017(14.x) 컨테이너를 만듭니다. 다른 버전의 SQL Server 대한 Linux 컨테이너를 만들려는 경우 이 문서의 SQL Server 2019(15.x) 또는 SQL Server 2022(16.x) 버전을 참조하세요.

이 빠른 시작에서 Docker를 사용하여 SQL Server 2019(15.x) linux 컨테이너 이미지인 mssql-server-linux를 끌어와 실행합니다. 그런 다음 sqlcmd를 연결하여 첫 번째 데이터베이스를 만들고 쿼리를 실행합니다.

지원되는 플랫폼에 대한 자세한 내용은 SQL Server 2019 on Linux 릴리스 정보를 참조하세요.

경고

컨테이너를 중지하고 제거하면 컨테이너의 SQL Server 데이터가 영구적으로 삭제됩니다. 데이터 보존에 대한 자세한 내용은 컨테이너에서 백업 파일을 만들고 복사하거나 컨테이너 데이터 지속성 기술을 사용합니다.

이 빠른 시작에서는 SQL Server 2019(15.x) 컨테이너를 만듭니다. 다양한 버전의 SQL Server Linux 컨테이너를 만들려는 경우 이 문서의 SQL Server 2017(14.x) 또는 SQL Server 2022(16.x) 버전을 참조하세요.

이 빠른 시작에서 Docker를 사용하여 SQL Server 2022(16.x) Linux 컨테이너 이미지인 mssql-server-linux를 끌어와 실행합니다. 그런 다음 sqlcmd를 연결하여 첫 번째 데이터베이스를 만들고 쿼리를 실행합니다.

지원되는 플랫폼에 대한 자세한 내용은 SQL Server 2022 on Linux 릴리스 정보를 참조하세요.

경고

컨테이너를 중지하고 제거하면 컨테이너의 SQL Server 데이터가 영구적으로 삭제됩니다. 데이터 보존에 대한 자세한 내용은 컨테이너에서 백업 파일을 만들고 복사하거나 컨테이너 데이터 지속성 기술을 사용합니다.

이 빠른 시작에서는 SQL Server 2022(16.x) 컨테이너를 만듭니다. 다양한 버전의 SQL Server Linux 컨테이너를 만들려는 경우 이 문서의 SQL Server 2017(14.x) 또는 SQL Server 2019(15.x) 버전을 참조하세요.

이 이미지는 Ubuntu기반 Linux에서 실행 중인 SQL Server로 구성됩니다. Linux에서는 Docker Engine 1.8 이상에서 사용할 수 있습니다.

SQL Server 2022(16.x) CU 14 버전 및 SQL Server 2019 (15.x) CU 28 버전으로 시작하면 컨테이너 이미지에 new mssql-tools18 패키지가 포함됩니다. 이전 디렉터리 /opt/mssql-tools/bin가 단계적으로 중단되고 있습니다. Microsoft ODBC 18 도구의 새 디렉터리가 /opt/mssql-tools18/bin 최신 도구 제품과 일치합니다. 변경 내용 및 보안 향상에 대한 자세한 내용은 SQL Server 릴리스용 ODBC Driver 18.0을 참조하세요.

이 문서의 예제에서는 docker 명령을 사용합니다. 그러나 이러한 명령은 대부분 Podman에서도 유효합니다. Podman은 Docker 엔진과 비슷한 명령줄 인터페이스를 제공합니다. Podman에 대해 자세히 알아보세요.

중요

sqlcmd는 현재 컨테이너를 만들 때 MSSQL_PID 매개 변수를 지원하지 않습니다. 이 빠른 시작에서 sqlcmd 지침을 사용하는 경우 SQL Server의 Developer 버전을 사용하여 컨테이너를 만듭니다. CLI(명령줄 인터페이스) 명령을 사용하여 선택한 라이선스를 사용하여 컨테이너를 만듭니다. 자세한 내용은 SQL Server Linux 컨테이너 배포 및 연결을 참조하세요.

사전 요구 사항

  • 지원되는 모든 Linux 배포판에서 Docker Engine 1.8 이상 실행 자세한 내용은 사용자 Docker 설치를 참조하세요.

SQL Server Linux 컨테이너 이미지를 끌어와 실행합니다.

다음 단계를 시작하기 전에 이 문서의 맨 위에서 기본 셸(bash, PowerShell 또는 cmd)을 선택했는지 확인합니다.

이 문서에서는 bash 명령으로 sudo를 사용합니다. sudo을 사용하여 Docker를 실행하지 않으려는 경우 docker 그룹을 구성하고 해당 그룹에 사용자를 추가할 수 있습니다. 자세한 내용은 Linux용 설치 후 단계를 참조하세요.

레지스트리에서 컨테이너 끌어오기

Microsoft Container Registry에서 SQL Server 2017(14.x) Linux 컨테이너 이미지를 끌어옵니다.

Bash
sudo docker pull mcr.microsoft.com/mssql/server:2017-latest
PowerShell
docker pull mcr.microsoft.com/mssql/server:2017-latest
Windows 명령 프롬프트
docker pull mcr.microsoft.com/mssql/server:2017-latest

이 빠른 시작에서는 SQL Server 2017(14.x) 컨테이너를 만듭니다. 다양한 버전의 SQL Server Linux 컨테이너를 만들려는 경우 이 문서의 SQL Server 2019(15.x) 또는 SQL Server 2022(16.x) 버전을 참조하세요.

이전 명령은 최신 SQL Server 2017(14.x) linux 컨테이너 이미지를 끌어옵니다. 특정 이미지를 끌어오려면 콜론 및 mcr.microsoft.com/mssql/server:2017-GA-ubuntu 같은 태그 이름을 추가합니다. 사용 가능한 모든 이미지를 보려면 Microsoft 아티팩트 레지스트리를 참조하세요.

컨테이너 실행

Docker를 사용하여 linux 컨테이너 이미지를 실행하려면 bash 셸 또는 관리자 권한 PowerShell 명령 프롬프트에서 다음 명령을 사용할 수 있습니다.

중요

SA_PASSWORD 환경 변수는 사용되지 않습니다. 대신 MSSQL_SA_PASSWORD를 사용하세요.

Bash
sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" \
   -p 1433:1433 --name sql1 --hostname sql1 \
   -d \
   mcr.microsoft.com/mssql/server:2017-latest

PowerShell Core를 사용하는 경우 큰따옴표를 작은따옴표로 바꿉니다.

PowerShell
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2017-latest
Windows 명령 프롬프트
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2017-latest

암호는 SQL Server 기본 암호 정책이 따라야 합니다. 그렇지 않으면 컨테이너는 SQL 서버를 설정할 수 없어 작동이 중지됩니다. 기본적으로 암호는 8자 이상이어야 하며 대문자, 소문자, 0~9까지의 숫자 및 기호 네 가지 집합 중 세 집합의 문자를 포함해야 합니다. docker logs 명령을 사용하여 오류 로그를 검사할 수 있습니다.

기본적으로 이렇게 하면 개발자 버전의 SQL Server를 사용하여 컨테이너를 만듭니다. 컨테이너에서 프로덕션 버전을 실행하는 프로세스는 약간 다릅니다. 자세한 내용은 프로덕션 컨테이너 이미지 실행을 참조하세요.

다음 표에서는 이전 docker run 예제의 매개 변수에 대해 설명합니다.

매개 변수 설명
-e "ACCEPT_EULA=Y" 최종 사용자 사용권 계약 수락을 확인하기 위해 ACCEPT_EULA 변수를 어떤 값에 설정합니다. SQL Server 이미지에 대한 필수 설정입니다.
-e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" 8자 이상이고 암호 정책을 충족하는 자신만의 강력한 암호를 지정합니다. SQL Server 이미지에 대한 필수 설정입니다.
-e "MSSQL_COLLATION=<SQL_Server_collation>" 기본값 SQL_Latin1_General_CP1_CI_AS 대신 사용자 지정 SQL Server 데이터 정렬을 지정합니다.
-p 1433:1433 호스트 환경의 TCP 포트(첫 번째 값)를 컨테이너의 TCP 포트(두 번째 값)로 매핑합니다. 이 예제에서 SQL Server는 컨테이너의 TCP 1433에서 수신 대기하고 이 컨테이너는 호스트의 TCP 포트 1433에 공개됩니다.
--name sql1 컨테이너에 대해 임의로 생성된 이름보다는 사용자 지정 이름을 지정합니다. 둘 이상의 컨테이너를 실행하는 경우 이 동일한 이름을 다시 사용할 수 없습니다.
--hostname sql1 컨테이너 호스트 이름을 명시적으로 설정하는 데 사용됩니다. 지정하지 않으면 임의로 생성된 시스템 GUID인 컨테이너 ID가 기본값으로 사용됩니다.
-d 백그라운드(디먼)에서 컨테이너를 실행합니다.
mcr.microsoft.com/mssql/server:2017-latest SQL Server Linux 컨테이너 이미지입니다.

컨테이너 목록 보기기

  1. Docker 컨테이너를 보려면 docker ps 명령을 사용합니다.

    Bash
    sudo docker ps -a
    
    PowerShell
    docker ps -a
    
    Windows 명령 프롬프트
    docker ps -a
    

    다음 예제와 비슷한 내용이 출력됩니다.

    출력
    CONTAINER ID   IMAGE                                        COMMAND                    CREATED         STATUS         PORTS                                       NAMES
    d4a1999ef83e   mcr.microsoft.com/mssql/server:2017-latest   "/opt/mssql/bin/perm..."   2 minutes ago   Up 2 minutes   0.0.0.0:1433->1433/tcp, :::1433->1433/tcp   sql1
    
  2. STATUS열에 Up 상태를 표시하는 경우, SQL Server는 컨테이너에서 실행되며 PORTS 열의 지정된 포트에서 수신 대기합니다. SQL Server 컨테이너에 대한 STATUS 열이 Exited로 표시 되면 SQL Server Docker 컨테이너 문제 해결을 참조 하세요. SQL Server 오류 로그에 SQL Server is now ready for client connections. This is an informational message; no user action is required 메시지가 표시되면 서버에서 연결할 준비가 된 것입니다. 다음 명령을 사용하여 컨테이너 내에서 SQL Server 오류 로그를 검토할 수 있습니다.

    Bash
    sudo docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
    

    이전에 설명한 대로 --hostname 매개 변수는 컨테이너의 내부 이름을 사용자 지정 값으로 변경합니다. 이 값은 다음 Transact-SQL 쿼리에서 반환되는 이름입니다.

    SQL
    SELECT @@SERVERNAME,
        SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
        SERVERPROPERTY('MachineName'),
        SERVERPROPERTY('ServerName');
    

    --hostname--name을 같은 값에 설정하는 것은 대상 컨테이너를 쉽게 식별하는 데 유용한 좋은 방법입니다.

  3. 마지막 단계로 프로덕션 환경에서 SA 암호를 변경합니다. MSSQL_SA_PASSWORDps -eax 출력에 표시되고 동일한 이름의 환경 변수에 저장되기 때문입니다.

SQL Server Linux 컨테이너 이미지를 끌어와 실행합니다.

다음 단계를 시작하기 전에 이 문서의 맨 위에서 기본 셸(bash, PowerShell 또는 cmd)을 선택했는지 확인합니다.

이 문서에서는 bash 명령으로 sudo를 사용합니다. sudo을 사용하여 Docker를 실행하지 않으려는 경우 docker 그룹을 구성하고 해당 그룹에 사용자를 추가할 수 있습니다. 자세한 내용은 Linux용 설치 후 단계를 참조하세요.

레지스트리에서 컨테이너 끌어오기

Microsoft Container Registry에서 SQL Server 2019(15.x) Linux 컨테이너 이미지를 끌어옵니다.

Bash
docker pull mcr.microsoft.com/mssql/server:2019-latest
PowerShell
docker pull mcr.microsoft.com/mssql/server:2019-latest
Windows 명령 프롬프트
docker pull mcr.microsoft.com/mssql/server:2019-latest

이 빠른 시작에서는 SQL Server 2019(15.x) 컨테이너를 만듭니다. 다양한 버전의 SQL Server Linux 컨테이너를 만들려는 경우 이 문서의 SQL Server 2017(14.x) 또는 SQL Server 2022(16.x) 버전을 참조하세요.

이전 명령은 최신 SQL Server 2019(15.x) linux 컨테이너 이미지를 끌어옵니다. 특정 이미지를 끌어오려면 콜론 및 mcr.microsoft.com/mssql/server:2019-GA-ubuntu 같은 태그 이름을 추가합니다. 사용 가능한 모든 이미지를 보려면 Microsoft 아티팩트 레지스트리를 참조하세요.

컨테이너 실행

Docker를 사용하여 linux 컨테이너 이미지를 실행하려면 bash 셸 또는 관리자 권한 PowerShell 명령 프롬프트에서 다음 명령을 사용할 수 있습니다.

중요

SA_PASSWORD 환경 변수는 사용되지 않습니다. 대신 MSSQL_SA_PASSWORD를 사용하세요.

Bash
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" \
   -p 1433:1433 --name sql1 --hostname sql1 \
   -d \
   mcr.microsoft.com/mssql/server:2019-latest

PowerShell Core를 사용하는 경우 큰따옴표를 작은따옴표로 바꿉니다.

PowerShell
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2019-latest
Windows 명령 프롬프트
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2019-latest

암호는 SQL Server 기본 암호 정책이 따라야 합니다. 그렇지 않으면 컨테이너는 SQL 서버를 설정할 수 없어 작동이 중지됩니다. 기본적으로 암호는 8자 이상이어야 하며 대문자, 소문자, 0~9까지의 숫자 및 기호 네 가지 집합 중 세 집합의 문자를 포함해야 합니다. docker logs 명령을 사용하여 오류 로그를 검사할 수 있습니다.

기본적으로 이렇게 하면 개발자 버전의 SQL Server를 사용하여 컨테이너를 만듭니다. 컨테이너에서 프로덕션 버전을 실행하는 프로세스는 약간 다릅니다. 자세한 내용은 프로덕션 컨테이너 이미지 실행을 참조하세요.

다음 표에서는 이전 docker run 예제의 매개 변수에 대해 설명합니다.

매개 변수 설명
-e "ACCEPT_EULA=Y" 최종 사용자 사용권 계약 수락을 확인하기 위해 ACCEPT_EULA 변수를 어떤 값에 설정합니다. SQL Server 이미지에 대한 필수 설정입니다.
-e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" 8자 이상이고 암호 정책을 충족하는 자신만의 강력한 암호를 지정합니다. SQL Server 이미지에 대한 필수 설정입니다.
-e "MSSQL_COLLATION=<SQL_Server_collation>" 기본값 SQL_Latin1_General_CP1_CI_AS 대신 사용자 지정 SQL Server 데이터 정렬을 지정합니다.
-p 1433:1433 호스트 환경의 TCP 포트(첫 번째 값)를 컨테이너의 TCP 포트(두 번째 값)로 매핑합니다. 이 예제에서 SQL Server는 컨테이너의 TCP 1433에서 수신 대기하고 이 컨테이너는 호스트의 TCP 포트 1433에 공개됩니다.
--name sql1 컨테이너에 대해 임의로 생성된 이름보다는 사용자 지정 이름을 지정합니다. 둘 이상의 컨테이너를 실행하는 경우 이 동일한 이름을 다시 사용할 수 없습니다.
--hostname sql1 컨테이너 호스트 이름을 명시적으로 설정하는 데 사용됩니다. 지정하지 않으면 임의로 생성된 시스템 GUID인 컨테이너 ID가 기본값으로 사용됩니다.
-d 백그라운드(디먼)에서 컨테이너를 실행합니다.
mcr.microsoft.com/mssql/server:2019-latest SQL Server Linux 컨테이너 이미지입니다.

컨테이너 목록 보기기

  1. Docker 컨테이너를 보려면 docker ps 명령을 사용합니다.

    Bash
    docker ps -a
    
    PowerShell
    docker ps -a
    
    Windows 명령 프롬프트
    docker ps -a
    

    다음 예제와 비슷한 내용이 출력됩니다.

    출력
    CONTAINER ID   IMAGE                                        COMMAND                    CREATED         STATUS         PORTS                                       NAMES
    d4a1999ef83e   mcr.microsoft.com/mssql/server:2019-latest   "/opt/mssql/bin/perm..."   2 minutes ago   Up 2 minutes   0.0.0.0:1433->1433/tcp, :::1433->1433/tcp   sql1
    
  2. STATUS열에 Up 상태를 표시하는 경우, SQL Server는 컨테이너에서 실행되며 PORTS 열의 지정된 포트에서 수신 대기합니다. SQL Server 컨테이너에 대한 STATUS 열이 Exited로 표시 되면 SQL Server Docker 컨테이너 문제 해결을 참조 하세요. SQL Server 오류 로그에 SQL Server is now ready for client connections. This is an informational message; no user action is required 메시지가 표시되면 서버에서 연결할 준비가 된 것입니다. 다음 명령을 사용하여 컨테이너 내에서 SQL Server 오류 로그를 검토할 수 있습니다.

    Bash
    docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
    

    이전에 설명한 대로 --hostname 매개 변수는 컨테이너의 내부 이름을 사용자 지정 값으로 변경합니다. 이 값은 다음 Transact-SQL 쿼리에서 반환되는 이름입니다.

    SQL
    SELECT @@SERVERNAME,
        SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
        SERVERPROPERTY('MachineName'),
        SERVERPROPERTY('ServerName');
    

    --hostname--name을 같은 값에 설정하는 것은 대상 컨테이너를 쉽게 식별하는 데 유용한 좋은 방법입니다.

  3. 마지막 단계로 프로덕션 환경에서 SA 암호를 변경합니다. MSSQL_SA_PASSWORDps -eax 출력에 표시되고 동일한 이름의 환경 변수에 저장되기 때문입니다.

SQL Server Linux 컨테이너 이미지를 끌어와 실행합니다.

다음 단계를 시작하기 전에 이 문서의 맨 위에서 기본 셸(bash, PowerShell 또는 cmd)을 선택했는지 확인합니다.

이 문서에서는 bash 명령으로 sudo를 사용합니다. sudo을 사용하여 Docker를 실행하지 않으려는 경우 docker 그룹을 구성하고 해당 그룹에 사용자를 추가할 수 있습니다. 자세한 내용은 Linux용 설치 후 단계를 참조하세요.

레지스트리에서 컨테이너 끌어오기

Microsoft Container Registry에서 SQL Server 2022(16.x) Linux 컨테이너 이미지를 끌어옵니다.

Bash
docker pull mcr.microsoft.com/mssql/server:2022-latest
PowerShell
docker pull mcr.microsoft.com/mssql/server:2022-latest
Windows 명령 프롬프트
docker pull mcr.microsoft.com/mssql/server:2022-latest

이 빠른 시작에서는 SQL Server 2022(16.x) 컨테이너를 만듭니다. 다양한 버전의 SQL Server Linux 컨테이너를 만들려는 경우 이 문서의 SQL Server 2017(14.x) 또는 SQL Server 2019(15.x) 버전을 참조하세요.

이전 명령은 최신 SQL Server 2022(16.x) Linux 컨테이너 이미지를 끌어옵니다. 특정 이미지를 끌어오려면 콜론 및 mcr.microsoft.com/mssql/server:2022-GA-ubuntu 같은 태그 이름을 추가합니다. 사용 가능한 모든 이미지를 보려면 Microsoft 아티팩트 레지스트리를 참조하세요.

컨테이너 실행

Docker를 사용하여 linux 컨테이너 이미지를 실행하려면 bash 셸 또는 관리자 권한 PowerShell 명령 프롬프트에서 다음 명령을 사용할 수 있습니다.

중요

SA_PASSWORD 환경 변수는 사용되지 않습니다. 대신 MSSQL_SA_PASSWORD를 사용하세요.

Bash
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" \
   -p 1433:1433 --name sql1 --hostname sql1 \
   -d \
   mcr.microsoft.com/mssql/server:2022-latest

PowerShell Core를 사용하는 경우 큰따옴표를 작은따옴표로 바꿉니다.

PowerShell
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2022-latest
Windows 명령 프롬프트
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
   -p 1433:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2022-latest

암호는 SQL Server 기본 암호 정책이 따라야 합니다. 그렇지 않으면 컨테이너는 SQL 서버를 설정할 수 없어 작동이 중지됩니다. 기본적으로 암호는 8자 이상이어야 하며 대문자, 소문자, 0~9까지의 숫자 및 기호 네 가지 집합 중 세 집합의 문자를 포함해야 합니다. docker logs 명령을 사용하여 오류 로그를 검사할 수 있습니다.

기본적으로 이렇게 하면 개발자 버전의 SQL Server를 사용하여 컨테이너를 만듭니다. 컨테이너에서 프로덕션 버전을 실행하는 프로세스는 약간 다릅니다. 자세한 내용은 프로덕션 컨테이너 이미지 실행을 참조하세요.

다음 표에서는 이전 docker run 예제의 매개 변수에 대해 설명합니다.

매개 변수 설명
-e "ACCEPT_EULA=Y" 최종 사용자 사용권 계약 수락을 확인하기 위해 ACCEPT_EULA 변수를 어떤 값에 설정합니다. SQL Server 이미지에 대한 필수 설정입니다.
-e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" 8자 이상이고 암호 정책을 충족하는 자신만의 강력한 암호를 지정합니다. SQL Server 이미지에 대한 필수 설정입니다.
-e "MSSQL_COLLATION=<SQL_Server_collation>" 기본값 SQL_Latin1_General_CP1_CI_AS 대신 사용자 지정 SQL Server 데이터 정렬을 지정합니다.
-p 1433:1433 호스트 환경의 TCP 포트(첫 번째 값)를 컨테이너의 TCP 포트(두 번째 값)로 매핑합니다. 이 예제에서 SQL Server는 컨테이너의 TCP 1433에서 수신 대기하고 이 컨테이너는 호스트의 TCP 포트 1433에 공개됩니다.
--name sql1 컨테이너에 대해 임의로 생성된 이름보다는 사용자 지정 이름을 지정합니다. 둘 이상의 컨테이너를 실행하는 경우 이 동일한 이름을 다시 사용할 수 없습니다.
--hostname sql1 컨테이너 호스트 이름을 명시적으로 설정하는 데 사용됩니다. 지정하지 않으면 임의로 생성된 시스템 GUID인 컨테이너 ID가 기본값으로 사용됩니다.
-d 백그라운드(디먼)에서 컨테이너를 실행합니다.
mcr.microsoft.com/mssql/server:2022-latest SQL Server Linux 컨테이너 이미지입니다.

시스템 관리자 암호를 변경합니다.

SA 계정은 설치 중에 생성되는 SQL Server 인스턴스의 시스템 관리자입니다. SQL Server 컨테이너를 만든 후 컨테이너에서 echo $MSSQL_SA_PASSWORD를 실행하여 지정한 MSSQL_SA_PASSWORD 환경 변수를 검색할 수 있습니다. 보안을 위해 프로덕션 환경에서 SA 암호를 변경해야 합니다.

  1. SA 사용자에게 사용할 강력한 암호를 선택합니다.

  2. docker exec를 사용하여 sqlcmd를 실행하고 Transact-SQL을 사용하여 암호를 변경합니다. 다음 예제에서는 사용자 입력에서 이전 암호와 새 암호를 읽습니다.

    Bash
    docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd \
    -S localhost -U SA \
     -P "$(read -sp "Enter current SA password: "; echo "${REPLY}")" \
     -Q "ALTER LOGIN SA WITH PASSWORD=\"$(read -sp "Enter new SA password: "; echo "${REPLY}")\""
    
    PowerShell
    docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd `
       -S localhost -U SA -P "<YourStrong@Passw0rd>" `
       -Q "ALTER LOGIN SA WITH PASSWORD='<YourNewStrong@Passw0rd>'"
    
    Windows 명령 프롬프트
    docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd `
       -S localhost -U SA -P "<YourStrong@Passw0rd>" `
       -Q "ALTER LOGIN SA WITH PASSWORD='<YourNewStrong@Passw0rd>'"
    

    최신 버전의 sqlcmd는 기본적으로 안전합니다. 연결 암호화에 대한 자세한 내용은 Windows용 sqlcmd 유틸리티 및 Linux와 macOS용 sqlcmd를 사용하여 연결을 참조합니다. 연결이 성공하지 못하면 sqlcmd-No 옵션을 추가하여 암호화가 필수가 아니라 선택 사항임을 지정할 수 있습니다.

모범 사례로 sa 계정 사용 중지하기

중요

이후 단계에서는 이러한 자격 증명이 필요합니다. 여기에 입력한 사용자 ID와 암호를 적어 두세요.

설치 후 처음으로 sa 계정을 사용하여 SQL Server 인스턴스에 연결하는 경우 이러한 단계를 수행한 다음 즉시 sa 로그인을 보안 모범 사례로 사용하지 않도록 설정하는 것이 중요합니다.

  1. 새 로그인을 만들고 sysadmin 서버 역할의 멤버로 만듭니다.

  2. 만든 새 로그인을 사용하여 SQL Server 인스턴스에 연결합니다.

  3. 보안 모범 사례에 권장되는 대로 sa 계정을 사용하지 않도록 설정합니다.

컨테이너 목록 보기기

  1. Docker 컨테이너를 보려면 docker ps 명령을 사용합니다.

    Bash
    docker ps -a
    
    PowerShell
    docker ps -a
    
    Windows 명령 프롬프트
    docker ps -a
    

    다음 예제와 비슷한 내용이 출력됩니다.

    출력
    CONTAINER ID   IMAGE                                        COMMAND                    CREATED         STATUS         PORTS                                       NAMES
    d4a1999ef83e   mcr.microsoft.com/mssql/server:2022-latest   "/opt/mssql/bin/perm..."   2 minutes ago   Up 2 minutes   0.0.0.0:1433->1433/tcp, :::1433->1433/tcp   sql1
    
  2. STATUS열에 Up 상태를 표시하는 경우, SQL Server는 컨테이너에서 실행되며 PORTS 열의 지정된 포트에서 수신 대기합니다. SQL Server 컨테이너에 대한 STATUS 열이 Exited로 표시 되면 SQL Server Docker 컨테이너 문제 해결을 참조 하세요. SQL Server 오류 로그에 SQL Server is now ready for client connections. This is an informational message; no user action is required 메시지가 표시되면 서버에서 연결할 준비가 된 것입니다. 다음 명령을 사용하여 컨테이너 내에서 SQL Server 오류 로그를 검토할 수 있습니다.

    Bash
    docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
    

    이전에 설명한 대로 --hostname 매개 변수는 컨테이너의 내부 이름을 사용자 지정 값으로 변경합니다. 이 값은 다음 Transact-SQL 쿼리에서 반환되는 이름입니다.

    SQL
    SELECT @@SERVERNAME,
        SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
        SERVERPROPERTY('MachineName'),
        SERVERPROPERTY('ServerName');
    

    --hostname--name을 같은 값에 설정하는 것은 대상 컨테이너를 쉽게 식별하는 데 유용한 좋은 방법입니다.

SQL Server에 연결

다음 단계에서는 SQL Server에 연결하기 위해 컨테이너 내에서 SQL Server 명령줄 도구 sqlcmd 유틸리티를 사용합니다.

  1. docker exec -it 명령을 사용하여 실행 중인 컨테이너 내에서 대화형 bash 셸을 시작합니다. 다음 예에서 sql1는 컨테이너를 만들 때 --name 매개 변수가 지정한 이름입니다.

    Bash
    docker exec -it sql1 "bash"
    
    PowerShell
    docker exec -it sql1 "bash"
    
    Windows 명령 프롬프트
    docker exec -it sql1 "bash"
    
  1. 컨테이너 내부에 들어가면 전체 경로를 사용하여 sqlcmd에 로컬로 연결합니다.

    Bash
    /opt/mssql-tools/bin/sqlcmd -S localhost -U <userid> -P "<YourNewStrong@Passw0rd>"
    

    최신 버전의 sqlcmd는 기본적으로 안전합니다. 연결 암호화에 대한 자세한 내용은 Windows용 sqlcmd 유틸리티 및 Linux와 macOS용 sqlcmd를 사용하여 연결을 참조합니다. 연결이 성공하지 못하면 sqlcmd-No 옵션을 추가하여 암호화가 필수가 아니라 선택 사항임을 지정할 수 있습니다.

    명령줄에서 암호를 생략하여 입력하라는 메시지가 표시되도록 할 수 있습니다. 예시:

    Bash
    /opt/mssql-tools/bin/sqlcmd -S localhost -U <userid>
    
  1. 컨테이너 내부에 들어가면 전체 경로를 사용하여 sqlcmd에 로컬로 연결합니다.

    Bash
    /opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid> -P "<YourNewStrong@Passw0rd>"
    

    최신 버전의 sqlcmd는 기본적으로 안전합니다. 연결 암호화에 대한 자세한 내용은 Windows용 sqlcmd 유틸리티 및 Linux와 macOS용 sqlcmd를 사용하여 연결을 참조합니다. 연결이 성공하지 못하면 sqlcmd-No 옵션을 추가하여 암호화가 필수가 아니라 선택 사항임을 지정할 수 있습니다.

    명령줄에서 암호를 생략하여 입력하라는 메시지가 표시되도록 할 수 있습니다. 예시:

    Bash
    /opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid>
    
  1. 컨테이너 내부에 들어가면 전체 경로를 사용하여 sqlcmd에 로컬로 연결합니다.

    Bash
    /opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid> -P "<YourNewStrong@Passw0rd>"
    

    최신 버전의 sqlcmd는 기본적으로 안전합니다. 연결 암호화에 대한 자세한 내용은 Windows용 sqlcmd 유틸리티 및 Linux와 macOS용 sqlcmd를 사용하여 연결을 참조합니다. 연결이 성공하지 못하면 sqlcmd-No 옵션을 추가하여 암호화가 필수가 아니라 선택 사항임을 지정할 수 있습니다.

    명령줄에서 암호를 생략하여 입력하라는 메시지가 표시되도록 할 수 있습니다. 예시:

    Bash
    /opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid>
    
  1. 성공하면 sqlcmd 명령 프롬프트 1>이 표시됩니다.

데이터 만들기 및 쿼리

다음 섹션에서는 sqlcmd 및 Transact-SQL을 사용하여 새 데이터베이스를 만들고, 데이터를 추가하고, 쿼리를 실행하는 단계를 안내합니다.

새 데이터베이스 만들기

다음 단계에서는 TestDB라는 새 데이터베이스를 만듭니다.

  1. sqlcmd 명령 프롬프트에서 다음 Transact-SQL 명령을 붙여넣어 테스트 데이터베이스를 만듭니다.

    SQL
    CREATE DATABASE TestDB;
    
  2. 다음 줄에 서버에 있는 모든 데이터베이스의 이름을 반환하는 쿼리를 작성합니다.

    SQL
    SELECT Name from sys.databases;
    
  3. 앞의 두 명령은 즉시 실행되지 않았습니다. 앞의 명령을 실행하려면 새 줄에 GO를 입력합니다.

    SQL
    GO
    

데이터 삽입

다음으로 새 테이블 Inventory를 만들고 두 개의 새 행을 삽입합니다.

  1. sqlcmd 명령 프롬프트에서 컨텍스트를 새 TestDB 데이터베이스로 전환합니다.

    SQL
    USE TestDB;
    
  2. Inventory라는 새 테이블을 만듭니다.

    SQL
    CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT);
    
  3. 새 테이블에 데이터를 삽입합니다.

    SQL
    INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
    
  4. GO를 입력하여 위의 명령을 실행합니다.

    SQL
    GO
    

데이터 선택

이제 쿼리를 실행하여 Inventory 테이블에서 데이터를 반환합니다.

  1. sqlcmd 명령 프롬프트에서 Inventory 테이블에서 수량이 152보다 큰 행을 반환하는 쿼리를 입력합니다.

    SQL
    SELECT * FROM Inventory WHERE quantity > 152;
    
  2. 다음 명령을 실행합니다.

    SQL
    GO
    

sqlcmd 명령 프롬프트 종료

  1. sqlcmd 세션을 종료하려면 QUIT를 입력합니다.

    SQL
    QUIT
    
  2. 컨테이너에서 대화형 명령 프롬프트를 종료하려면 exit을 입력합니다. 컨테이너는 대화형 bash 셸을 종료한 후에도 계속 실행됩니다.

컨테이너 외부에서 연결

SQL 연결을 지원하는 모든 외부 Linux, Windows 또는 macOS 도구에서 Docker 컴퓨터에 있는 SQL Server 인스턴스에 연결할 수 있습니다. 외부 도구는 호스트 컴퓨터에 대한 IP 주소를 사용합니다.

다음 단계에서는 컨테이너 외부의 sqlcmd를 사용하여 컨테이너에서 실행되는 SQL Server에 연결합니다. 이 단계에서는 컨테이너 외부에 SQL Server 명령줄 도구가 이미 설치되어 있다고 가정합니다. 다른 도구를 사용할 때도 동일한 원칙이 적용되지만 연결 프로세스는 각 도구에 고유합니다.

  1. ifconfig 또는 ip addr을 사용하여 컨테이너의 호스트 머신에 대한 IP 주소를 찾습니다.

  2. 이 예제에서는 클라이언트 컴퓨터에 sqlcmd 도구를 설치합니다. 자세한 내용은 sqlcmd 유틸리리를 참조하거나 Linux에 SQL Server 명령줄 도구 sqlcmd 및 bcp 설치를 참조하세요.

  3. 컨테이너의 포트 1433에 매핑된 IP 주소와 포트를 지정하는 sqlcmd를 실행합니다. 이 예제에서는 포트는 호스트 머신의 포트 1433과 동일합니다. 호스트 컴퓨터에서 다른 매핑된 포트를 지정한 경우 여기에서 사용합니다. 또한 연결을 허용하려면 방화벽에서 적절한 인바운드 포트를 열어야 합니다.

    최신 버전의 sqlcmd는 기본적으로 안전합니다. 연결이 성공하지 못하고 버전 18 이상을 사용하는 경우 sqlcmd-No 옵션을 추가하여 암호화가 필수가 아니라 선택 사항임을 지정할 수 있습니다.

    Bash
    sudo sqlcmd -S <ip_address>,1433 -U <userid> -P "<YourNewStrong@Passw0rd>"
    
    PowerShell
    sqlcmd -S <ip_address>,1433 -U <userid> -P "<YourNewStrong@Passw0rd>"
    
    Windows 명령 프롬프트
    sqlcmd -S <ip_address>,1433 -U <userid> -P "<YourNewStrong@Passw0rd>"
    
  4. Transact-SQL 명령을 실행합니다. 완료되면 QUIT을 입력합니다.

SQL Server에 연결할 다른 일반적인 도구는 다음과 같습니다.

컨테이너 제거

이 자습서에 사용되는 SQL Server 컨테이너를 제거하려면 다음 명령을 실행합니다.

Bash
docker stop sql1
docker rm sql1
PowerShell
docker stop sql1
docker rm sql1
Windows 명령 프롬프트
docker stop sql1
docker rm sql1

Docker 데모

Docker에 대한 SQL Server linux 컨테이너 이미지를 사용 완료 후에 Docker를 사용하여 개발 및 테스트를 개선하는 방법을 알아 보고자 할 수도 있습니다. 다음 비디오는 연속 통합 및 배포 시나리오에서 Docker를 사용하는 방법을 보여줍니다.

SQL 설명서 작성에 참여하세요.

SQL 콘텐츠를 직접 편집할 수 있다는 것을 알고 계셨나요? 직접 편집하여 설명서를 개선하고, 페이지에 기여자로 참여하세요.

자세한 내용은 SQL Server 설명서에 기여하는 방법을 참조하세요