vsftp-ubuntu-docker学习实践

dockerfile

#source image 
FROM ubuntu:xenial 

#Author 
MAINTAINER shark1985 

#Add file 
ADD sources.list /tmp 

#Sources.list 
RUN mv /etc/apt/sources.list /etc/apt/source.list.bak && cp /tmp/sources.list /etc/apt/ 

#Apt update&install 
RUN apt-get update && apt-get install -y vsftpd 

#Add ftp dir 
RUN cd /srv/ftp && mkdir anyone && chmod 777 anyone && chown ftp:ftp anyone && mkdir -p /var/run/vsftpd/empty 

#Dir mount 
VOLUME /src/ftp/anyone 

#Backup config 
RUN mv /etc/vsftpd.conf /etc/vsftpd.conf.bak 

#Config 
ADD vsftpd.conf /etc/ 

#Port 
EXPOSE 21 20 

#Service 
CMD ["vsftpd"]

匿名配置说明

#匿名主目录 
/srv/ftp 
#匿名目录下创建新目录,并赋予777权限 
mkdir anyone
chmod 777 anyone 
chown ftp:ftp anyone 
ls -l 
drwxrwxrwx 2 ftp ftp 4096 Jun 6 09:58 anyone

vsftpd.conf

anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
secure_chroot_dir=/var/run/vsftpd/empty

构建过程

Sending build context to Docker daemon   5.12kB
Step 1/11 : FROM ubuntu:xenial
 ---> 2a697363a870
Step 2/11 : MAINTAINER shark1985
 ---> Using cache
 ---> d40e95ba4a68
Step 3/11 : ADD sources.list /tmp
 ---> Using cache
 ---> 72ae5928bef7
Step 4/11 : RUN mv /etc/apt/sources.list /etc/apt/source.list.bak && cp /tmp/sources.list /etc/apt/
 ---> Using cache
 ---> facfcffd5888
Step 5/11 : RUN apt-get update &&  apt-get install -y vsftpd
 ---> Using cache
 ---> 25a453daa0fe
Step 6/11 : RUN cd /srv/ftp && mkdir anyone && chmod 777 anyone && chown ftp:ftp anyone && mkdir -p /var/run/vsftpd/empty
 ---> Using cache
 ---> 5166110341c1
Step 7/11 : VOLUME /src/ftp/anyone
 ---> Using cache
 ---> 393dc302dd19
Step 8/11 : RUN mv /etc/vsftpd.conf /etc/vsftpd.conf.bak
 ---> Using cache
 ---> f4bbe06e3e41
Step 9/11 : ADD vsftpd.conf /etc/
 ---> 5e27b4c5ceef
Step 10/11 : EXPOSE 21 20
 ---> Running in 96c696a2862f
Removing intermediate container 96c696a2862f
 ---> 0f0ca16b178c
Step 11/11 : CMD ["vsftpd"]
 ---> Running in c060af0a625e
Removing intermediate container c060af0a625e
 ---> 85490c4228f8
Successfully built 85490c4228f8
Successfully tagged vsftp:latest

运行

docker run -d -p 21:21 -p 20:20 vsftp:latest
c3f236aa083cd058121bf0fac9e947a4fdca3c22b546082be5ccfbc73bbd3fb0

docker ps -a |grep vsftp
17e70fb327f5        vsftp:latest                 "vsftpd"                 5 minutes ago       Up 5 minutes                0.0.0.0:20-21->20-21/tcp                       eager_meitner

测试匿名登录成功

Connecting to 10.x.x.x:21...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
220 (vsFTPd 3.0.2)
Name (10.4.33.15:focus): ftp
331 Please specify the password.
Password: 
230 Login successful.
ftp:/> dir
227 Entering Passive Mode (172,17,0,9,94,13).
ftp:/> passive
Passive mode off.
ftp:/> dir
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxrwxrwx    2 105      106          4096 Jun 10 09:26 anyone
226 Directory send OK.
ftp:/> cd anyone
250 Directory successfully changed.
ftp:/anyone> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.
ftp:/anyone> put
(local-file) grafana.md
200 PORT command successful. Consider using PASV.
150 Ok to send data.
grafana.md: 2.52 KB sent in 0.001 sec (2,583 bytes, 2.46 MB/sec).
226 Transfer complete.
ftp:/anyone> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
grafana.md

存在的问题 : 实际ftp上传的文件应该保存到匿名卷目录对应的本地目录/var/lib/docker/volumes/下,但却保存到了/var/lib/docker/overlay2/,不知道是什么原因?

匿名卷目录

docker inspect 17e70fb327f5 |grep volume
                "Type": "volume",
                "Source": "/var/lib/docker/volumes/4baab887ff82658631586560849133d0da18529bb9d0ddf28e72045094651ce5/_data",

ftp主目录实际对应的本地主机目录

/var/lib/docker/overlay2/981b6e106d43605a64b5ade84cad92e2afab75335173cfaea4235c3c625e7013/diff/srv/ftp/anyone

/var/lib/docker/overlay2/981b6e106d43605a64b5ade84cad92e2afab75335173cfaea4235c3c625e7013/merged/srv/ftp/anyone

相关实际数据目录

        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/981b6e106d43605a64b5ade84cad92e2afab75335173cfaea4235c3c625e7013-init/diff:/var/lib/docker/overlay2/86f37229743e751686d04f3f9b8062329cdacfa2c35d95dd8db756654e97f688/diff:/var/lib/docker/overlay2/3f4f4971cb774b36a5a40d7ec1c0c2e6f26b02459dc142857353dda25614ff33/diff:/var/lib/docker/overlay2/949e229978fe53716f46e663f62acfe8b853b61e695c9d788c63ece9bca9d33e/diff:/var/lib/docker/overlay2/607b909c4d9c11730b7b779d1b44159ac57b4e6f7c1725eb794bac2f7d9763f9/diff:/var/lib/docker/overlay2/ae1b0704bdadb6aede8e1a6b2dde4ec9125217a030a5edbfcb7c257df2bd3a91/diff:/var/lib/docker/overlay2/feca6313970fa2b12b1cade99da5162f0df1b7aeede8c0ed89b37d30cb0ffacf/diff:/var/lib/docker/overlay2/e6abfff5be32b3e5f5bc2fda933d2af3823cda251db33df7d5e7b58a27386082/diff:/var/lib/docker/overlay2/c640057e0fb98bf5d2132331b5b906294f1d3a51493d9d5ea0334797d493c29d/diff:/var/lib/docker/overlay2/a456d5880106522cbec836d763ce5ce35bc2bdbfa75f4c377d4d4a138a80f3cd/diff:/var/lib/docker/overlay2/796a45082b5f5264482fc613c9188c7dfb2040eedd45545991984c55708872a3/diff",
                "MergedDir": "/var/lib/docker/overlay2/981b6e106d43605a64b5ade84cad92e2afab75335173cfaea4235c3c625e7013/merged",
                "UpperDir": "/var/lib/docker/overlay2/981b6e106d43605a64b5ade84cad92e2afab75335173cfaea4235c3c625e7013/diff",
                "WorkDir": "/var/lib/docker/overlay2/981b6e106d43605a64b5ade84cad92e2afab75335173cfaea4235c3c625e7013/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "volume",
                "Name": "4baab887ff82658631586560849133d0da18529bb9d0ddf28e72045094651ce5",
                "Source": "/var/lib/docker/volumes/4baab887ff82658631586560849133d0da18529bb9d0ddf28e72045094651ce5/_data",
                "Destination": "/src/ftp/anyone",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ]
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,194评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,058评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,780评论 0 346
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,388评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,430评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,764评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,907评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,679评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,122评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,459评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,605评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,270评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,867评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,734评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,961评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,297评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,472评论 2 348

推荐阅读更多精彩内容

  • 图片更清晰,文字在最下面 FTP是TCP/IP的一种应用,使用TCP而不是UDP,所以是可靠的,面向连接的。 FT...
    停下浮躁的心阅读 1,691评论 0 4
  • ftp 文件传输协议 跨平台 上传下载文件 vsftpd 工具:非常安全的文件传输协议;默认的命令端口21号,数据...
    柒夏锦阅读 4,017评论 1 9
  • FTP服务概述 简单FTP构建及访问 VSFTP服务基础 用户禁锢、黑白名单 FTP并发及带宽限制 一、FTP服务...
    紫_轩阅读 7,583评论 3 25
  • 2019.2.18 星期一 雨 上午在支付宝上定了两张电影票,《流浪地球》据说票房已经超过《...
    萋萋白露阅读 380评论 0 1
  • 起程 2014年6月19号至26号我和老伴、外孙三口人参加山西东方国旅“晋美台湾8日游”旅行团赴台旅行。其间,因年...
    果菲的世界阅读 256评论 0 14