Dockerfile
FROM alpine:latest
# 安装OpenSSH服务
RUN apk add --no-cache openssh-server openssh-client sudo docker-cli util-linux bash
RUN ln -s /bin/bash /usr/bin/bash
RUN mkdir /var/run/sshd
# 生成主机密钥
RUN ssh-keygen -A
# 添加一个名为'sshuser'的用户,设置密码为'sshpassword',并将其添加到'sshuser'组
RUN adduser -D sshuser && \
echo 'sshuser:sshpassword' | chpasswd && \
addgroup sshuser wheel
RUN echo '%wheel ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
EXPOSE 22
# 拷贝entrypoint脚本到容器中
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
# 指定entrypoint脚本作为容器启动时的执行命令
ENTRYPOINT ["/entrypoint.sh"]
使用的entrypoint.sh如下
#!/bin/sh
if [ -n "$USERNAME" ]; then
adduser -D "$USERNAME"
if [ -n "$PASSWORD" ]; then
echo "$USERNAME:$PASSWORD" | chpasswd
else
echo "$USERNAME:sshpassword" | chpasswd
fi
addgroup "$USERNAME" wheel
sed -i "s#^$USERNAME:\([^:]*\):#$USERNAME:/bin/bash:#" /etc/passwd
fi
/usr/sbin/sshd &
tail -f /dev/null
Usage
默认的用户名是sshuser 密码是sshpassword 启动容器后可以从外部使用ssh命令登录容器
# 创建镜像
docker build -t fake_linux_node:latest .
docker tag fake_linux_node:latest 2niuhe/fake_linux_node
# run container
docker run -d -p 9000:22 2niuhe/fake_linux_node
docker run -d -p 9001:22 -e USERNAME=test -e PASSWORD=test123 2niuhe/fake_linux_node
# ssh login
ssh sshuser@127.0.0.1 -p 9000
ssh test@127.0.0.1 -p 9001
接着可以上传到dockerhub中,已经上传了一个arm版本的,可以如下pull使用
docker pull 2niuhe/fake_linux_node
其它用法可以参考Docker Hub