用docker编写DockerFile改进centos7,变成centos7pro,让它安装好vsftpd
时间: 2023-07-20 19:23:27 浏览: 98
好的,我来为您回答这个问题。
首先,我们需要编写一个Dockerfile来创建一个新的基于CentOS 7的镜像,并安装vsftpd。
以下是Dockerfile的内容:
```
FROM centos:7
MAINTAINER Your Name <yourname@example.com>
# 更新软件包
RUN yum -y update && \
yum -y upgrade && \
yum -y install vsftpd && \
yum clean all
# 添加用户和密码
RUN useradd -d /home/ftpuser -s /sbin/nologin ftpuser
RUN echo "ftpuser:password" | chpasswd
# 复制配置文件
COPY vsftpd.conf /etc/vsftpd/vsftpd.conf
# 暴露FTP端口
EXPOSE 20 21
CMD ["/usr/sbin/vsftpd", "/etc/vsftpd/vsftpd.conf"]
```
解释一下:
- `FROM centos:7`:基于CentOS 7
- `MAINTAINER`:定义镜像维护者信息
- `RUN yum -y update && \ yum -y upgrade && \ yum -y install vsftpd && \ yum clean all`:更新CentOS软件包,并安装vsftpd
- `RUN useradd -d /home/ftpuser -s /sbin/nologin ftpuser`:添加一个名为ftpuser的用户,并将其主目录设置为`/home/ftpuser`
- `RUN echo "ftpuser:password" | chpasswd`:为ftpuser用户设置密码
- `COPY vsftpd.conf /etc/vsftpd/vsftpd.conf`:复制我们的vsftpd配置文件到容器中
- `EXPOSE 20 21`:暴露FTP端口
- `CMD ["/usr/sbin/vsftpd", "/etc/vsftpd/vsftpd.conf"]`:在容器启动时启动vsftpd服务,并使用我们的配置文件。
您可以将此文件保存为`Dockerfile`,并在同一目录下创建一个名为`vsftpd.conf`的文件,并在其中添加以下内容:
```
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
```
该配置文件将禁用匿名访问,并允许本地用户访问FTP,还将启用日志记录和用户身份验证。
接下来,使用以下命令在Dockerfile所在的目录中构建镜像:
```
docker build -t centos7pro .
```
最后,您可以在容器中启动vsftpd服务,并将FTP端口映射到主机上的端口:
```
docker run -d -p 20:20 -p 21:21 centos7pro
```
这将在容器中启动vsftpd服务,并将20和21端口映射到主机上的相应端口。
希望这个回答能够帮到您!
阅读全文