1.新建一个目录来存放dockerfile

mkdir /opt/SecretFlow/dockerfile

2.编写dockerfile文件

apt版本

FROM secretflow/secretflow-anolis8:latest

# 设置环境变量
ENV DEBIAN_FRONTEND=noninteractive

# 安装必要的软件
RUN apt-get update && \
    apt-get install -y \
    openssh-server \
    openssh-client \
    sudo \
    vim \
    net-tools \
    iputils-ping \
    curl \
    wget && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# 创建SSH目录
RUN mkdir -p /var/run/sshd

# 配置SSH
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \
    sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config && \
    echo "ClientAliveInterval 60" >> /etc/ssh/sshd_config && \
    echo "ClientAliveCountMax 3" >> /etc/ssh/sshd_config

# 创建启动脚本
RUN echo '#!/bin/bash\n\
# 启动SSH服务\n\
service ssh start\n\
\n\
# 保持容器运行\n\
tail -f /dev/null' > /start.sh && \
    chmod +x /start.sh

# 设置工作目录
WORKDIR /workspace

# 设置环境变量
ENV PYTHONPATH=/workspace

# 暴露端口
EXPOSE 22 8888

# 使用启动脚本
ENTRYPOINT ["/start.sh"]

yum版本

FROM secretflow/secretflow-anolis8:latest

# 安装SSH服务
RUN yum install -y openssh-server openssh-clients && \
    yum clean all

# 配置SSH
RUN mkdir -p /var/run/sshd && \
    ssh-keygen -A && \
    sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config && \
    sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config

# 设置root密码
RUN echo 'root:secretflow' | chpasswd

# 创建启动脚本 - 使用echo命令替代heredoc
RUN echo '#!/bin/bash' > /start.sh && \
    echo '# 启动SSH服务' >> /start.sh && \
    echo '/usr/sbin/sshd' >> /start.sh && \
    echo '' >> /start.sh && \
    echo '# 保持容器运行' >> /start.sh && \
    echo 'echo "Container is running with SSH service on port 22..."' >> /start.sh && \
    echo 'tail -f /dev/null' >> /start.sh

RUN chmod +x /start.sh

WORKDIR /workspace
ENV PYTHONPATH=/workspace
EXPOSE 22 8888

# 使用启动脚本
ENTRYPOINT ["/start.sh"]

3.通过文件构建镜像

docker build -t secretflow-ssh:latest .//.表示你当前所在的目录,必须是dockerfile所在目录才行

推送镜像到镜像仓库

# 1. 标记镜像(使用英文冒号和全小写)
docker tag secretflow-ssh:latest 192.168.127.131:80/secretflow/secretflow-ssh:latest

# 2. 登录到私有仓库(如果需要认证)
docker login 192.168.127.131:80

# 3. 推送镜像到仓库
docker push 192.168.127.131:80/secretflow/secretflow-ssh:latest

                

更多推荐