本人菜鸟一枚,今天想用dockerfile构建一个ftp服务容器,遇到一些问题,实在不知道怎么回事,请教一下论坛里的高手。具体问题如下:
dockerfile:FROM centos:7
        ADD proftpd-1.3.5b.tar.gz /opt
        COPY proftpd.conf /opt
        RUN yum install -y net-tools \
                && useradd -s /sbin/nologin proftp \
                && echo "proftp:123.com" | chpasswd \
                && yum install -y gcc make \
                && cd /opt/proftpd-1.3.5b \
                && ./configure --prefix=/usr/local/proftpd \
                && make \
                && make install \
                && mv /usr/local/proftpd/etc/proftpd.conf /usr/local/proftpd/etc/proftpd.conf.bak \
                && cp /opt/proftpd.conf /usr/local/proftpd/etc/
        EXPOSE 21
        CMD /usr/local/proftpd/sbin/proftpd
构建:docker build -t proftpd:v1 .最后提示成功!
然后启动容器[root@localhost dockerfile]# docker run -itd -p 21:21 proftpd:v1
4a3d876a92f2a73dc20ba45764b79d0230bd98e00eb2b1155f73eb570c740d01
[root@localhost dockerfile]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS               NAMES
4a3d876a92f2        proftpd:v1          "/bin/sh -c /usr/l..."   7 seconds ago       Exited (0) 6 seconds ago                             wonderful_perlman端口映射失败了,进入容器看了一下 确实服务没起来 是dockerfile里面CMD命令写的不对么,请高手指教!

解决方案 »

  1.   

    docker inspect containerID
    去LogPath看下日志 
      

  2.   

    docker run -itd -p 21:21 proftpd:v1
    语法上没有问题,或许是你的端口值太小。建议改大些不如30000:30000 是不是21端口被占用
      

  3.   

    因为执行了/usr/local/proftpd/sbin/proftpd后终端就退出了,从而容器也退出了。
    所以需要改成:
    CMD /usr/local/proftpd/sbin/proftpd && top
    这样你的命令会阻塞从而容器不会退出。