准备
准备基础镜像与容器
docker run -tid --name ubuntu ubuntu:18.04 /bin/bash
docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6119c278ad6c ubuntu:18.04 "/bin/bash" 10 seconds ago Up 9 seconds ubuntu
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 c6ad7e71ba7d 13 days ago 63.2MB
基于容器commit创建
启动一个基本容器
docker run -dti --name test ubuntu:18.04 bash
docker exec -ti test bash
虚机添加ssh服务
echo "deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse" > /etc/apt/sources.list
echo "deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list
apt-get update
apt-get install openssh-server
mkdir -p /var/run/sshd
/usr/sbin/sshd -D &
ps -ef | grep sshd
sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
mkdir /root/.ssh
echo '#!/bin/bash' > /run.sh
echo '/usr/sbin/sshd -D' >> /run.sh
chmod +x /run.sh
passwd root
宿主机
ssh-keygen -t rsa
cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
docker cp C:\Users\GL\.ssh\id_rsa.pub test:/root/.ssh/authorized_keys
虚机
chmod 600 /root/.ssh/authorized_keys
commit生成新的镜像,并启动容器
docker commit test sshd/ubuntu:18.04
docker run -p 10022:22 -dti --name test_ssh sshd/ubuntu:18.04 /run.sh
宿主机,测试
λ ssh root@172.20.240.134 -p 10022
Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 5.10.76-linuxkit x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.
To restore this content, you can run the 'unminimize' command.
Last login: Mon May 16 14:44:45 2022 from 172.17.0.1
root@fbe86c52cac5:~#
基于Dockerfile创建
新建一个文件夹 sshd_ubuntu,新建三个文件
- authorized_keys、run.sh内容同commit方式一直
- Dockerfile内容如下
#设置继承镜像
FROM ubuntu:18.04
#提供一些作者信息
MAINTAINER docker_user (969586445@163.com)
#下面开始运行命令,此处更改ubuntu的源为163的源
RUN echo "deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list
RUN apt-get update
#安装SSH服务
RUN apt-get install -y openssh-server
RUN mkdir -p /var/run/sshd
RUN mkdir -p /root/.ssh
#取消pam限制
RUN sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
#复制配置文件到相应位置,并赋予脚本可执行权限
ADD authorized_keys /root/.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh
RUN chmod 600 /root/.ssh/authorized_keys
#开放端口
EXPOSE 22
#设置自启动命令
CMD ["/run.sh"]
ENTRYPOINT ["/bin/bash"]
生成镜像,在sshd_ubuntu目录
docker build -t sshd:dockerfile .
生成镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sshd dockerfile 47516e6bb03c 1 minutes ago 245MB
执行容器
docker run -tip 10023:22 -dti --name test_ssh2 sshd:dockerfile
docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3ee73ded8c3e sshd:dockerfile "/bin/bash /run.sh" 4 minutes ago Up 4 minutes 0.0.0.0:10023->22/tcp test_ssh2
测试
λ ssh root@172.20.240.134 -p 10023
Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 5.10.76-linuxkit x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.
To restore this content, you can run the 'unminimize' command.
Last login: Mon May 16 15:28:03 2022 from 172.17.0.1
两种方式测试
λ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAME
S
3ee73ded8c3e sshd:dockerfile "/bin/bash /run.sh" 5 minutes ago Up 5 minutes 0.0.0.0:10023->22/tcp test
_ssh2
fbe86c52cac5 sshd/ubuntu:18.04 "/run.sh" 48 minutes ago Up 48 minutes 0.0.0.0:10022->22/tcp test
_ssh
6bd30f9548bc ubuntu:18.04 "bash" 53 minutes ago Up 53 minutes test
95b5b87826b7 centos "/bin/bash" 3 days ago Up 3 days cent
os-test
λ ssh root@172.20.240.134 -p 10022
Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 5.10.76-linuxkit x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.
To restore this content, you can run the 'unminimize' command.
Last login: Mon May 16 15:01:20 2022 from 172.17.0.1
root@fbe86c52cac5:~# exit
logout
Connection to 172.20.240.134 closed.
λ ssh root@172.20.240.134 -p 10023
Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 5.10.76-linuxkit x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.
To restore this content, you can run the 'unminimize' command.
Last login: Mon May 16 15:32:54 2022 from 172.17.0.1
root@3ee73ded8c3e:~# exit
logout
Connection to 172.20.240.134 closed.
参考:https://blog.csdn.net/qmqm011/article/details/88094464