Dockerfile:
FROM centos:centos7.9.2009
USER root
ENV SAMBA_CFG_DIR /etc/samba
RUN yum clean all && yum makecache && yum install samba samba-client samba-common -y && yum clean all
RUN rm -rf $SAMBA_CFG_DIR/smb.conf
ADD ./smb.conf $SAMBA_CFG_DIR/
RUN mkdir /home/smb_anony_share && chmod -R 0755 /home/smb_anony_share && chown -R nobody:nobody /home/smb_anony_share
CMD ["/sbin/smbd", "-D", "-s", "/etc/samba/smb.conf"]
用上面的dockerfile构建的镜像使用docker run -d -v /home/smbanonymous/anonymous:/home/smb_anony_share -p 445:445 --name="smb_anony_share" ycc/samba_anonymous_share:latest运行该容器发现立即退出,我随后run -it bash进入容器ps -aux发现smbd进程没有运行,但是手动在容器中运行smbd -D就能使其正常运转,问一下工程师这是什么原因?
该回答引用GPTᴼᴾᴱᴺᴬᴵ
这个问题可能是由于CMD命令行没有在容器内启动smbd进程导致的。您可以尝试修改Dockerfile中的CMD命令行,使用shell脚本或者执行smbd的命令行启动服务。
例如,您可以尝试将CMD命令行改为:
CMD ["/bin/bash", "/start_smbd.sh"]
然后在Dockerfile中添加以下内容:
RUN echo "#!/bin/bash" > /start_smbd.sh
RUN echo "/usr/sbin/smbd -D -s /etc/samba/smb.conf" >> /start_smbd.sh
RUN chmod +x /start_smbd.sh
这样,当容器启动时,它将运行/start_smbd.sh脚本,该脚本将启动smbd进程。
另外,请确保smb.conf配置文件中的参数设置正确,确保能够正常启动smbd服务。