Run the SQL Server 2017 with Docker
· Version : SQL Server 2017 Linux
SQL Server 2017 Linux 버전을 Docker를 활용해서 빠르게 설치하여 활용하는 방법에 대해서 살펴본다. 이번 포스트에서 다루는 환경 구성은 Windows Host 기반에 Docker(windows버전)를 설치하고 Container로 SQL Server 2017 Linux 를 실행한다. 이 포스트는 SQL Server를 중점으로 다루고 있으며 Docker에 대해서는 다루지 않는다.
Docker 설치가 완료 되었으면 Powershell 명령 도구를 실행 한다. 그리고 아래 명령어를 실행 한다. 이 명령은 최신 버전의 SQL Server 2017 Linux 버전의 컨테이너 이미지를 가져온다.
docker pull microsoft/mssql-server-linux:2017-latest |
아래 명령어를 실행하면 위에서 다운로드 받은 이미지를 확인 할 수 있다.
docker images |
아래 명령을 실행 하여 다운로드 받은 이미지를 container로 실행 한다.
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" ` -p 1401:1433 --name sql1 ` -d microsoft/mssql-server-linux:2017-latest |
· -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" : SA 비밀번호를 생성한다. 이 단계를 필수 이므로 요구 조건을 만족하는 비밀번호를 입력 할 수 있도록 한다.
· -p 1401:1433 : 호스트의 1401 포트를 컨테이너의 1433으로 매핑한다.
· --name sql1 : 컨테이너 이름을 지정한다. 사용자가 변경할 수 있다. 단, 이미 다른 컨테이너에서 이름을 사용하고 있다면 중복으로 사용이 불가능 하다.
· -d microsoft/mssql-server-linux:2017-latest : 컨테이너가 실행할 이미지 이름
아래 명령을 실행하여 SQL Server container가 정상적으로 실행되었는지 확인할 수 있다.
docker ps |
SQL Server 실행이 정상적으로 완료 되었으면, Container에서 SQL Server에 접속할 수 있다. 아래 스크립트를 실행하면 sqlcmd 명령으로 접속할 수 있다.
docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd ` -S localhost -U SA -P "<YourStrong!Passw0rd>" ` |
Container외부에서Container내부의 SQL Server로 접속하기 위해서는 host에서 컨테이너로 매핑하고 있는 IP로 접속해야 한다.아래 명령어로 container 정보를 확인하여 현재 사용되는 포트를 확인한다. Host의 1401 포트가Container의 1433으로 매핑되는것을 확인 할 수 있다.
docker ps |
필자의 경우 mssql-cli를 사용하여 외부에서Container 의 SQL Server로 접속 하였다. SSMS로도 접속이 가능하다.
mssql-cli –S 127.0.0.1,1401 –U sa |
아직은 Docker기반의 SQL Server가 실제 운영환경을 대체할 수 있을지는 잘 모르겠으나, 개발 환경이나 다양한 테스트 환경을 구성하기에는 빠르고 쉽게 설치 할 수 있어 다양한 용도로 활용 할 수 있을듯 하다.
[참고자료]
https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker
2018-04-04 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com
SQL Linux, SQL Server with docker, 도커, 컨테이너, SQL Server 2017
출처: https://sqlmvp.tistory.com/1244?category=618825 [Database Lab]