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

이 항목 적용 대상: 예(Linux에만 해당) SQL Server없습니다Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스없는병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL Server (Linux only)noAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

이 빠른 시작 자습서를 사용 하 여 Docker pull 및 SQL Server 2017 컨테이너 이미지를 실행 mssql-서버-linux합니다.In this quick start tutorial, 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.

이 이미지는 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-developer Docker Hub page.

필수 구성 요소Prerequisites

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

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

    sudo docker pull microsoft/mssql-server-linux:2017-latest
    
    docker pull microsoft/mssql-server-linux:2017-latest
    

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

  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 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' \
       -p 1401:1433 --name sql1 \
       -d microsoft/mssql-server-linux:2017-latest
    
    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" `
       -p 1401:1433 --name sql1 `
       -d microsoft/mssql-server-linux:2017-latest
    

    참고

    기본적으로 개발자 버전의 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 ' 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 the SQL Server password requirements. SQL Server 이미지에 대 한 설정 해야 합니다.Required setting for the SQL Server image.
    -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.
    -이름 s q l 1--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.
    microsoft/mssql-서버-linux:2017-최신microsoft/mssql-server-linux: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
    

    다음 스크린샷과 유사한 출력이 표시 되어야 합니다.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.

-h 도 유용 합니다 (호스트 이름) 매개 변수 이지만 간단한 설명을 위해이 자습서에서 사용 되지 않습니다.The -h (host name) parameter is also useful, but it is not used in this tutorial for simplicity. 이 컨테이너의 내부 이름을 사용자 지정 값으로 변경 합니다.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.

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 $MSSQL_SA_PASSWORD를 실행하여 지정한 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. <YourStrong!Passw0rd><YourNewStrong!Passw0rd>를 사용자 고유의 암호 값으로 바꿉니다.Replace <YourStrong!Passw0rd> and <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>'"
    

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. 다음 예에서 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"
    
  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 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 주소합니다. Windows에서 사용 하 여 ipconfig합니다.On Linux, use ifconfig or ip addr. 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 '<YourNewStrong!Passw0rd>'
    
    sqlcmd -S 10.3.2.4,1401 -U SA -P "<YourNewStrong!Passw0rd>"
    
  3. 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

경고

중지 하 고 컨테이너를 영구적으로 제거에 컨테이너의 모든 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.

다음 단계Next steps

컨테이너에 데이터베이스 백업 파일을 복원 하는 방법에 대 한 자습서를 참조 하십시오. Linux Docker 컨테이너에서 SQL Server 데이터베이스를 복원합니다.For a tutorial on how to restore database backup files into a container, see Restore a SQL Server database in a Linux Docker container. 여러 컨테이너를 실행 하는 등의 다른 시나리오 데이터 지 속성 및 문제 해결, 참조 Docker에 SQL Server 2017 구성 컨테이너 이미지합니다.To explore other scenarios, such as running multiple containers, data persistence, and troubleshooting, 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.