Docker가 있는 SQL Server 2017 컨테이너 이미지를 실행 하는 빠른 시작:

이 항목 적용 대상: 예(Linux에만 해당) SQL Server없습니다Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스없습니다 병렬 데이터 웨어하우스

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

이 이미지는 Ubuntu 16.04 기반 Linux에서 실행 중인 SQL Server로 구성됩니다. Linux 또는 Mac/Windows용 Docker에서 Docker Engine 1.8+와 함께 사용할 수 있습니다.

참고

이 빠른 시작은 구체적으로 mssql-server-linux 이미지를 사용하는 데 집중합니다. Windows 이미지는 다루지 않지만, mssql-server-windows-developer Docker 허브 페이지에서 자세히 알아볼 수 있습니다.

필수 구성 요소

컨테이너 이미지를 끌어와 실행하기

  1. Docker Hub를 사용하여 SQL Server 2017 Linux 컨테이너 이미지를 끌어오기.

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

    이전 명령은 최신 SQL Server 2017 컨테이너 이미지를 끌어옵니다. 특정 이미지를 끌어오려면 콜론 및 태그 이름(예를 들어 microsoft/mssql-server-linux:2017-GA)을 추가합니다. 사용 가능한 모든 이미지를 보려면 mssql-server-linux Docker 허브 페이지를 참조하세요.

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

  2. Docker를 사용하여 컨테이너 이미지를 실행하려면 bash 셸(Linux/macOS) 또는 상승된 권한 PowerShell 명령 프롬프트에서 다음 명령을 사용할 수 있습니다.

    bash
    sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=<YourStrong!Passw0rd>' \
       -p 1433:1433 --name sql1 \
       -d microsoft/mssql-server-linux:2017-latest
    
    PowerShell
    docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<YourStrong!Passw0rd>" `
       -p 1433:1433 --name sql1 `
       -d microsoft/mssql-server-linux:2017-latest
    

    참고

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

    참고

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

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

    매개 변수 Description
    -e 'ACCEPT_EULA=Y' 최종 사용자 사용권 계약 수락을 확인하기 위해 ACCEPT_EULA 변수를 어떤 값에 설정합니다. SQL Server 이미지에 대한 설정을 해야 합니다.
    -e ' SA_PASSWORD =<YourStrong! Passw0rd>' 8자 이상이고 SQL Server 암호 요구 사항을 충족하는 자신만의 강력한 암호를 지정합니다.SQL Server 이미지에 대한 설정을 해야 합니다.
    -p 1433:1433 호스트 환경의 TCP 포트(첫 번째 값)를 컨테이너의 TCP 포트(두 번째 값)로 매핑합니다. 이 예제에서는 SQL Server가 컨테이너의 TCP 1433에서 수신 하 고 호스트에서 1433 포트에 노출 됩니다.
    --name sql1 컨테이너에 대해 임의로 생성된 이름보다는 사용자 지정 이름을 지정합니다. 둘 이상의 컨테이너를 실행하는 경우 이 동일한 이름을 다시 사용할 수 없습니다.
    microsoft/mssql-server-linux:2017-latest SQL Server 2017 Linux 컨테이너 이미지입니다.
  3. Docker 컨테이너를 보려면 docker ps 명령을 사용합니다.

    bash
    sudo docker ps -a
    
    PowerShell
    docker ps -a
    

    다음 스크린샷과 비슷한 내용이 출력됩니다.

    Docker ps 명령 출력

  4. 상태 열이 Up의 상태를 표시하는 경우, SQL Server는 컨테이너에서 실행되며 포트 열의 지정된 포트에서 수신 대기합니다. SQL Server 컨테이너의 상태 열이 Exited를 표시하는 경우, 구성 가이드의 문제 해결 섹션을 참조하세요.

-h(호스트 이름) 매개 변수도 유용하지만 간단한 설명을 위해 이 자습서에서 사용되지 않습니다. 이렇게 하면 컨테이너의 내부 이름이 사용자 지정 값으로 변경됩니다. 이 값은 다음 Transact SQL 쿼리에서 반환되는 이름입니다.

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

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

SA 암호 변경

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

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

  2. docker exec를 사용하여 sqlcmd를 실행하고 Transact-SQL을 사용하여 암호를 변경합니다. <YourStrong!Passw0rd> 및 <YourNewStrong!Passw0rd>를 사용자 고유의 암호 값으로 바꿉니다.

    bash
    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>"'
    
    PowerShell
    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에 연결

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

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

    bash
    sudo docker exec -it sql1 "bash"
    
    PowerShell
    docker exec -it sql1 "bash"
    
  2. 컨테이너 내부로 들어가면 sqlcmd를 사용하여 로컬로 연결합니다. Sqlcmd는 기본적으로 경로에 있지 않으므로 전체 경로를 지정해야 합니다.

    bash
    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourNewStrong!Passw0rd>'
    

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

    경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
    어린이용이며, 설치가 필요없는 브라우저 게임입니다.
    https://s1004games.com

  3. 성공하면 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 인스턴스에 연결할 수 있습니다.

다음 단계는 컨테이너에서 실행 중인 SQL Server에 연결하기 위해 컨테이너 외부에서 sqlcmd를 사용합니다. 이러한 단계는 컨테이너의 외부에 설치된 SQL Server 명령줄 도구가 이미 있다고 가정합니다. 다른 도구를 사용할 경우 동일한 보안 주체가 적용되지만 연결하는 프로세스는 각 도구에 고유합니다.

  1. 컨테이너를 호스팅하는 컴퓨터에 대한 IP 주소를 찾습니다. Linux에서 ifconfig 또는 ip 주소를 사용합니다. Windows에서 ipconfig를 사용합니다.

  2. 컨테이너의 포트 1433에 매핑된 IP 주소와 포트를 지정하는 sqlcmd를 실행합니다. 이 예제에서는 동일한 포트를 호스트 컴퓨터에서 1433입니다. 호스트 컴퓨터에 매핑된 다른 포트를 지정 하는 경우 여기 사용할가 있습니다.

    bash
    sqlcmd -S 10.3.2.4,1433 -U SA -P '<YourNewStrong!Passw0rd>'
    
    PowerShell
    sqlcmd -S 10.3.2.4,1433 -U SA -P "<YourNewStrong!Passw0rd>"
    
  3. Transact-SQL 명령을 실행합니다. 완료되면 QUIT을 입력합니다.

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

컨테이너 제거

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

bash
sudo docker stop sql1
sudo docker rm sql1
PowerShell
docker stop sql1
docker rm sql1

경고

컨테이너를 영구적으로 중지하고 제거하면 컨테이너의 모든 SQL Server 데이터가 삭제됩니다. 데이터를 보존해야 하는 경우 컨테이너에서 백업 파일을 만들고 복사하거나 컨테이너 데이터 지속성 기술을 사용합니다.

Docker 데모

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

[출처] https://docs.microsoft.com/ko-kr/sql/linux/quickstart-install-connect-docker?view=sql-server-linux-2017

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 86287
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 78744
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 95486
14 [SQLite]10만 TPS와 10억 행 처리: SQLite의 놀라운 효율성 졸리운_곰 2025.12.05 1184
13 [sqlite] SQlite source code analysis-architecture file 졸리운_곰 2021.04.12 1809
12 [SQLite] SQLite 사용자 함수 추가 졸리운_곰 2021.04.12 1665
11 {SQLite] SQLite 페이지 핸들링(3) - 레코드 포맷 졸리운_곰 2021.04.12 1668
10 [SQLite] SQLite 페이지 핸들링(2) - SQLite의 페이지 포맷 file 졸리운_곰 2021.04.12 1496
9 [SQLite] SQLite 페이지 핸들링(1) - SQLite의 구조 file 졸리운_곰 2021.04.12 1487
8 [C/C++ 자료구조] SQLite 의 모든 것 (4부) - Java 에서 사용하기 Database/SQLite file 졸리운_곰 2021.04.12 1663
7 [C/C++] SQLite 의 모든 것 (3부) - C++ 에서 사용하기 Database/SQLite 졸리운_곰 2021.04.12 1720
6 [C/C++ 자료구조] SQLite 의 모든 것 (2부) - Download & Build Database/SQLite file 졸리운_곰 2021.04.12 1666
5 [C/C++ 자료구조] SQLite 의 모든 것 (1부) - 소개 및 FAQ Database/SQLite file 졸리운_곰 2021.04.12 1332
4 SQLite-sync.com version 3 file 졸리운_곰 2017.07.03 2018
3 DB Browser for SQLite file 졸리운_곰 2017.04.26 1652
2 Getting started with SQLite in C# file 졸리운_곰 2017.04.24 1828
1 SQLite C/C++ Tutorial 졸리운_곰 2017.04.24 1497
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED