参考 docker中制作alpine+sshd的基础镜像
选择基础系统镜像
还是考虑用debian系列,docker pull debian:bullseye-slim
docker run -itd --name debian-for-sshd -p 59010:2222 -p 59011:22 --privileged=true debian:bullseye-slim /bin/bash
docker exec -it debian-for-sshd /bin/bash
安装sshd
国内源/更新/安装sshd nano tzdata
sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
apt update
apt install openssh-server nano tzdata
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
配置登录信息
1
2
3
4
5
6
7
| sed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config && \
ssh-keygen -t dsa -P "" -f /etc/ssh/ssh_host_dsa_key && \
ssh-keygen -t rsa -P "" -f /etc/ssh/ssh_host_rsa_key && \
ssh-keygen -t ecdsa -P "" -f /etc/ssh/ssh_host_ecdsa_key && \
ssh-keygen -t ed25519 -P "" -f /etc/ssh/ssh_host_ed25519_key
echo "root:root" | chpasswd
|
打开sftp
https://dev.leiyanhui.com/pve/open-sftp/
修改端口 为2222
1
2
| nano /etc/ssh/sshd_config
/etc/init.d/ssh restart
|
测试登录
1
| ssh root@10.0.0.9 -p 59010
|
配置脚本自动启动
1
2
| echo "/etc/init.d/ssh start" > /autoboot.sh
echo "tail -f /dev/null" >> /autoboot.sh
|
最后这行是防止退出的
清理
apt clean
apt autoclean
备份容器
在宿主机运行
1
2
3
4
5
6
7
8
| docker stop debian-for-sshd
docker export debian-for-sshd > debian11-for-sshd.tar
# 打包压缩
gzip debian11-for-sshd.tar
#备份
cp debian11-for-sshd.tar.gz /mnt/smb/docker
# 删除旧的容器
docker rm debian-for-sshd
|
创建新容器
1
2
3
4
5
| cat debian11-for-sshd.tar.gz | docker import - debian11:sshd-autoboot.sh2222
docker run -itd --name debian-go-codeserver-git --privileged=true \
-p 59010:2222 -p 59011-59019:59011-59019 \
debian11:sshd-autoboot.sh2222 sh /autoboot.sh
|
可以直接用我放在阿里云上的
1
2
3
| docker run -itd --name debian-go-codeserver-git --privileged=true \
-p 59010:2222 -p 59011-59019:59011-59019 \
registry.cn-qingdao.aliyuncs.com/joyanhui/base-sh-debian:debian11-sshd-autoboot.sh2222 sh /autoboot.sh
|
搞其他的
ssh 连接上随便玩起来,如果要添加跟随容器启动的程序 就编辑 /autoboot.sh