2016-09-23 131 views
1

使用虛擬主機而不是部署的Docker容器,對於我來說,創建ssh隧道是爲了從我的本地框訪問分隔的機器是一個正常的工作過程。例如,將我的psql客戶端連接到Postgres實例,我只能從堡壘盒子到達。等效使用ssh隧道

隨着Docker的發展,一切都變得更加複雜。是否有相同的做法,但與Docker?通過Docker實例隧道到RDS實例?

回答

0

您使用docker CLI連接到正在運行的容器。例如...

要登錄到你可以使用(從本地計算機)容器中的DB運行

docker exec -it mypsqlcontainer psql -U username dbname 

我個人幾乎從來沒有ssh到主機。一切都可以通過docker CLI完成。

+0

太好了,所以我還需要將它與查找碼頭容器ID的命令結合起來? – Mahoni

+0

如果您命名容器並使用名稱而不是id,則會更容易。 例如: 碼頭運行-d --name mysqlcontainer mysql:latest 然後,您可以使用我上面的'docker exec ..'行,而不必找出容器ID。 當然,這隻適用於每個容器有1個實例的情況。當您使用「--scale」爲給定服務創建多個容器時,不能指定'--name'。 – Alkaline

0

您可以對docker主機進行ssh-tunnel。 DB端口必須可以從碼頭主機訪問(即使用「-p」碼頭運行選項)。

如果您不想發佈DB端口,您可以使用ssh服務器創建跳箱容器,在此容器上發佈端口22,並將用戶容器鏈接到鏈接跳箱容器和數據庫容器。