(42条消息) docker开启ssh服务
主要思路:在容器里设置ssh服务开机自启,然后保存为镜像。下次创建容器的时候加上-p 参数,进行22端口映射即可。
实验部分:
使用vmware进行实验,博主使用docker pull centos,拉取了centos镜像。
创建一个centos7的容器, 指令:docker run -it --name 自定义容器名 镜像名
docker run -it --name my_ssh1 b5b4d78bc90c
成功进入容器:
安装ssh服务
yum install -y openssh-server
修改密码
passwd root
然后会提示你输入新密码 (两次)
打开ssh服务
/usr/sbin/sshd -D &
&表示在后台运行,然后结果如下图,表示成功运行
如果报错,则需要ssh公钥私钥对
ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
创建一个脚本文件,在文件里写入启动ssh的指令,设置开机自启即可
vi /run.sh
输入以下内容
#!/bin/bash
/usr/sbin/sshd -D
设置文件权限
chmod +x run.sh
配置完以上内容, 使用exit退出容器,使用docker ps -a 查看容器
使用commit提交修改内容,docker commit 容器ID 镜像:tag
docker commit 55b84552304f my_ssh:v2
回车,使用docker images 查看镜像
这就是我们刚刚提交的镜像
以该镜像为模板,生成容器,并设置端口映射
docker run -id --name ssh_test1 -p 2233:22 3556c32869fa /run.sh
后面的/run.sh 是使用CMD指令,在启动容器时,会执行改CMD内容,意思就是开机的时候,启动run.sh脚本(我们在上面设置的开启ssh服务的脚本)
接下来进行测试
账号密码为我们在上一个容器设置的内容。
个人理解
使用docker的好处,比如有一个服务器,需要给多个人分配账号使用,单纯使用adduser指令进行帐户分配,是没有root的,就算有,使用了root会影响到其他帐户的内容,导致环境污染。
使用docker,我们可以多创建几个容器,映射几个端口给他人使用,每个人都是单独的root,随便怎么玩,不会污染环境。
以上观点,有说的不对的地方,欢迎指正。
赞 (0)