Docker가 있는 SQL Server 2017 컨테이너 이미지를 실행 합니다.Run the SQL Server 2017 container image with Docker

이 빠른 시작 자습서를 사용 하 여 Docker pull 및 SQL Server 2017 RC2 컨테이너 이미지를 실행 mssql-서버-linux합니다.In this quick start tutorial, you use Docker to pull and run the SQL Server 2017 RC2 container image, mssql-server-linux. 다음으로 연결 sqlcmd 첫 번째 데이터베이스를 만들고 쿼리를 실행 합니다.Then connect with sqlcmd to create your first database and run queries.

이 이미지는 Ubuntu 16.04에 따라 Linux에서 실행 중인 SQL Server 구성 됩니다.This image consists of SQL Server running on Linux based on Ubuntu 16.04. Mac/Windows 용 Docker 엔진 1.8 + linux 또는 Docker에서 사용할 수 있습니다.It can be used with the Docker Engine 1.8+ on Linux or on Docker for Mac/Windows.

참고

이 빠른 시작 mssql-서버-linux 이미지를 사용 하 여에 특별히 중점을 둡니다.This quick start specifically focuses on using the mssql-server-linux image. Windows 이미지 적용 되지 않는 있지만에서 항목에 대 한 자세히 알아볼 수 있습니다는 mssql-서버-windows Docker 허브 페이지합니다.The Windows image is not covered, but you can learn more about it on the mssql-server-windows Docker Hub page.

필수 구성 요소 Prerequisites

중요

Mac 용 Docker 및 Windows 용 Docker에 대 한 기본값 Moby VM에 대 한 2GB 이므로 4GB로 변경 해야 합니다.The default on Docker for Mac and Docker for Windows is 2 GB for the Moby VM, so you must change it to 4 GB. Mac 또는 Windows에서 실행 하는 경우에 메모리를 늘리기 위해 다음 절차를 따르세요.If you are running on Mac or Windows, use the following procedures to increase the memory.

4GB (Mac) Docker 메모리 증가Increase Docker memory to 4 GB (Mac)

다음 단계는 4GB로 Mac 용 Docker에 대 한 메모리를 늘리십시오.The following steps increase the memory for Docker for Mac to 4 GB.

  1. 상위 상태 표시줄에 Docker 로고를 클릭 합니다.Click the Docker logo on the top status bar.
  2. 선택 기본 설정합니다.Select Preferences.
  3. 4GB 이상의 메모리 표시기를 이동 합니다.Move the memory indicator to 4 GB or more.
  4. 클릭는 다시 시작 화면 단추에 있는 단추입니다.Click the restart button at the button of the screen.

4GB (Windows) Docker 메모리 증가Increase Docker memory to 4 GB (Windows)

다음 단계는 4GB로 Windows 용 Docker에 대 한 메모리를 늘리십시오.The following steps increase the memory for Docker for Windows to 4 GB.

  1. 작업 표시줄에서 Docker 아이콘을 마우스 오른쪽 단추로 클릭 합니다.Right-click on the Docker icon from the task bar.
  2. 클릭 설정을 해당 메뉴.Click Settings under that menu.
  3. 클릭는 고급 탭 합니다.Click the Advanced Tab.
  4. 4GB 이상의 메모리 표시기를 이동 합니다.Move the memory indicator to 4 GB or more.
  5. 클릭는 적용 단추입니다.Click the Apply button.

컨테이너 이미지를 실행 하 고 끌어오기Pull and run the container image

  1. Docker 허브에서 컨테이너 이미지를 끌어옵니다.Pull the container image from Docker Hub.

    docker pull microsoft/mssql-server-linux
    

    Linux 시스템 및 사용자 구성에 따라 해야 할 수 있습니다 각 앞 docker 명령을 sudo합니다.For Linux, depending on your system and user configuration, you might need to preface each docker command with sudo.

  2. Docker가 있는 컨테이너 이미지를 실행 하려면 bash 셸의 (Linux/macOS)에서 다음 명령을 사용할 수 있습니다.To run the container image with Docker, you can use the following command from a bash shell (Linux/macOS):

    docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d microsoft/mssql-server-linux
    

    Windows 용 Docker를 사용 하는 경우에 관리자 권한 PowerShell 명령 프롬프트에서 다음 명령을 사용 합니다.If you are using Docker for Windows, use the following command from an elevated PowerShell command-prompt:

    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d microsoft/mssql-server-linux
    
    참고

    Bash (Linux/macOS) 예제와 PowerShell (Windows) 예제 간의 유일한 차이점은 환경 변수 주위 큰따옴표와 작은따옴표 합니다.The only difference between the bash (Linux/macOS) example and the PowerShell (Windows) example is single quotes versus double-quotes around the environment variables. Docker run 명령에 잘못 된을 사용 하는 경우 실패 합니다.The docker run command fails if you use the wrong one. 이 항목의 나머지 bash 및 PowerShell 코드 블록 편의 위해 제공 됩니다.Throughout the remainder of this topic, bash and PowerShell code blocks are provided for convenience. 예제로 이면 Windows를 비롯 한 모든 플랫폼에서 작동 합니다.If there is only one example, it works on all platforms, including Windows.

    다음 표에서 이전에 매개 변수 설명을 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 ' MSSQL_SA_PASSWORD =<YourStrong! Passw0rd>'-e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' 사용자 고유의 강력한 암호를 8 자 이상 있고에 맞는 지정 SQL Server 암호 요구 사항을합니다.Specify your own strong password that is at least 8 characters and meets SQL Server's password requirements. SQL Server 이미지에 대 한 설정 해야 합니다.Required setting for the SQL Server image.
    -e ' MSSQL_PID 개발자 ='-e 'MSSQL_PID=Developer' 버전 또는 제품 키를 지정합니다.Specifies the edition or product key. 이 예제에서는 자유롭게 사용이 허가 된 Developer Edition은 비-프로덕션 테스트에 사용 됩니다.In this example, the freely licensed Developer Edition is used for non-production testing. 다른 값을 참조 하십시오. Linux에서 환경 변수를 사용 하 여 SQL Server 구성 설정합니다.For other values, see Configure SQL Server settings with environment variables on Linux.
    -cap 추가 SYS_PTRACE--cap-add SYS_PTRACE 프로세스를 추적 하는 Linux 기능을 추가 합니다.Adds the Linux capability to trace a process. 이 통해 예외에서 덤프를 생성 합니다.This enables SQL Server to generate dumps on an exception.
    -p 1401:1433-p 1401: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에서 수신 하 고 호스트에서 1401 포트에 노출 됩니다.In this example, SQL Server is listening on TCP 1433 in the container and this is exposed to the port, 1401, on the host.
    microsoft/mssql-서버-linuxmicrosoft/mssql-server-linux SQL Server Linux 컨테이너 이미지입니다.The SQL Server Linux container image. 기본값은 별도로 지정 하지 않으면는 최신 이미지입니다.Unless otherwise specified, this defaults to the latest image.
  3. Docker 컨테이너를 보려면 사용 하 여는 docker ps 명령입니다.To view your Docker containers, use the docker ps command.

    docker ps -a
    

    다음 스크린샷과 유사한 출력이 표시 되어야 합니다.You should see output similar to the following screenshot:

    Docker ps 명령 출력

  4. 경우는 상태 열 표시의 상태 컨테이너에서 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.

두 개의 유용한 docker run 편의상 이전 예제에서 사용 되지 옵션입니다.There are two useful docker run options not used in the previous example for simplicity. -h (호스트 이름) 매개 변수는 컨테이너의 내부 이름을 사용자 지정 값으로 변경 합니다.The -h (host name) parameter 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')

또한 확인할 수도 --name 매개 변수 생성된 컨테이너 이름을 보다는 컨테이너 이름을 지정 하는 데 유용 합니다.You also might find the --name parameter useful to name your container rather than having a generated container name. 설정 -h--name 과 같은 값은 쉽게 대상 컨테이너를 식별 하는 데 유용 합니다.Setting -h and --name to the same value is a good way to easily identify the target container.

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 컨테이너를 만든 후의 MSSQL_SA_PASSWORD 지정한 환경 변수를 실행 하 여 검색할 수 echo $MSSQL_SA_PASSWORD 컨테이너에 있습니다.After creating your SQL Server container, the MSSQL_SA_PASSWORD environment variable you specified is discoverable by running echo $MSSQL_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. 대체 <Old Password><New Password> 암호 값입니다.Replace <Old Password> and <New Password> with your password values.

docker exec -it <Container ID> /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<Old Password>' -Q 'ALTER LOGIN SA WITH PASSWORD="<New Password>";'

SQL Server에 연결Connect to SQL Server

다음 단계에 SQL Server 명령줄 도구를 사용 하 여 sqlcmd, 컨테이너 내에서 SQL Server에 연결 합니다.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. 다음 예에서 e69e056c702d 컨테이너 ID입니다.In the following example e69e056c702d is the container ID.

    docker exec -it e69e056c702d "bash"
    

    항상 전체 컨테이너 id를 지정할 필요가 없습니다.You don't always have to specify the entire container id. 고유 하 게 식별 필요한 만큼의 문자를 지정 해야 합니다.You only have to specify enough characters to uniquely identify it. 이 예제에서 사용 하기에 충분 한 않을 수도 것 e6 또는 e69 전체 id 대신 합니다.So in this example, it might be enough to use e6 or e69 rather than the full id.

  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 '<YourPassword>'
    

    명령줄에서 암호를 생략하여 입력하라는 메시지가 표시되도록 할 수 있습니다.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 simple 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를 입력해야 합니다.You must 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 Server 인스턴스에 Docker 컴퓨터에 SQL 연결을 지 원하는 Linux, Windows 또는 macOS 도구 외부에서.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.

다음 단계를 사용 하 여 sqlcmd 컨테이너에서 실행 중인 SQL Server에 연결 하 여 컨테이너의 외부입니다.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 principals 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 주소합니다.On Linux, use ifconfig or ip addr. Windows에서 사용 하 여 ipconfig합니다.On Windows, use ipconfig.

  2. IP 주소와 컨테이너의 포트 1433에 매핑된 포트를 지정 하는 sqlcmd를 실행 합니다.Run sqlcmd specifying the IP address and the port mapped to port 1433 in your container. 이 예제에서는 호스트 컴퓨터에 1401 포트입니다.In this example, that is port 1401 on the host machine.

    sqlcmd -S 10.3.2.4,1401 -U SA -P '<YourPassword>'
    
    sqlcmd -S 10.3.2.4,1401 -U SA -P "<YourPassword>"
    
  3. TRANSACT-SQL 명령이 실행된 합니다.Run Transact-SQL commands. 완료 되 면 입력 QUIT합니다.When finished, type QUIT.

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

다음 단계Next steps

여러 컨테이너, 데이터 지 속성 및 troublehshooting를 실행 하는 등의 다른 시나리오 참조 Docker에 SQL Server 2017 구성 컨테이너 이미지합니다.To explore other scenarios, such as running multiple containers, data persistence, and troublehshooting, see Configure SQL Server 2017 container images on Docker.

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