拿frp做練習,重新認識docker。
frp為內網穿透工具,可用來將本地網站或服務對外。
首先建立Volumes(資料卷),用來存放資料,名稱為data。
建立好後會發現裡面什麼都沒有,先不管它,繼續往下。
frps
輸入指令
1 | docker run -p 7500:7500 -p 6001:6001 -d -v data:/etc/frp --name frps snowdreamtech/frps |
-p 綁定連接埠port。7500 port是給frp網頁使用,6001 port用來作為對外的窗口,待會會用到。
-d 容器啟動後會進入背景執行。
-v 用來掛載資料卷到容器,此處的data便是剛建立的。冒號後面的/etc/frp為容器內對應的資料夾。
–name 可以為容器自訂命名。
執行後,會發現裡面多了一個frps.toml
進入frps,輸入vi指令編輯
1 | docker exec -it frps sh |
輸入i可進入編輯模式,貼上內容
1 | bindPort = 7000 |
編輯好後,按ESC跳出編輯模式,接著輸入:wq 儲存並離開。
重新執行,結果如下
會看到port 7500已打開,可瀏覽http://localhost:7500
frpc
輸入指令
1 | docker run -d -v data:/etc/frp --name frpc snowdreamtech/frpc |
容器間的port是互通的,不需要用-p綁定。
進入frps,輸入vi指令編輯
1 | docker exec -it frps sh |
貼上內容並儲存
1 | serverAddr = "172.17.0.2" |
serverAddr 要是frps的IP。
重新執行,結果如下
測試
進入frpc做測試,並監聽4000 port,等待接收。
1 | docker exec -it frpc sh |
另外打開cmd視窗,輸入
1 | telnet localhost 6001 |
若有收到回應hello,表示成功囉!
流程大致是telnet打向本地主機的6001 port,會轉送給frps主機的6001 port。根據frpc.toml配置會轉送給frpc主機的4000 port。
這樣既使frpc主機在內網,也能對外開放其服務。
參考資料