SSH 터널 및 Docker와 DB를 연결하는 방법

2345 단어 databasesshdocker
PostgreSQL과 같은 데이터베이스를 사용할 때 오늘날 우리는 일반적으로 Amazon RDS와 같은 관리형 데이터베이스를 사용합니다.

그런 다음 일부 서버만 데이터베이스에 연결할 수 있도록 구성합니다(예: EC2 서버만 RDS의 데이터베이스에 연결할 수 있음).

그러나 때때로 우리는 그러한 데이터베이스에 연결하고 우리 지역에서 무언가를 확인하고 싶습니다. 이 경우 SSH 터널 방식을 사용할 수 있습니다.

이 게시물은 그 방법을 설명합니다.

도커 이미지



데이터베이스에 연결하려면 psql , mysql 또는 이와 유사한 명령을 실행해야 합니다.
따라서 실제 데이터베이스와 호환되는 Docker 이미지를 준비합시다.

이 포스트에서는 PostgreSQL을 예로 들 계획인데, PostgreSQL에 대한 구체적인 정보는 없습니다. 좋아하는 것을 선택하십시오.

SSH 터널



다음으로 SSH 터널을 만들어 봅시다!

실제 명령은 다음과 같습니다.

$ ssh -L 15432:db.some-service.jp:5432 web.some-service.jp -N


그렇게 하려면 sshweb.some-service.jp를 할 수 있어야 합니다. SSH 터널링이 실패한 경우ssh -i {your_ssh_key} {your_ssh_user}@web.some-service.jp 시도하거나 ssh 구성이 올바른지 확인하십시오.

위의 명령은 로컬의 15432 포트를 db.some-service.jp 의 5432 포트로 전달하는 것을 의미합니다.
-N 옵션을 지정하면 명령이 원격 명령을 실행하지 않습니다. 이것은 포트를 포워딩하는 데 유용합니다.

이 명령을 닫지 말고 다음 단계에서 실제로 데이터베이스에 연결해 봅시다!

데이터베이스에 연결



새 탭을 열고 데이터베이스에 연결해 보겠습니다.

실제 명령은 다음과 같습니다.

$ docker run -it --rm postgres:11.9 psql -h host.docker.internal -p 15432 -U db-user -W db_name

# Enter your db password
Password:
db_name=> SELECT * from users;
...


호스트에서 사용하는 내부 IP 주소로 확인되는 특수 DNS 이름host.docker.internal에 연결할 수 있습니다.

그런 다음 이전 단계에서 전달된 15432를 지정하여 데이터베이스에 연결하고 그곳에서 명령을 실행할 수 있습니다!

마지막으로 전달 명령을 닫는 것을 잊지 마십시오!

요약


  • SSH 터널과 Docker를 사용하여 원격 데이터베이스에 쉽게 연결할 수 있습니다.

  • 참고문헌


  • https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds
  • 좋은 웹페이지 즐겨찾기