빠른 시작: Docker에서 SQL Server 컨테이너 이미지 실행Quickstart: Run SQL Server container images with Docker

적용 대상:Applies to: 예SQL ServerSQL Server(지원되는 모든 버전)yesSQL ServerSQL Server (all supported versions) - Linux적용 대상:Applies to: 예SQL ServerSQL Server(지원되는 모든 버전)yesSQL ServerSQL Server (all supported versions) - Linux

참고

아래에 표시된 예제는 docker.exe를 사용하지만 대부분의 명령은 Podman에서도 작동합니다.The examples shown below use the docker.exe but most of these commands also work with Podman. 이것도 Docker 컨테이너 엔진과 비슷한 CLI를 제공합니다.It provides the CLI similar to Docker container Engine. Podman에 대한 자세한 내용은 여기를 참조하세요.You can read more about podman here.

이 빠른 시작에서 Docker를 사용하여 SQL Server 2017 컨테이너 이미지인 mssql-server-linux를 끌어와 실행합니다.In this quickstart, you use Docker to pull and run the SQL Server 2017 container image, mssql-server-linux. 그런 다음, sqlcmd로 연결하여 첫 번째 데이터베이스를 만들고 쿼리를 실행합니다.Then connect with sqlcmd to create your first database and run queries.

SQL Server 2019 컨테이너를 실행하려면 이 문서의 SQL Server 2019 버전을 참조하세요.If you want to run SQL Server 2019 containers, see the SQL Server 2019 version of this article.

참고

SQL Server 2019 CU3부터 Ubuntu 18.04가 지원됩니다.Starting with SQL Server 2019 CU3, Ubuntu 18.04 is supported.

이 빠른 시작에서 Docker를 사용하여 SQL Server 2019 컨테이너 이미지인 mssql-server를 끌어와 실행합니다.In this quickstart, you use Docker to pull and run the SQL Server 2019 container image, mssql-server. 그런 다음, sqlcmd로 연결하여 첫 번째 데이터베이스를 만들고 쿼리를 실행합니다.Then connect with sqlcmd to create your first database and run queries.

이 빠른 시작에서는 SQL Server 2019 컨테이너를 만듭니다.This quickstart creates SQL Server 2019 containers. SQL Server 2017 컨테이너를 만들려는 경우 이 문서의 SQL Server 2017 버전을 참조하세요.If you prefer to create SQL Server 2017 containers, see the SQL Server 2017 version of this article.

이 이미지는 Ubuntu 18.04 기반 Linux에서 실행되는 SQL Server로 구성되어 있습니다.This image consists of SQL Server running on Linux based on Ubuntu 18.04. Linux 또는 Mac/Windows용 Docker에서 Docker Engine 1.8+와 함께 사용할 수 있습니다.It can be used with the Docker Engine 1.8+ on Linux or on Docker for Mac/Windows. 이 빠른 시작에서는 특히 SQL Server on Linux 이미지 사용에 중점을 둡니다.This quickstart specifically focuses on using the SQL Server on Linux image. Windows 이미지는 다루지 않지만, mssql-server-windows-developer Docker 허브 페이지에서 자세히 알아볼 수 있습니다.The Windows image is not covered, but you can learn more about it on the mssql-server-windows-developer Docker Hub page.

필수 조건Prerequisites

2017 컨테이너 이미지를 끌어와 실행Pull and run the 2017 container image

다음 단계를 시작하기 전에 이 문서의 맨 위에서 기본 셸(bash, PowerShell 또는 cmd)을 선택했는지 확인합니다.Before starting the following steps, make sure that you have selected your preferred shell (bash, PowerShell, or cmd) at the top of this article.

  1. Microsoft Container Registry에서 SQL Server 2017 Linux 컨테이너 이미지를 끌어옵니다.Pull the SQL Server 2017 Linux container image from Microsoft Container Registry.

    sudo docker pull mcr.microsoft.com/mssql/server:2017-latest
    
    docker pull mcr.microsoft.com/mssql/server:2017-latest
    
    docker pull mcr.microsoft.com/mssql/server:2017-latest
    

    SQL Server 2019 컨테이너를 실행하려면 이 문서의 SQL Server 2019 버전을 참조하세요.If you want to run SQL Server 2019 containers, see the SQL Server 2019 version of this article.

    이전 명령은 최신 SQL Server 2017 컨테이너 이미지를 끌어옵니다.The previous command pulls the latest SQL Server 2017 container image. 특정 이미지를 끌어오려면 콜론 및 태그 이름(예를 들어 mcr.microsoft.com/mssql/server:2017-GA-ubuntu)을 추가합니다.If you want to pull a specific image, you add a colon and the tag name (for example, mcr.microsoft.com/mssql/server:2017-GA-ubuntu). 사용 가능한 모든 이미지를 보려면 mssql-server Docker 허브 페이지를 참조하세요.To see all available images, see the mssql-server Docker hub page.

    이 문서의 bash 명령에는 sudo를 사용합니다.For the bash commands in this article, sudo is used. macOS에서는 sudo가 필요하지 않을 수도 있습니다.On macOS, sudo might not be required. Linux에서 sudo로 Docker를 실행하지 않으려는 경우 docker 그룹을 구성하고 해당 그룹에 사용자를 추가할 수 있습니다.On Linux, if you do not want to use sudo to run Docker, you can configure a docker group and add users to that group. 자세한 내용은 Linux용 설치 후 단계를 참조하세요.For more information, see Post-installation steps for Linux.

  2. Docker를 사용하여 컨테이너 이미지를 실행하려면 bash 셸(Linux/macOS) 또는 상승된 권한 PowerShell 명령 프롬프트에서 다음 명령을 사용할 수 있습니다.To run the container image with Docker, you can use the following command from a bash shell (Linux/macOS) or elevated PowerShell command prompt.

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

    참고

    PowerShell Core를 사용하는 경우 큰따옴표를 작은따옴표로 바꿉니다.If you are using PowerShell Core, replace the double quotes with single quotes.

    docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<YourStrong@Passw0rd>" `
       -p 1433:1433 --name sql1 -h sql1 `
       -d `
       mcr.microsoft.com/mssql/server:2017-latest
    
    docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<YourStrong@Passw0rd>" `
       -p 1433:1433 --name sql1 -h sql1 `
       -d `
       mcr.microsoft.com/mssql/server:2017-latest
    

    참고

    암호는 SQL Server 기본 암호 정책이 따라야 합니다. 그렇지 않으면 컨테이너는 SQL 서버를 설정할 수 없어 작동이 중지됩니다.The password should follow the SQL Server default password policy, otherwise the container can not setup SQL server and will stop working. 기본적으로 암호는 8자 이상이어야 하며 대문자, 소문자, 십진수 숫자 및 기호의 네 가지 집합 중 세 집합의 문자를 포함해야 합니다.By default, the password must be at least 8 characters long and contain characters from three of the following four sets: Uppercase letters, Lowercase letters, Base 10 digits, and Symbols. docker 로그 명령을 실행하여 오류 로그를 검사할 수 있습니다.You can examine the error log by executing the docker logs command.

    기본적으로 이렇게 하면 개발자 버전의 SQL Server 2017를 사용하여 컨테이너를 만듭니다.By default, this creates a container with the Developer edition of SQL Server 2017. 컨테이너에서 프로덕션 버전을 실행하는 프로세스는 약간 다릅니다.The process for running production editions in containers is slightly different. 자세한 내용은 프로덕션 컨테이너 이미지 실행을 참조하세요.For more information, see Run production container images.

    다음 표에서는 이전 docker run 보기의 매개 변수에 대해 설명합니다.The following table provides a description of the parameters in the previous docker run example:

    매개 변수Parameter DescriptionDescription
    -e "ACCEPT_EULA=Y"-e "ACCEPT_EULA=Y" 최종 사용자 사용권 계약 수락을 확인하기 위해 ACCEPT_EULA 변수를 어떤 값에 설정합니다.Set the ACCEPT_EULA variable to any value to confirm your acceptance of the End-User Licensing Agreement. SQL Server 이미지에 대한 설정을 해야 합니다.Required setting for the SQL Server image.
    -e "SA_PASSWORD=<YourStrong@Passw0rd\>"-e "SA_PASSWORD=<YourStrong@Passw0rd\>" 8자 이상이고 SQL Server 암호 요구 사항을 충족하는 자신만의 강력한 암호를 지정합니다.Specify your own strong password that is at least 8 characters and meets the SQL Server password requirements. SQL Server 이미지에 대한 설정을 해야 합니다.Required setting for the SQL Server image.
    -p 1433:1433-p 1433:1433 호스트 환경의 TCP 포트(첫 번째 값)를 컨테이너의 TCP 포트(두 번째 값)로 매핑합니다.Map a TCP port on the host environment (first value) with a TCP port in the container (second value). 이 예제에서 SQL Server는 컨테이너의 TCP 1433에서 수신 대기하고 호스트의 포트 1433에 공개됩니다.In this example, SQL Server is listening on TCP 1433 in the container and this is exposed to the port, 1433, on the host.
    --name sql1--name sql1 컨테이너에 대해 임의로 생성된 이름보다는 사용자 지정 이름을 지정합니다.Specify a custom name for the container rather than a randomly generated one. 둘 이상의 컨테이너를 실행하는 경우 이 동일한 이름을 다시 사용할 수 없습니다.If you run more than one container, you cannot reuse this same name.
    -h sql1-h sql1 컨테이너 호스트 이름을 명시적으로 설정하는 데 사용됩니다. 지정하지 않으면 임의로 생성된 시스템 GUID인 컨테이너 ID가 기본값으로 사용됩니다.Used to explicitly set the container hostname, if you don't specify it, it defaults to the container ID which is a randomly generated system GUID.
    -d-d 백그라운드(디먼)에서 컨테이너를 실행합니다.Run the container in the background (daemon)
    mcr.microsoft.com/mssql/server:2017-latestmcr.microsoft.com/mssql/server:2017-latest SQL Server 2017 Linux 컨테이너 이미지입니다.The SQL Server 2017 Linux container image.
  3. Docker 컨테이너를 보려면 docker ps 명령을 사용합니다.To view your Docker containers, use the docker ps command.

    sudo docker ps -a
    
    docker ps -a
    
    docker ps -a
    

    다음 스크린샷과 비슷한 내용이 출력됩니다.You should see output similar to the following screenshot:

    Docker ps 명령 출력

  4. 상태 열이 Up의 상태를 표시하는 경우, SQL Server는 컨테이너에서 실행되며 포트 열의 지정된 포트에서 수신 대기합니다.If the STATUS column shows a status of Up, then SQL Server is running in the container and listening on the port specified in the PORTS column. SQL Server 컨테이너의 상태 열이 Exited를 표시하는 경우, 구성 가이드의 문제 해결 섹션을 참조하세요.If the STATUS column for your SQL Server container shows Exited, see the Troubleshooting section of the configuration guide.

위에서 설명한 것처럼 -h(호스트 이름) 매개 변수는 컨테이너의 내부 이름을 사용자 지정 값으로 변경합니다.The -h (host name) parameter as discussed above, changes the internal name of the container to a custom value. 이 값은 다음 Transact SQL 쿼리에서 반환되는 이름입니다.This is the name you'll see returned in the following Transact-SQL query:

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

-h--name을 같은 값에 설정하는 것은 대상 컨테이너를 쉽게 식별하는 데 유용한 좋은 방법입니다.Setting -h and --name to the same value is a good way to easily identify the target container.

  1. 마지막 단계로 SA 암호를 변경합니다. SA_PASSWORDps -eax 출력에 표시되고 동일한 이름의 환경 변수에 저장되기 때문입니다.As a final step, change your SA password because the SA_PASSWORD is visible in ps -eax output and stored in the environment variable of the same name. 아래 단계를 참조하세요.See steps below.

2019 컨테이너 이미지를 끌어와 실행Pull and run the 2019 container image

다음 단계를 시작하기 전에 이 문서의 맨 위에서 기본 셸(bash, PowerShell 또는 cmd)을 선택했는지 확인합니다.Before starting the following steps, make sure that you have selected your preferred shell (bash, PowerShell, or cmd) at the top of this article.

  1. Microsoft Container Registry에서 SQL Server 2019 Linux 컨테이너 이미지를 끌어옵니다.Pull the SQL Server 2019 Linux container image from Microsoft Container Registry.

    sudo docker pull mcr.microsoft.com/mssql/server:2019-latest
    

    참고

    PowerShell Core를 사용하는 경우 큰따옴표를 작은따옴표로 바꿉니다.If you are using PowerShell Core, replace the double quotes with single quotes.

    docker pull mcr.microsoft.com/mssql/server:2019-latest
    
    docker pull mcr.microsoft.com/mssql/server:2019-latest
    

    이 빠른 시작에서는 SQL Server 2019 Docker 이미지를 사용합니다.This quickstart uses the SQL Server 2019 Docker image. SQL Server 2017 이미지를 실행하려면 이 문서의 SQL Server 2017 버전을 참조하세요.If you want to run the SQL Server 2017 image, see the SQL Server 2017 version of this article.

    이전 명령은 Ubuntu를 기반으로 하는 SQL Server 2019 컨테이너 이미지를 끌어옵니다.The previous command pulls the SQL Server 2019 container image based on Ubuntu. RedHat을 기반으로 하는 컨테이너 이미지를 대신 사용하려면 RHEL 기반 컨테이너 이미지 실행을 참조하세요.To instead use container images based on RedHat, see Run RHEL-based container images. 사용 가능한 모든 이미지를 보려면 mssql-server-linux Docker 허브 페이지를 참조하세요.To see all available images, see the mssql-server-linux Docker hub page.

    이 문서의 bash 명령에는 sudo를 사용합니다.For the bash commands in this article, sudo is used. macOS에서는 sudo가 필요하지 않을 수도 있습니다.On macOS, sudo might not be required. Linux에서 sudo로 Docker를 실행하지 않으려는 경우 docker 그룹을 구성하고 해당 그룹에 사용자를 추가할 수 있습니다.On Linux, if you do not want to use sudo to run Docker, you can configure a docker group and add users to that group. 자세한 내용은 Linux용 설치 후 단계를 참조하세요.For more information, see Post-installation steps for Linux.

  2. Docker를 사용하여 컨테이너 이미지를 실행하려면 bash 셸(Linux/macOS) 또는 상승된 권한 PowerShell 명령 프롬프트에서 다음 명령을 사용할 수 있습니다.To run the container image with Docker, you can use the following command from a bash shell (Linux/macOS) or elevated PowerShell command prompt.

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

    참고

    암호는 SQL Server 기본 암호 정책이 따라야 합니다. 그렇지 않으면 컨테이너는 SQL 서버를 설정할 수 없어 작동이 중지됩니다.The password should follow the SQL Server default password policy, otherwise the container can not setup SQL server and will stop working. 기본적으로 암호는 8자 이상이어야 하며 대문자, 소문자, 십진수 숫자 및 기호의 네 가지 집합 중 세 집합의 문자를 포함해야 합니다.By default, the password must be at least 8 characters long and contain characters from three of the following four sets: Uppercase letters, Lowercase letters, Base 10 digits, and Symbols. docker 로그 명령을 실행하여 오류 로그를 검사할 수 있습니다.You can examine the error log by executing the docker logs command.

    기본적으로 이렇게 하면 개발자 버전의 SQL Server 2019를 사용하여 컨테이너를 만듭니다.By default, this creates a container with the Developer edition of SQL Server 2019.

    다음 표에서는 이전 docker run 보기의 매개 변수에 대해 설명합니다.The following table provides a description of the parameters in the previous docker run example:

    매개 변수Parameter DescriptionDescription
    -e "ACCEPT_EULA=Y"-e "ACCEPT_EULA=Y" 최종 사용자 사용권 계약 수락을 확인하기 위해 ACCEPT_EULA 변수를 어떤 값에 설정합니다.Set the ACCEPT_EULA variable to any value to confirm your acceptance of the End-User Licensing Agreement. SQL Server 이미지에 대한 설정을 해야 합니다.Required setting for the SQL Server image.
    -e "SA_PASSWORD=<YourStrong@Passw0rd\>"-e "SA_PASSWORD=<YourStrong@Passw0rd\>" 8자 이상이고 SQL Server 암호 요구 사항을 충족하는 자신만의 강력한 암호를 지정합니다.Specify your own strong password that is at least 8 characters and meets the SQL Server password requirements. SQL Server 이미지에 대한 설정을 해야 합니다.Required setting for the SQL Server image.
    -p 1433:1433-p 1433:1433 호스트 환경의 TCP 포트(첫 번째 값)를 컨테이너의 TCP 포트(두 번째 값)로 매핑합니다.Map a TCP port on the host environment (first value) with a TCP port in the container (second value). 이 예제에서 SQL Server는 컨테이너의 TCP 1433에서 수신 대기하고 호스트의 포트 1433에 공개됩니다.In this example, SQL Server is listening on TCP 1433 in the container and this is exposed to the port, 1433, on the host.
    --name sql1--name sql1 컨테이너에 대해 임의로 생성된 이름보다는 사용자 지정 이름을 지정합니다.Specify a custom name for the container rather than a randomly generated one. 둘 이상의 컨테이너를 실행하는 경우 이 동일한 이름을 다시 사용할 수 없습니다.If you run more than one container, you cannot reuse this same name.
    -h sql1-h sql1 컨테이너 호스트 이름을 명시적으로 설정하는 데 사용됩니다. 지정하지 않으면 임의로 생성된 시스템 GUID인 컨테이너 ID가 기본값으로 사용됩니다.Used to explicitly set the container hostname, if you don't specify it, it defaults to the container ID which is a randomly generated system GUID.
    mcr.microsoft.com/mssql/server:2019-latestmcr.microsoft.com/mssql/server:2019-latest SQL Server 2019 Ubuntu Linux 컨테이너 이미지입니다.The SQL Server 2019 Ubuntu Linux container image.
  3. Docker 컨테이너를 보려면 docker ps 명령을 사용합니다.To view your Docker containers, use the docker ps command.

    sudo docker ps -a
    
    docker ps -a
    
    docker ps -a
    

    다음 스크린샷과 비슷한 내용이 출력됩니다.You should see output similar to the following screenshot:

    Docker ps 명령 출력

  4. 상태 열이 Up의 상태를 표시하는 경우, SQL Server는 컨테이너에서 실행되며 포트 열의 지정된 포트에서 수신 대기합니다.If the STATUS column shows a status of Up, then SQL Server is running in the container and listening on the port specified in the PORTS column. SQL Server 컨테이너의 상태 열이 Exited를 표시하는 경우, SQL Server Docker 컨테이너 문제 해결을 참조하세요.If the STATUS column for your SQL Server container shows Exited, see Troubleshooting SQL Server Docker containers.

위에서 설명한 것처럼 -h(호스트 이름) 매개 변수는 컨테이너의 내부 이름을 사용자 지정 값으로 변경합니다.The -h (host name) parameter as discussed above, changes the internal name of the container to a custom value. 이렇게 하면 컨테이너의 내부 이름이 사용자 지정 값으로 변경됩니다.This changes the internal name of the container to a custom value. 이 값은 다음 Transact SQL 쿼리에서 반환되는 이름입니다.This is the name you'll see returned in the following Transact-SQL query:

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

-h--name을 같은 값에 설정하는 것은 대상 컨테이너를 쉽게 식별하는 데 유용한 좋은 방법입니다.Setting -h and --name to the same value is a good way to easily identify the target container.

  1. 마지막 단계로 SA 암호를 변경합니다. SA_PASSWORDps -eax 출력에 표시되고 동일한 이름의 환경 변수에 저장되기 때문입니다.As a final step, change your SA password because the SA_PASSWORD is visible in ps -eax output and stored in the environment variable of the same name. 아래 단계를 참조하세요.See steps below.

SA 암호 변경Change the SA password

SA 계정은 설치 중에 생성되는 SQL Server 인스턴스의 시스템 관리자입니다.The SA account is a system administrator on the SQL Server instance that gets created during setup. SQL Server 컨테이너를 만든 후 컨테이너에서 echo $SA_PASSWORD를 실행하여 지정한 SA_PASSWORD 환경 변수를 검색할 수 있습니다.After creating your SQL Server container, the SA_PASSWORD environment variable you specified is discoverable by running echo $SA_PASSWORD in the container. 보안을 위해 SA 암호를 변경합니다.For security purposes, change your SA password.

  1. SA 사용자에게 사용할 강력한 암호를 선택합니다.Choose a strong password to use for the SA user.

  2. docker exec를 사용하여 sqlcmd를 실행하고 Transact-SQL을 사용하여 암호를 변경합니다.Use docker exec to run sqlcmd to change the password using Transact-SQL. 다음 예제에서는 이전 암호 <YourStrong!Passw0rd>와 새 암호 <YourNewStrong!Passw0rd>를 사용자 고유의 암호 값으로 바꿉니다.In the following example, replace the old password, <YourStrong!Passw0rd>, and the new password, <YourNewStrong!Passw0rd>, with your own password values.

    sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \
       -S localhost -U SA -P "<YourStrong@Passw0rd>" \
       -Q 'ALTER LOGIN SA WITH PASSWORD="<YourNewStrong@Passw0rd>"'
    
    docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd `
       -S localhost -U SA -P "<YourStrong@Passw0rd>" `
       -Q "ALTER LOGIN SA WITH PASSWORD='<YourNewStrong@Passw0rd>'"
    
    docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd `
       -S localhost -U SA -P "<YourStrong!Passw0rd>" `
       -Q "ALTER LOGIN SA WITH PASSWORD='<YourNewStrong@Passw0rd>'"
    

SQL Server에 연결Connect to SQL Server

다음 단계에서는 SQL Server에 연결하기 위해 컨테이너 내에서 SQL Server 명령줄 도구 sqlcmd를 사용합니다.The following steps use the SQL Server command-line tool, sqlcmd, inside the container to connect to SQL Server.

  1. docker exec -it 명령을 사용하여 실행 중인 컨테이너 내에서 대화형 bash 셸을 시작합니다.Use the docker exec -it command to start an interactive bash shell inside your running container. 다음 예에서 sql1은 컨테이너를 만들 때 --name 매개 변수가 지정한 이름입니다.In the following example sql1 is name specified by the --name parameter when you created the container.

    sudo docker exec -it sql1 "bash"
    
    docker exec -it sql1 "bash"
    
    docker exec -it sql1 "bash"
    
  2. 컨테이너 내부로 들어가면 sqlcmd를 사용하여 로컬로 연결합니다.Once inside the container, connect locally with sqlcmd. Sqlcmd는 기본적으로 경로에 있지 않으므로 전체 경로를 지정해야 합니다.Sqlcmd is not in the path by default, so you have to specify the full path.

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

    명령줄에서 암호를 생략하여 입력하라는 메시지가 표시되도록 할 수 있습니다.You can omit the password on the command-line to be prompted to enter it.

  3. 성공하면 sqlcmd 명령 프롬프트 1>이 표시됩니다.If successful, you should get to a sqlcmd command prompt: 1>.

데이터 만들기 및 쿼리Create and query data

다음 섹션에서는 sqlcmd 및 Transact-SQL을 사용하여 새 데이터베이스를 만들고, 데이터를 추가하고, 쿼리를 실행하는 단계를 안내합니다.The following sections walk you through using sqlcmd and Transact-SQL to create a new database, add data, and run a query.

새 데이터베이스 만들기Create a new database

다음 단계에서는 TestDB라는 새 데이터베이스를 만듭니다.The following steps create a new database named TestDB.

  1. sqlcmd 명령 프롬프트에서 다음 Transact-SQL 명령을 붙여넣어 테스트 데이터베이스를 만듭니다.From the sqlcmd command prompt, paste the following Transact-SQL command to create a test database:

    CREATE DATABASE TestDB
    
  2. 다음 줄에 서버에 있는 모든 데이터베이스의 이름을 반환하는 쿼리를 작성합니다.On the next line, write a query to return the name of all of the databases on your server:

    SELECT Name from sys.Databases
    
  3. 앞의 두 명령은 즉시 실행되지 않았습니다.The previous two commands were not executed immediately. 앞의 명령을 실행하려면 새 줄에 GO를 입력합니다.Type GO on a new line to execute the previous commands:

    GO
    

데이터 삽입Insert data

다음으로 새 테이블 Inventory를 만들고 두 개의 새 행을 삽입합니다.Next create a new table, Inventory, and insert two new rows.

  1. sqlcmd 명령 프롬프트에서 컨텍스트를 새 TestDB 데이터베이스로 전환합니다.From the sqlcmd command prompt, switch context to the new TestDB database:

    USE TestDB
    
  2. Inventory라는 새 테이블을 만듭니다.Create new table named Inventory:

    CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
    
  3. 새 테이블에 데이터를 삽입합니다.Insert data into the new table:

    INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
    
  4. GO를 입력하여 앞의 명령을 실행합니다.Type GO to execute the previous commands:

    GO
    

데이터 선택Select data

이제 쿼리를 실행하여 Inventory 테이블에서 데이터를 반환합니다.Now, run a query to return data from the Inventory table.

  1. sqlcmd 명령 프롬프트에서 Inventory 테이블에서 수량이 152보다 큰 행을 반환하는 쿼리를 입력합니다.From the sqlcmd command prompt, enter a query that returns rows from the Inventory table where the quantity is greater than 152:

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

    GO
    

sqlcmd 명령 프롬프트 종료Exit the sqlcmd command prompt

  1. sqlcmd 세션을 종료하려면 QUIT를 입력합니다.To end your sqlcmd session, type QUIT:

    QUIT
    
  2. 컨테이너에서 대화형 명령 프롬프트를 종료하려면 exit을 입력합니다.To exit the interactive command-prompt in your container, type exit. 컨테이너는 대화형 bash 셸을 종료한 후에도 계속 실행됩니다.Your container continues to run after you exit the interactive bash shell.

컨테이너 외부에서 연결Connect from outside the container

SQL 연결을 지원하는 모든 외부 Linux, Windows 또는 macOS 도구에서 Docker 컴퓨터에 있는 SQL Server 인스턴스에 연결할 수 있습니다.You can also connect to the SQL Server instance on your Docker machine from any external Linux, Windows, or macOS tool that supports SQL connections.

다음 단계는 컨테이너에서 실행 중인 SQL Server에 연결하기 위해 컨테이너 외부에서 sqlcmd를 사용합니다.The following steps use sqlcmd outside of your container to connect to SQL Server running in the container. 이러한 단계는 컨테이너의 외부에 설치된 SQL Server 명령줄 도구가 이미 있다고 가정합니다.These steps assume that you already have the SQL Server command-line tools installed outside of your container. 다른 도구를 사용하는 경우에도 동일한 보안 주체가 적용되지만 연결 프로세스는 도구마다 고유합니다.The same principles apply when using other tools, but the process of connecting is unique to each tool.

  1. 컨테이너를 호스팅하는 컴퓨터에 대한 IP 주소를 찾습니다.Find the IP address for the machine that hosts your container. Linux에서 ifconfig 또는 ip 주소를 사용합니다. Windows에서 ipconfig를 사용합니다.On Linux, use ifconfig or ip addr. On Windows, use ipconfig.

  2. 이 예제에서는 클라이언트 머신에 sqlcmd 도구를 설치합니다.For this example, install the sqlcmd tool on your client machine. 자세한 내용은 Windows에서 sqlcmd 설치 또는 Linux에서 sqlcmd 설치를 참조하세요.For more information, see Install sqlcmd on Windows or Install sqlcmd on Linux.

  3. 컨테이너의 포트 1433에 매핑된 IP 주소와 포트를 지정하는 sqlcmd를 실행합니다.Run sqlcmd specifying the IP address and the port mapped to port 1433 in your container. 이 예제에서는 호스트 머신의 동일한 포트 1433을 사용합니다.In this example, that is the same port, 1433, on the host machine. 호스트 머신의 다른 매핑된 포트를 지정한 경우 해당 포트를 여기서 사용합니다.If you specified a different mapped port on the host machine, you would use it here. 또한 연결을 허용하려면 방화벽에서 적절한 인바운드 포트를 열어야 합니다.You will also need to open the appropriate inbound port on your firewall to allow the connection.

    sqlcmd -S <ip_address>,1433 -U SA -P "<YourNewStrong@Passw0rd>"
    
    sqlcmd -S <ip_address>,1433 -U SA -P "<YourNewStrong@Passw0rd>"
    
    sqlcmd -S <ip_address>,1433 -U SA -P "<YourNewStrong@Passw0rd>"
    
  4. Transact-SQL 명령을 실행합니다.Run Transact-SQL commands. 완료되면 QUIT을 입력합니다.When finished, type QUIT.

SQL Server에 연결할 다른 일반적인 도구는 다음과 같습니다.Other common tools to connect to SQL Server include:

컨테이너 제거Remove your container

이 자습서에 사용되는 SQL Server 컨테이너를 제거하려면 다음 명령을 실행합니다.If you want to remove the SQL Server container used in this tutorial, run the following commands:

sudo docker stop sql1
sudo docker rm sql1
docker stop sql1
docker rm sql1
docker stop sql1
docker rm sql1

경고

컨테이너를 영구적으로 중지하고 제거하면 컨테이너의 모든 SQL Server 데이터가 삭제됩니다.Stopping and removing a container permanently deletes any SQL Server data in the container. 데이터를 보존해야 하는 경우 컨테이너에서 백업 파일을 만들고 복사하거나 컨테이너 데이터 지속성 기술을 사용합니다.If you need to preserve your data, create and copy a backup file out of the container or use a container data persistence technique.

Docker 데모Docker demo

Docker에 대한 SQL Server 컨테이너 이미지를 사용하여 시도한 후에 Docker를 사용하여 개발 및 테스트를 개선하는 방법을 알아 보고자 할 수도 있습니다.After you have tried using the SQL Server container image for Docker, you might want to know how Docker is used to improve development and testing. 다음 비디오는 Docker를 연속 통합 및 배포 시나리오에서 사용할 수 있는 방법을 보여줍니다.The following video shows how Docker can be used in a continuous integration and deployment scenario.

다음 단계Next steps

데이터베이스 백업 파일을 컨테이너로 복원하는 방법에 대한 자습서는 SQL Server 데이터베이스를 Linux Docker 컨테이너에 복원을 참조하세요.For a tutorial on how to restore database backup files into a container, see Restore a SQL Server database in a Linux Docker container. 여러 컨테이너 실행, 데이터 지속성, 문제 해결 등의 다른 시나리오를 살펴봅니다.Explore other scenarios, such as running multiple containers, data persistence, and troubleshooting.

또한, 리소스, 피드백 및 알려진 문제에 대한 mssql docker GitHub 리포지토리를 확인합니다.Also, check out the mssql-docker GitHub repository for resources, feedback, and known issues.