首页 > 系统相关 >centos 7 下docker 部署vsftpd(docker-compose)

centos 7 下docker 部署vsftpd(docker-compose)

时间:2023-04-24 22:56:39浏览次数:43  
标签:21100 21110 compose ftp vsftpd PASV docker

启动命令:

docker run -d -p  21:21 -p  20:20 -p 21100-21110:21100-21110 -v /opt/vsftpd/file:/home/vsftpd -e FTP_USER=admin -e FTP_PASS=1234   \
  -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 -e PASV_ADDRESS=0.0.0.0 -e PASV_ENABLE=YES --name ftp \
  --restart=always --privileged=true fauria/vsftpd

-d	后台启动容器
-p 20:20	将外部的20端口映射到内部的20端口
-p 21:21	将外部的21端口映射到内部的21端口
-p 21100-21110:21100-21110	将外部的 21100-21110端口映射到内部的21100-21110端口
-v /opt/vsftpd/file:/home/vsftpd	将本地磁盘的 /opt/vsftpd/file路径映射到内部的/home/vsftpd路径
-e FTP_USER=admin	ftp的主用户
-e FTP_PASS=1234	ftp主用户的密码
-e PASV_MIN_PORT=21100	最小被动端口
-e PASV_MAX_PORT=21110	最大被动端口
-e PASV_ADDRESS=10.73.139.201	指定本机的ip
-e PASV_ENABLE=YES	启动被动模式
--name ftp	取一个名字,之后可以用(docker stop 名字 )来停止容器
--restart=always	开机自启动
--privileged=true	容器内用户获取root权限
fauria/vsftpd	仓库的镜像

创建用户:

# 1 进入docker ftp交互模式:
docker exec -i -t ftp bash

-i	连接容器的STDIN和容器外的STDIN
-t	告诉 docker 内部的主进程它的输入是终端设备
ftp	指定要进入的容器的名字(这个是在创建的时候使用–name指定的)
bash	使用bash作为终端

# 2 创建用户家目录并赋予权限:
mkdir /home/vsftpd/user1 && chown -R ftp.ftp /home/vsftpd/user1
mkdir /home/vsftpd/user2 && chown -R ftp.ftp /home/vsftpd/user2

# 3 将账号密码信息写入文件(注意:该命令在容器内执行, \n 是换行符)
echo -e "user1\nech" >> /etc/vsftpd/virtual_users.txt
echo -e "user2\nech" >> /etc/vsftpd/virtual_users.txt

# 4.使用脚本读取刚刚写入的文件(注意:该命令在容器内执行)
/usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db

# 5.退出容器(注意:该命令在容器内执行)
exit

# 6.重启ftp
docker restart ftp

测试ftp状态:

[root@bj-121-240 ~]# ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 3.0.2)
Name (127.0.0.1:root): admin
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (0,0,0,0,82,116).
150 Here comes the directory listing.
226 Directory send OK.
ftp> mkdir test
257 "/test" created
ftp> ls
227 Entering Passive Mode (0,0,0,0,82,108).
150 Here comes the directory listing.
drwx------    2 ftp      ftp             6 Apr 24 03:49 test
226 Directory send OK.
ftp> cd test
250 Directory successfully changed.
ftp> exit

保存镜像:

## 将改动过的把容器打包成镜像:
[root@bj-121-240 ~]# docker ps -a
CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS                          PORTS                                                            NAMES
dec06a8635f7   fauria/vsftpd     "/usr/sbin/run-vsftp…"   31 minutes ago   Up 21 minutes                   0.0.0.0:20-21->20-21/tcp, 0.0.0.0:21100-21110->21100-21110/tcp   ftp

[root@bj-121-240 ~]# docker commit dec06 ftp-ech  
sha256:cc28d3be63adf17c5b14b3bc4b7e88c0a4dac1c9f4be2d846580f8335c85bd84

[root@bj-121-240 ~]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED         SIZE
ftp-ech      latest    cc28d3be63ad   5 seconds ago   394MB
fauria/vsftpd     latest    9bfb39139661   2 months ago    394MB  

## Docker images 导出: 
docker save ftp-ech > ftp-ech.tar.gz           # 第一种导出镜像 
docker save ftp-ech -o /root/ftp-ech.tar.gz     # 第二种导出镜像

## Docker images 导入:
docker load -i /root/ftp-ech.tar.gz                 # 导入镜像

## 用新的镜像启动容器:
docker run -d -p  21:21 -p  20:20 -p 21100-21110:21100-21110 -v /opt/vsftpd/file:/home/vsftpd -e FTP_USER=admin -e FTP_PASS=1234   -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 -e PASV_ADDRESS=0.0.0.0 -e PASV_ENABLE=YES --name ftp --restart=always --privileged=true ftp-ech

docker-compose.yaml

[root@bj-121-240 home]# cat docker-compose.yaml 
version: '3'
services:
  vsftpd:
    image: ftp-ech
    container_name: ftp
    environment:
      - FTP_USER=admin              # 自定义用户名
      - FTP_PASS=ech.com            # 自定义用户密码 
      - PASV_ENABLE=YES
      - PASV_ADDRESS=0.0.0.0        # 宿主机的IP
      - PASV_MIN_PORT=21100
      - PASV_MAX_PORT=21110
      - ANON_ENABLE=NO
      - privileged=true
    volumes:
      - /opt/vsftpd/file:/home/vsftpd        # 将本地磁盘的 /opt/vsftpd/file路径映射到内部的/home/vsftpd路径
    ports:
      - "20:20"
      - "21:21"
      - "21100-21110:21100-21110"
    restart: always

标签:21100,21110,compose,ftp,vsftpd,PASV,docker
From: https://www.cnblogs.com/zhenxing06/p/17351251.html

相关文章

  • docker compose 常用网络
    1.共享宿主机网络host#docker-compose.yml中设置network_mode:host#此时端口配置ports失效2.桥接网络bridge(默认)#自定义桥接网络dockernetworkcreatewebnet_db#数据库服务使用上面定义好的桥接网络#docker-compose.ymlversion:'3.1'services:db:......
  • docker-compose一键部署java开源项目
    这一年干的很多事都是为了降低我的开源项目消息推送平台austin使用门槛。如果想学Java项目的,强烈推荐我的开源项目消息推送平台Austin(8Kstars),可以用作毕业设计,可以用作校招,可以看看生产环境是怎么推送消息的。开源项目消息推送平台austin仓库地址:消息推送平台......
  • 在mac上使用docker部署Mongo数据库
    拉取镜像打开网址https://hub.docker.com/,搜索mongo,https://hub.docker.com/_/mongo执行命令dockerpullmongo启动容器执行命令dockerimage,查看到mongo的tag是5.0.16启动命令dockerrun-dit--namemongo5-p27017:27017-v/Users/huidongma/data/mongodb:......
  • docker
    images语法:dockerimages[OPTIONS][REPOSITORY[:TAG]]OPTIONS:参数REPOSITORY:镜像名称TAG:版本号参数选项作用–all,-a显示所有镜像(默认情况下中间镜像不会显示)–digests显示镜像摘要信息–filter,-f根据给定条件筛选镜像befor=  dangling= label=   reference=......
  • docker启动nginx
    1.下载对应镜像dockerpullnginx:1.19.102.运行容器dockerrun-p80:80--namenginx01nginx:1.19.10--restart=always-v容器(/etc/nginx/nginx.conf)1).实现反向代理 负载均衡拷贝文件:docker  cp 容器ID:/etc/nginx/nginx.conf  /root/nginxconf ......
  • Docker容器日志中文乱码问题
    背景:在使用docker部署springboot项目的时候,查看项目日志的过程中,发现中文打印出来的都是乱码:??????楼主是通过dockerfile创建的镜像,解决方案:DcokerFile中增加环境变量ENVTZ'Asia/Shanghai'ENVLANGen_US.UTF-8ENVLANGUAGEen_US:enENVLC_ALLen_US.UTF-8其......
  • docker 常用命令
    docker常用命令dockerps 查看当前运行中的容器dockerimages 查看镜像列表dockerrmcontainer-id 删除指定id的容器dockerstop/startcontainer-id 停止/启动指定id的容器dockerrmiimage-id 删除指定id的镜像dockervolumels 查看volume列表dockernetwork......
  • 安装Docker
    1.安装底层⼯具sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm22.加⼊阿⾥云yum仓库提速docker下载过程sudoyum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3.更新⼀下仓库的源信息sudoyummakec......
  • docker搭建本地私有仓库详细步骤
    1、首先下载registry镜像2、在daemon.json文件中添加私有镜像仓库的地址并重启3、创建registry容器并开放端口4、给镜像打标签后上传到私有仓库5、获取私有仓库列表查看是否上传成功6、验证:从私有仓库下载镜像 1、首先下载registry镜像dockerpullregistry......
  • 在docker中查看对应k8s容器日志
    个人博客地址:https://note.raokun.top拥抱ChatGPT,国内访问网站:https://www.playchat.top最近遇到在不知道k8s环境只知道k8s部署的docker地址时,需要查看服务日志。dockerinspect容器id|greplog可查看对应的log地址......