docker 安装linux centos 环境

 

 

如何在centos7中使用docker创建一个支持ssh连接的容器 

以下内容已有现成的,这里借用下这哥们的帖子https://www.cnblogs.com/caidingyu/p/10642158.html

并附上自己理解

 

 

1.拉取centos7.4镜像(由于7.4目前是最稳定的版本,所以推荐使用centos7.4)

ps:最新版已到8,可去https://hub.docker.com/查阅

 

1
docker pull centos:7.4.1708

 

2.执行以下命令查看已有的镜像

 

1
docker images

 

 

3、基于centos镜像,创建一个名为centos7ssh的容器并进入容器(这里名称可以自定义)

ps:启动时 /bin/bash 表示命令行path。该path环境变量,自带的有:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

 

 

1
docker run -it --name centos7ssh centos:7.4.1708 /bin/bash

 

 

4、进入容器后,安装ssh服务端和客户端,服务端能让其他主机远程登录本机,客户端能让本机远程登录其他主机

ps:docker安装的centos没有passwd命令,但是你用whereis passwd依然可以找到位置。所有建议你安装ssh的passwd命令

 

1
yum -y install passwd openssl openssh-server openssh-clients

 

ps:我自己安装yum install openssh-server 后。无需走5,6步

5.创建 /var/run/sshd/目录,要不然sshd服务启动会报错

 

1
mkdir /var/run/sshd/

 

6.编辑sshd的配置文件/etc/ssh/sshd_config,将其中的UsePAM yes改为UsePAM no

 

可以进入sshd_config文件中去修改,也可以使用命令:

 

1
sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config

 

ps:你用密码登录就无需步骤7

7.创建公私密钥,输入命令后,直接按两次enter键确认就行了

 

1
2
3
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key

 

8.完成上述几步后,可以开启ssh服务了(&表示后台启动)

 

1
/usr/sbin/sshd -D &

 

9.此时使用命令ps -ef | grep sshd  便可以看到

 

 

10.查询22端口是否处于监听状态

 

1
yum -y install lsof

 

1
lsof -i:22

 

 

11.修改root密码

 

1
passwd

 

12.测试

 

输入命令ssh localhost,然后输入之前设置的root密码

 

 

上图中可以看到已经登录到本机了,也就说容器中的主机拥有了ssh远程登录其它主机的能力,当然你也可以登录其他主机。

 

要退出的话,输入命令exit即可

 

13.如何配置外部客户端访问docker里的centos7.4容器

 

获取容器的ID等端口映射信息

 

1
docker ps -a

 

提交容器成为新的镜像,例如叫做sshd_centos7.4,输入

 

1
docker commit 容器ID sshd_centos7.4

 

启动这个镜像的容器,并映射本地的一个闲置的端口(例如15000)到容器的22端口,并启动容器的sshd(只要端口不冲突可以同时启动多个容器,如下图)

 

1
docker run -d -p 15000:22 sshd_centos7.4 /usr/sbin/sshd -D

 

 

现在打开新的终端,输入ssh root@宿主机IP地址 -p 15000,如果能连接成功,会要求输入密码的,输入刚才passwd命令设置的root账户密码就可以进入容器的终端了

 

如果连接失败,请检查防火墙是否未开放该端口。 

 

 

 

参考文档:https://www.cnblogs.com/whutxldwhj/p/6427530.html

 

https://blog.csdn.net/u013140345/article/details/79777311

 

https://blog.csdn.net/weipeng19861130/article/details/79006555

 

 

 

以下为网友提供的方法还未验证是否可用,可自行验证

 

1
2
3
4
5
6
7
8
9
10
11
12
docker pull centos:7.2.1511    //也可以不指定版本,默认最新latest
docker run -t -i centos:7.2.1511 /bin/bash  //启动并进入docker 容器
 
yum install wget                    
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 
yum cleal all
yum install passwd
yum install openssh-server        #安装ssh服务端
echo 'passw0rd' passwd root    //修改root密码
 
docker commit [容器ID] [新镜像名]   //使用commit 提交,简单的配置可以使用dockerfile创建镜像,但是要配置环境比较复杂,还是需要用到commit
docker run -d -p 220:22 c7ssh /usr/sbin/sshd -D      //启动容器,并绑定容器端口22到宿主主机, 可以有多个-p 绑定多个端口,例如22端口让远程客户端连接,8080 可以访问容器内tomcat

总结:起初我安装的是ubuntu,当然ubuntu的image很小只有80M左右。但是他仅仅只是一个内核,什么都没有,自己需要安装的东西太多。直接换的centos

 

 

posted @ 2020-04-27 15:59  践行渐远的蜗牛  阅读(1622)  评论(0编辑  收藏  举报