source

SQL Server Management Studio를 사용하여 도커 컨테이너에 원격 연결

factcode 2023. 7. 8. 11:13
반응형

SQL Server Management Studio를 사용하여 도커 컨테이너에 원격 연결

컨텍스트:Microsoft SQL Server Management Studio(SQL Server Management Studio)에서 계속해서 SQL을 배울 수 있는 개발 SQL Server Management Studio).SSMSWindows PC에서 액세스할 수 있습니다.

DigitalOcean Ubuntu 16.04 박스에서 실행되는 MS SQL Server 2017용 Docker Container에 AdventureWorks 데이터베이스가 있습니다.Mac에서 SSH를 서버에 원격으로 연결하고 컨테이너에 액세스하고 데이터베이스를 쿼리할 수 있습니다.

하지만 Windows PC에서 SSMS를 사용하고 싶어서 원격 상자에 연결하는 방법을 잘 모르겠습니다.아래 그림에서는 SQL 서버에 액세스하기 위해서만 SSH 키를 지정하거나 Ubuntu 상자에 로그인하는 옵션이 없습니다.

enter image description here

이게 가능할까요?

공용 IP 주소를 사용하여 SSMS를 통해 연결한 다음 쉼표 구분 기호를 사용하고 포트(xxx.xx.xx.xxx ,port)를 사용합니다.

이 작업을 수행하려면 자격 증명도 필요합니다.

이 경우 서버 이름 입력이 서버 IP, 포트 #가 됩니다.

Remote setup image

ssh가 필요 없습니다. SQL Server 서비스를 인터넷에 노출하기만 하면 됩니다.

SQL Server Management Studio를 사용하여 로컬 시스템의 도커 컨테이너에 연결할 때 localhost ip를 사용할 수 있습니다.이 경우 Server Name 입력은 127.0.0.1,port#됩니다.

To clarity, I attached image of my SSMS Connection Dialog

이 사이트의 지침에 따라 Windows Containers에서 해결되었습니다. https://www.sqlshack.com/sql-server-with-a-docker-container-on-windows-server-2016/ SSMS에서 즉시 SQL Server에 연결할 수 있었습니다.

다음 명령을 사용하여 Linux 컨테이너에서도 작동하는 경우 사용해 보십시오.

docker run --name mssqltrek-con1 -d -p 1433:1433 -e sa_password=My$eCurePwd123# -e ACCEPT_EULA=Y microsoft/mssql-server-windows-developer

이를 실행한 후 다음을 사용하여 올바른 IP를 검색할 수 있습니다.

docker inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" mssqltrek-con1

저의 경우 컨테이너 IP에 연결하기 위해 호스트를 차단한 것은 Cisco VPN이었습니다.작동하려면 아래 이미지에 표시된 "Cisco Any Connect Network Access Manager"의 선택을 취소해야 했습니다.이렇게 하면 VPN이 더 이상 연결을 관리하지 않습니다.

enter image description here

SQL 도커 서버에 연결할 수 있습니다.

  1. 도커 이미지가 호스팅되는 시스템의 IP 사용, 포트

IP_Of_Machine, 포트

  1. 사용자 - sa(기본값) 및 암호를 제공합니다.

  2. 명령도 할 수 있습니다>

도커 exec -it <container_id | container_name> /opt/mssql-tools/bin/sqlcmd -S localhost -USA -P <your_password>

이 문제는 OP와 정확히 같은 문제는 아니지만 SQL Server Management Studio에서 SQL 도커 컨테이너를 생성한 후 로그인할 수 없습니다.알고 보니 제가 사용한 sa 비밀번호가 보안이 충분하지 않았습니다.컨테이너를 삭제하고 더 안전한 암호로 다시 생성하면 SQL Server Management Studio에서 컨테이너에 연결할 수 있습니다.암호를 충분히 강력하게 지정하지 않으면 컨테이너가 계속 생성됩니다. 로그인할 수 없습니다!이것이 누군가에게 시간을 좀 절약해 주기를 바랍니다.

저는 이 페이지의 답변으로부터 이익을 얻었지만, 저는 제 자신의 수정을 겪어야 했습니다.어떤 이유에서인지, 저의 경우, 그것은 localhost,1433을 받아들이지 않았지만 127.0.0.1,1433을 받아들였습니다.

에는 저의경는에우를 사용했습니다.docker-compose연결할 수 없습니다.도커 작성 파일에 포트를 명시적으로 지정하여 수정했습니다.

mysqldb:
    ports:
      - "1433:1433"
    environment:
      - ACCEPT_EULA=Y
      - SA_PASSWORD=SuperSecretPassword!23
    image: registry/mysqlimage

SSMS를 통해 연결하려고 할 때도 같은 문제가 발생했습니다. 로컬 호스트와 함께 시도했지만 1433은 도움이 되지 않습니다.여기에 이미지 설명 입력

R&D를 좀 한 후에 해결할 방법을 찾았습니다.

  • 도커 도구 상자의 일부로 설치될 오픈 쿠버네테스(내 집은 하이퍼-v를 지원하지 않는 10개의 홈에서 우승함)
  • 앱 왼쪽에 있는 SQL 컨테이너를 클릭합니다.
  • 앱의 오른쪽에 있을 IP 주소를 복사합니다.
  • SSMS의 자격 증명과 함께 XXX.XX.XX.XX,1433과 같은 포트가 있는 IP 주소 사용

여기에 이미지 설명 입력

언급URL : https://stackoverflow.com/questions/47984603/using-sql-server-management-studio-to-remote-connect-to-docker-container

반응형