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开启ssh服务_第1张图片

docker开启ssh服务_第2张图片

账号密码为我们在上一个容器设置的内容。

个人理解

使用docker的好处,比如有一个服务器,需要给多个人分配账号使用,单纯使用adduser指令进行帐户分配,是没有root的,就算有,使用了root会影响到其他帐户的内容,导致环境污染。

使用docker,我们可以多创建几个容器,映射几个端口给他人使用,每个人都是单独的root,随便怎么玩,不会污染环境。

 

以上观点,有说的不对的地方,欢迎指正。

你可能感兴趣的:(docker)