成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

無(wú)需安裝 vsftpd , 直接使用 FTP 來(lái)管理 docker 容器中的文件

sPeng / 1791人閱讀

摘要:而且需要額外的端口映射,占用主機(jī)的端口。的做法比較,而容器中通常只有基礎(chǔ)的工具,沒(méi)有一個(gè)熟悉的工具套件環(huán)境,操作比較費(fèi)時(shí)費(fèi)力,不夠直觀。

無(wú)圖無(wú)真相,先放個(gè)效果圖:

背景

使用 docker 來(lái)跑一些服務(wù)很方便,但是有的時(shí)候想管理容器里面的文件卻很麻煩 -- 一般常規(guī)做法有3種:

通過(guò)數(shù)據(jù)卷或數(shù)據(jù)卷容器的方式

啟動(dòng)容器的時(shí)候時(shí)候啟動(dòng) vsftpd 或者 sshd 等服務(wù),并開(kāi)啟端口映射,然后通過(guò) ftp/sftp 連上去管理

進(jìn)入容器的終端,通過(guò)命令行管理

但是這些做法都有一定的缺陷和不便:

1和2都是需要在啟動(dòng)容器的時(shí)候做一些配置,如果容器已經(jīng)啟動(dòng)了就歇菜了。而且2需要額外的端口映射,占用主機(jī)的端口。3的做法比較 geek ,而容器中通常只有基礎(chǔ)的 shell 工具,沒(méi)有一個(gè)熟悉的工具套件環(huán)境,操作比較費(fèi)時(shí)費(fèi)力,不夠直觀。

解決方案: ftp-server-for-docker

我所能想到比較好的解決方案是綜合2和3的方案,構(gòu)建一個(gè)不需要額外的啟動(dòng)配置的 FTP 服務(wù)器:ftp-server-for-docker

這是一個(gè) docker 專用的 FTP 服務(wù)器 - 允許通過(guò) FTP 協(xié)議來(lái)訪問(wèn) docker 容器中的文件(即使 docker 容器已經(jīng)啟動(dòng)了也可以的喲)?;?linux shell sh 和 docker 的 docker cp.

如何安裝

推薦使用 npm 安裝:

npm install -g ftp-server-for-docker
如何運(yùn)行 示例1

比如說(shuō)在 localhost:21 上啟動(dòng) FTP 服務(wù)器,并運(yùn)行 test 用戶通過(guò)密碼 123456 來(lái)訪問(wèn):

$ ftp-server-for-docker -H localhost -p 21 --users test:123456
FtpServer start listening at localhost:21
示例2

使用 ftp-server-for-docker 來(lái)瀏覽容器 wordpress 中的文件:

查看命令行幫助

想要知道更多使用方法,可以查看命令行幫助:

$ ftp-server-for-docker --help
Usage: ftp-server-for-docker [options]

Options:
  --port, -p       Specify which port to listen on(default is 21)       [number]
  --host, -H       Specify which host to bind(default is 0.0.0.0)       [string]
  --annoymous, -a  Whether enable annoymous user                       [boolean]
  --users, -u      Specify users (in form like username:password, can be
                   multiple)                                             [array]
  --config, -c     Specify which configuration file to use
  --debug          Whether enable debug mode                           [boolean]
  -h, --help       Show help                                           [boolean]
  -?, --help       Show help                                           [boolean]

Examples:
  ftp-server-for-docker -h localhost -p 21  Start the FTP Server on
  -u test:123                               localhost:21, allow user `test` to
                                            access.
實(shí)現(xiàn)原理

這個(gè) FTP 服務(wù)器網(wǎng)絡(luò)方面采用了比較成熟的 ftpd ,而文件系統(tǒng)模塊替換成了新寫的 Docker FS.

文件系統(tǒng)的基本操作(stat/readdir/open/unlink...)都是通過(guò) docker exec、docker cp 和臨時(shí)文件來(lái)完成,比如:

stat 是通過(guò) docker exec stat xxx 來(lái)查看文件狀態(tài)

readdir 是通過(guò) docker exec ls -1 --color=none 來(lái)列出目錄下的文件

open 是通過(guò) docker cp : 把容器中的文件拷貝到臨時(shí)文件中,然后再讀取的

具體實(shí)現(xiàn)流程參見(jiàn)源代碼

關(guān)于 TypeScript

這個(gè)項(xiàng)目中的主要源代碼都使用 TypeScript -- 都是在 src/*.ts 中,通過(guò) tsc 編譯后生成成 lib/*.js,最終npm打包的只有 lib/*.js 沒(méi)有 src/*.ts.

這是我第一次使用 TypeScript. TypeScript 的強(qiáng)類型帶來(lái)很多方便,也帶來(lái)很多不便。綜合而言,TypeScript 讓我想起了曾經(jīng)使用過(guò)的 C#,結(jié)合 Visual Studio Code 來(lái)用還是利大于弊。TypeScript 能在編輯和編譯的時(shí)候就檢查出很多類型問(wèn)題,而且智能提示確實(shí)很棒。

常見(jiàn)問(wèn)題

FileZilla 無(wú)法列出目錄結(jié)構(gòu) -- 可以嘗試配置傳輸模式為 主動(dòng)模式,被動(dòng)模式還有問(wèn)題,正在解決ing...

中文目錄顯示亂碼 -- 已知問(wèn)題,正在解決ing...

如有其他問(wèn)題,歡迎來(lái)提 issue , 當(dāng)然更歡迎 fork 并解決后來(lái)提 PR.

本文地址:http://www.clarencep.com/2017... 轉(zhuǎn)載請(qǐng)注明出處

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/26854.html

相關(guān)文章

  • docker vsftpd

    摘要:給客服端提供下載服務(wù)隨機(jī)端口號(hào)范圍,默認(rèn),與前面的端口映射設(shè)置成一樣。,防火墻配置如果服務(wù)器有防火墻,為了讓客戶端能夠訪問(wèn)服務(wù)。 1,拉取鏡像首先執(zhí)行如下命令將鏡像下載到本地:?docker pull fauria/vsftpd2,啟動(dòng)容器執(zhí)行如下命令實(shí)例化?ftp?服務(wù):??參數(shù)說(shuō)明:/var/ftp:/home/vsf...

    Carl 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<