docker中安装vsftpd并完美解决登录慢的问题。

1.前序:想在docker上vsftpd,很简单,几个命令就搞定了,可是呢,连接时间非常的慢30-40,甚至更长,于是X度一番,发现就说把/etc/resolv.conf给清空就可以了。没错确实清空就可以了。不过问题接踵而来,重启后,resolv.conf里面的nameserve又出现了。痛苦呀。尝试了挂载(有叫映射的)就是docker -v 想着先启动看,容器vsftpd能不能挂载外面的resolv.conf文件。vsftpd只能挂载ftp文件的目录。不行。因为这是独立于容器的,从hosts加载过来的。痛苦呀。然后又是一顿,度。dock如何让挂载/etc配置生效。几乎都是那一片,source /etc/profile 添加/etc/bashrc目录最后。也用了下source /etc/vsftpd/vsftpd.conf source /etc/resolv.conf没用。重启后连接还是慢。突发奇想,能不能用个shell去修改resolv.conf开始弄shell,又是一顿弄呀,大量的时间精力。各种心酸,最后,终于。**有了解决方案。
这个同样适用于,以后在/etc目录下重启会覆盖的配置文件方案。就是在宿主机(装你docker的机器,作者的centos7),启动后执行,写的脚本,把删除resolv.conf的命令写入到/etc/bashrc文件。(也可以手动加进去都行)执行shell命令更方便。这个/etc/bashrc文件只要你不删除容器(vsftpd)**你重启后还能用。里面保存着你的命令。全网第一份。服务于大众。啰嗦了这么多开始吧。

1.节省时间方案,不求甚解。类比:自动挡车

docker pull fauria/vsftpd

在这里插入图片描述
开放端口

firewall-cmd --permanent --add-port=20/tcp
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-port=21100/tcp
firewall-cmd --permanent --add-port=21101/tcp
firewall-cmd --permanent --add-port=21102/tcp
firewall-cmd --permanent --add-port=21103/tcp
firewall-cmd --permanent --add-port=21104/tcp
firewall-cmd --permanent --add-port=21105/tcp
firewall-cmd --permanent --add-port=21106/tcp
firewall-cmd --permanent --add-port=21107/tcp
firewall-cmd --permanent --add-port=21108/tcp
firewall-cmd --permanent --add-port=21109/tcp
firewall-cmd --permanent --add-port=21110/tcp
firewall-cmd --reload

创建放你ftp文件的文件夹。

mkdir myFtpFile

创建shell命令的文件夹,放一会要执行的命令。

mkdir /var/job

先启动容器,你也可以先写shell都行。这里启动的用户名,密码都是root。提供了两篇优秀作者的文章。
参考1 参考2

docker run -d -p 20:20 -p 21:21 -p 21100-21110:21100-21110 -v /myFtpFile:/home/vsftpd -e FTP_USER=root -e FTP_PASS=root -e PASV_ADDRESS=192.168.3.165 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 --name vsftpd --restart=always fauria/vsftpd

启动后,运行命令看一下是否up
可以先连接一下,巨卡。

docker ps -a

在这里插入图片描述

创建shell脚本在/var/job下面2.sh。名字自己可变的。

vim 2.sh
#!/bin/bash
docker exec -i vsftpd bash <<'EOF'
echo  "start"
echo ": > /etc/resolv.conf" >> /etc/bashrc
echo "true > /etc/resolv.conf" >> /etc/bashrc
echo "echo > /etc/resolv.conf" >> /etc/bashrc
echo "truncate -s 0 /etc/resolv.conf" >> /etc/bashrc
echo "source /etc/resolv.conf" >> /etc/bashrc
echo "echo "beautiful eit property.next connection ftp";" >> /etc/bashrc
source /etc/bashrc
echo  "end"
exit
EOF

精细编写。
运行脚本。

source /var/job/2.sh

好了,就这么多。
打开windows的cmd窗口,命令那两个优秀作者里面写的有。
在这里插入图片描述
非常快就连接上了。爽歪歪。

2.探求原理方案(类比:手动档万岁)

第一段的序言理解的话,这段就容易了。
进入容器内部

docker exec -it vsftpd bash

注意,里面只能使用vi命令。

vi /etc/bashrc

在文件最后。添加

: > /etc/resolv.conf
true > /etc/resolv.conf
echo > /etc/resolv.conf
truncate -s 0 /etc/resolv.conf
source /etc/resolv.conf
echo "beautiful eit property.next connection ftp";

在这里插入图片描述
最后

source /etc/resolv.conf

重启下容器试试吧。
引申思考,可以把这种方案,应用到其他需要修改配置文件的容器。后面会再写一篇。
切记,别删除容器,删除了,还需要重新再来,重启不碍事的。
真是太不容易了。欢迎与我讨论共同成长,如果觉得对你有帮助,可以请我喝咖啡,一分也是爱。
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值