在使用Docker部署FTP服務(wù)時(shí),我們通常會(huì)遇到FTP被動(dòng)和主動(dòng)連接兩種連接模式。FTP主動(dòng)連接是一種主動(dòng)向客戶端發(fā)送數(shù)據(jù)的連接方式。在這種情況下,客戶端向服務(wù)器發(fā)送連接請(qǐng)求,服務(wù)器端獲得請(qǐng)求后主動(dòng)向客戶端發(fā)送數(shù)據(jù)。下面我們來了解一下Docker中如何實(shí)現(xiàn)FTP主動(dòng)連接。
1. 在運(yùn)行FTP Docker容器的時(shí)候,需要加上 -p 20-21:20-21/tcp -p 30000-30009:30000-30009/tcp 參數(shù),開啟FTP的主動(dòng)模式所需要的端口。 2. 在Dockerfile文件中,我們需要添加以下啟動(dòng)命令: CMD ["/usr/sbin/vsftpd", "/etc/vsftpd/vsftpd.conf", "&", "sleep", "2s", "&", "/usr/local/bin/run-vsftpd-active.sh"] 其中run-vsftpd-active.sh文件內(nèi)容如下: #!/bin/sh sysctl -w net.ipv4.tcp_tw_reuse=1 &>/dev/null echo "open port 20" >/var/run/vsftpd/vsftpd.sock echo "done" 3. 在vsftpd.conf中將pasv_enable=yes參數(shù)改為pasv_enable=no,并添加以下內(nèi)容: pasv_address=${HOST_IP} pasv_max_port=30009 pasv_min_port=30000 其中${HOST_IP}為宿主機(jī)地址,用于設(shè)置FTP的主動(dòng)連接地址。 4. 重啟FTP服務(wù)后,即可使用FTP的主動(dòng)連接方式進(jìn)行文件傳輸。
總結(jié)起來,F(xiàn)TP主動(dòng)連接是一種服務(wù)器主動(dòng)向客戶端發(fā)送數(shù)據(jù)的連接方式,需要開放一定的端口用于主動(dòng)連接。在Docker環(huán)境下,我們需要在啟動(dòng)FTP容器時(shí)設(shè)置相應(yīng)的參數(shù),以及修改vsftpd.conf文件中的配置信息,來實(shí)現(xiàn)FTP的主動(dòng)連接。
上一篇dockerftip