使用dockerfile构建镜像
·
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
更多推荐
所有评论(0)