docker镜像fauria/vsftpd dockerfile解析(ENV命令,**占位符**)dockerfile命令、dockerfile指令

news/2025/1/12 20:54:47/

文章目录

    • fauria/vsftpd
      • dockerfile原始文件
      • dockerfile解析

在这里插入图片描述

fauria/vsftpd

fauria/vsftpd是一个由Docker Hub用户"fauria"创建的Docker镜像。这个镜像是基于CentOS 7构建的,包含了vsftpd(Very Secure FTP Daemon)服务,并支持被动模式和虚拟用户。通过使用这个镜像,用户可以快速地部署一个vsftpd服务器,并根据需要进行配置和定制。

但是注意,由于使用的基础镜像为centos7,这个镜像不支持arm架构。

dockerhub链接:
https://hub.docker.com/r/fauria/vsftpd/dockerfile

dockerfile原始文件

FROM centos:7ARG USER_ID=14
ARG GROUP_ID=50MAINTAINER Fer Uria <fauria@gmail.com>
LABEL Description="vsftpd Docker image based on Centos 7. Supports passive mode and virtual users." \License="Apache License 2.0" \Usage="docker run -d -p [HOST PORT NUMBER]:21 -v [HOST FTP HOME]:/home/vsftpd fauria/vsftpd" \Version="1.0"RUN yum -y update && yum clean all
RUN yum install -y \vsftpd \db4-utils \db4 \iproute && yum clean allRUN usermod -u ${USER_ID} ftp
RUN groupmod -g ${GROUP_ID} ftpENV FTP_USER **String**
ENV FTP_PASS **Random**
ENV PASV_ADDRESS **IPv4**
ENV PASV_ADDR_RESOLVE NO
ENV PASV_ENABLE YES
ENV PASV_MIN_PORT 21100
ENV PASV_MAX_PORT 21110
ENV XFERLOG_STD_FORMAT NO
ENV LOG_STDOUT **Boolean**
ENV FILE_OPEN_MODE 0666
ENV LOCAL_UMASK 077
ENV REVERSE_LOOKUP_ENABLE YES
ENV PASV_PROMISCUOUS NO
ENV PORT_PROMISCUOUS NOCOPY vsftpd.conf /etc/vsftpd/
COPY vsftpd_virtual /etc/pam.d/
COPY run-vsftpd.sh /usr/sbin/RUN chmod +x /usr/sbin/run-vsftpd.sh
RUN mkdir -p /home/vsftpd/
RUN chown -R ftp:ftp /home/vsftpd/VOLUME /home/vsftpd
VOLUME /var/log/vsftpdEXPOSE 20 21CMD ["/usr/sbin/run-vsftpd.sh"]

dockerfile解析

这是用于构建一个基于CentOS 7的vsftpd镜像的Dockerfile文件,下面将对它解释:

  1. FROM centos:7:指定基础镜像为CentOS 7。
  2. ARG USER_ID=14ARG GROUP_ID=50:定义了两个构建参数,用于指定vsftpd用户和组的ID。
  3. MAINTAINER Fer Uria <fauria@gmail.com>:指定镜像的维护者信息。
  4. LABEL:定义了一些标签,包括描述、许可证、用法和版本等信息。
  5. RUN yum -y update && yum clean all:更新系统并清理yum缓存。

(清理yum缓存的目的是为了减少镜像的大小,并且可以避免在构建镜像时下载重复的软件包。当使用yum install命令安装软件包时,yum会将下载的软件包存储在缓存目录中,以便在以后的安装中重复使用。然而,在构建Docker镜像时,这些缓存文件并不需要包含在镜像中,因为它们只会增加镜像的大小,而不会对镜像的功能产生影响。
通过在Dockerfile中添加yum clean all命令,可以清理yum缓存,删除已下载的软件包和元数据文件。这样可以减小镜像的体积,并且在构建镜像时不会包含不必要的缓存文件。这对于减少镜像的大小和加快构建过程都是有益的。)

  1. RUN yum install -y \ vsftpd \ db4-utils \ db4 \ iproute && yum clean all:安装vsftpd、db4-utils、db4和iproute等软件包,并清理yum缓存。

db4-utilsdb4iproute是在Dockerfile中安装的软件包,它们的作用如下:

  • db4-utils:这是Berkeley DB的实用工具包,它提供了一些用于管理和操作Berkeley DB数据库的命令行工具,如db_dumpdb_load等。在vsftpd中,可能会使用Berkeley DB来存储虚拟用户的认证信息。

  • db4:这是Berkeley DB的运行时库,它提供了对Berkeley DB数据库的访问功能。在vsftpd中,可能会使用Berkeley DB库来读取和验证虚拟用户的认证信息。

  • iproute:这是一个网络工具包,它提供了一些用于配置和管理网络接口、路由表、流量控制等的命令行工具,如ip命令。在vsftpd中,可能会使用ip命令来配置网络接口和路由,以支持被动模式的数据传输。

  1. RUN usermod -u ${USER_ID} ftp:修改ftp用户的ID为构建参数中指定的值。
  2. RUN groupmod -g ${GROUP_ID} ftp:修改ftp组的ID为构建参数中指定的值。

执行RUN usermod -u ${USER_ID} ftpRUN groupmod -g ${GROUP_ID} ftp的目的是修改vsftpd服务所使用的ftp用户和组的ID。
在Docker容器中,每个用户和组都有一个唯一的ID。默认情况下,CentOS 7中的ftp用户和组的ID是14和50。然而,为了避免与宿主机或其他容器中的用户和组冲突,我们可以通过构建参数来指定新的ID。
通过执行usermodgroupmod命令,我们可以修改ftp用户和组的ID为构建参数中指定的值。这样可以确保在容器中运行vsftpd服务时,使用的用户和组的ID是唯一的,并且不会与其他用户和组发生冲突。
这样做的好处是,可以更好地隔离容器中的用户和组,避免潜在的安全问题和冲突。同时,也可以更灵活地根据需要定制用户和组的ID,以适应不同的环境和需求。

  1. ENV:设置一系列环境变量,包括FTP用户、密码、被动模式的地址和端口等。

在Dockerfile中,ENV FTP_USER **String**中的String是一个占位符,表示需要替换为实际的字符串值。
ENV指令用于设置环境变量,其中FTP_USER是环境变量的名称,**String**是环境变量的值。在这里,**String**表示需要替换为实际的字符串值。
例如,如果要将FTP_USER设置为myuser,则可以将ENV FTP_USER **String**替换为ENV FTP_USER myuser
在构建Docker镜像时,可以通过在命令行中使用--build-arg参数来传递实际的字符串值,例如:

docker build --build-arg FTP_USER=myuser .

这样,在构建过程中,Docker将使用传递的值来替换**String**,并将FTP_USER设置为myuser
除此之外,还可以在运行容器时通过命令行参数来传递环境变量的值。
在运行容器时,可以使用-e--env参数来设置环境变量。例如,要将FTP_USER设置为myuser,可以使用以下命令:

docker run -e FTP_USER=myuser <image_name>

这样,在运行容器时,Docker将使用传递的值来设置FTP_USER环境变量。
同时,还可以使用--env-file参数来从文件中读取环境变量的值。例如,如果有一个名为env.txt的文件,其中包含了FTP_USER=myuser这一行,可以使用以下命令:

docker run --env-file env.txt <image_name>

这样,Docker将从env.txt文件中读取环境变量的值,并将其设置为容器中的环境变量。
无论是通过命令行参数还是通过文件来传递环境变量的值,都可以在运行容器时动态地设置环境变量,以适应不同的需求和配置。

  1. COPY:将本地文件复制到镜像中的指定位置。
  2. RUN chmod +x /usr/sbin/run-vsftpd.sh:给run-vsftpd.sh脚本添加可执行权限。
  3. RUN mkdir -p /home/vsftpd/:创建vsftpd的主目录。
  4. RUN chown -R ftp:ftp /home/vsftpd/:将vsftpd的主目录的所有权赋予ftp用户和组。
  5. VOLUME:定义了两个数据卷,分别用于存储vsftpd的主目录和日志文件。
  6. EXPOSE:声明容器将监听的端口号。

VOLUMEEXPOSE指令在Dockerfile中只是用来提供一些元数据信息,而不会自动进行挂载和端口映射。
VOLUME指令用于声明容器中的挂载点,以便其他人在构建和运行容器时知道哪些目录或文件是可以挂载的。但是,它并不会自动在容器中创建挂载点或将主机上的目录或文件与容器中的挂载点进行关联。要实际进行挂载,需要在运行容器时使用-v参数来指定挂载点。
同样地,EXPOSE指令用于声明容器将监听的端口,以便其他人在构建和运行容器时知道哪些端口是可以连接的。但是,它并不会自动将容器的端口映射到主机上的端口。要实际进行端口映射,需要在运行容器时使用-p参数来指定端口映射规则。
因此,VOLUMEEXPOSE指令在Dockerfile中只是提供一些元数据信息,实际的挂载和端口映射需要在运行容器时通过命令行参数来完成。

  1. CMD:指定容器启动时要执行的命令。

这个Dockerfile的作用是构建一个包含vsftpd服务的镜像,并设置了一些默认配置和环境变量。


http://www.ppmy.cn/news/625314.html

相关文章

英伟达GPU算力表

截至2019年7月31日 英伟达GPU算力表&#xff1a;https://developer.nvidia.com/cuda-gpus

[随笔] {Vulkan} 在英伟达显卡环境下SwapChain重建失败

概述 鄙人遇到的一个小问题&#xff1a;在英伟达显卡下&#xff0c;交换链(Swap Chain)不能正常重建。比如&#xff0c;在窗口改变尺寸时。 问题分析 “NVidia gpus require to provide old swapchain to be recreated” “英伟达显卡需要提供老的Swap Chain来创建新的” 解决…

英伟达GPU及架构

英伟达 GTX 1080TI Pascal™ 结构 T4卡 基于Turing架构 P4卡 Pascal™ 结构 V100 基于Volta架构 在某一个架构上进行序列化, 就应该在这个架构上测试, 否则会报错 tensorRT:NVIDIA TensorRT是一种高性能神经网络推理(Inference)引擎&#xff0c;用于在生产环境中部署深…

超强分区表重建工具

前两天五一放假&#xff0c;一个人闲得*疼&#xff0c;看其他人都装了WIN7&#xff0c;想想自己的XP也用很久了&#xff0c;于是在电脑只有1G内存的情况下装了WIN7&#xff0c;当然&#xff0c;现在用起真的很卡。 电脑有两块160G SATA硬盘&#xff0c;装好WIN7在系统磁盘管理…

英伟达两个最新元宇宙布局

元宇宙就好像一片还没有被开发的“美洲”&#xff0c;吸引了许多企业来淘金。当中最积极的莫过于Meta了。实际上除了Meta之外&#xff0c;英伟达也是不遗余力的布局元宇宙&#xff0c;希望成为元宇宙领域的基础设施供应商。在2022年8月的SIGGRAPH大会上&#xff0c;英伟达大秀肌…

英伟达命令

目录 1. 动态查看显存2.不断刷新3.查看具体型号信息4.查看当前系统中GPU占用的线程: 1. 动态查看显存 watch -n 10 nvidia-smi watch -n 0.1 nvidia-smi 2.不断刷新 nvidia-smi -l 1 nvidia-smi 3.查看具体型号信息 nvidia-smi -a nvidia-smi -a NVSMI LOG Timestamp : Fri Jul…

AI芯片:英伟达NVDLA结构分析

英伟达开源了深度学习硬件架构&#xff1a;NVDLA。 包括完整的源代码&#xff1a;Verilog代码&#xff0c;C_Model代码&#xff0c;以及验证平台代码。 英伟达官网上也有详细的文档。 英伟达NVDLA官网&#xff1a;http://nvdla.org/primer.html 非常值得学习推敲。 感谢英伟达…

线性代数笔记整理

文章目录 1 行列式2 矩阵&#xff08;本质是数表&#xff09;3 方程组的解4 向量5 矩阵的特征值和特征向量6 相似矩阵和相似对角化7 合同对角化8 二次型及其标准型 1 行列式 2 矩阵&#xff08;本质是数表&#xff09; 3 方程组的解 4 向量 5 矩阵的特征值和特征向量 6 相似矩阵…