使用Docker安装Centos,并通过SSH连接到容器

运行环境:Windows11(有WSL2),Docker Desktop(使用WSL2 引擎 Use the WSL2 based Engine)

  1. Docker Hub获取centos相关的镜像

    使用Docker安装Centos,并通过SSH连接到容器

  2. 选择Offical image的镜像

    使用Docker安装Centos,并通过SSH连接到容器

  3. 从Tags中找到合适镜像,并复制命令,在cmd中运行命令

    使用Docker安装Centos,并通过SSH连接到容器

    使用Docker安装Centos,并通过SSH连接到容器

    使用Docker安装Centos,并通过SSH连接到容器

    然后就可以在Docker Desktop软件中看到此镜像

    使用Docker安装Centos,并通过SSH连接到容器

  4. 使用此镜像启动容器 使用的命令:

    docker run -itd --privileged --name my_centos7 -p 50003:22 centos:7 /usr/sbin/init

    该命令的操作是为此容器定义了一个my_centos7的名字,同时将该容器的22端口绑定到主机50003端口,并以特权模式在后台启动。如果对命令不太了解可以去Docker 命令大全 | 菜鸟教程 (runoob.com)查看。 运行之后获取到此容器的id,如图: 使用Docker安装Centos,并通过SSH连接到容器

  5. 进入容器 使用的命令:

    docker exec -it my_centos7 /bin/bash

    使用exec的原因是因为容器以特权模式启动,使用attach的话貌似会有问题。还不太了解,一直在使用exec操作 运行之后的结果,如图:

    使用Docker安装Centos,并通过SSH连接到容器 
  6. 进行一些初始的操作,对系统进行升级

    yum update

    然后回输出一些需要升级的东西,并询问是否升级安装,输入y确定升级。等待升级完成(如果中途出现了询问y/n的情况,输入y即可)。(Docker中的centos7中安装软件的时候会自动查找最快的镜像站,所以下载速度还是挺快的,不需要配置镜像源。实际的系统应该也是这样吧。)

  7. 安装需要的软件

    使用的命令:

     #安装openssh-server
     yum install openssh-server -y
     #安装需要用到的软件vim用于编辑文件、passwd用于设置root或其他用户的密码、openssh-clients用于让此容器可以使用ssh命令、net-tools我暂时只是用来查看ip
     yum install vim passwd openssh-clients net-tools

    等待安装即可。

  8. 查看ssh服务的状态

    systemctl status sshd

    使用Docker安装Centos,并通过SSH连接到容器

    当前还是关闭的。

    启动ssh服务(此处用到的systemctl命令是在特权模式下才能起作用的,也就是在启动时时候加了 --privileged 选项。)

    systemctl start sshd

    再次查看,可以看到已经运行了

    使用Docker安装Centos,并通过SSH连接到容器

    将ssh服务加入到自启项。

    systemctl enable sshd

    如果想停止服务,则使用下面的命令

    systemctl stop sshd

    如果先移除ssh的自启,则使用这条命令

    systemctl disable sshd
  9. 编辑ssh的配置文件

    vim /etc/ssh/sshd_config

    将 Port 22、ListenAddress 0.0.0.0、ListenAddress :: 前面的#号去掉(即取消这几行的注释)

    使用Docker安装Centos,并通过SSH连接到容器

    将PermitRootLogin yes、PubkeyAuthentication yes的注释去掉(可以使用vim的搜索功能,即在普通模式下输入 /Per 即可查找到)

    使用Docker安装Centos,并通过SSH连接到容器

    编辑完成之后按esc回到普通模式,输入 :wq 保存并退出。

  10. 为root用户设置密码

    执行命令:

    passwd root

    接下来输入两次密码(是看不到的)。

  1. 重启ssh,并测试通过主机连接容器

    systemctl restart sshd

    通过主机连接容器(该操作在Windows的环境下进行)

    ssh root@localhost -p 50003

    因为前面我们把容器的22端口绑定到了宿主机的50003端口上,所以在连接时不能够直接使用

    shh root@localhost 要在后面说明通过端口50003连接,即加上 -p 50003.

    成功之后会出现这个询问,输入yes

    使用Docker安装Centos,并通过SSH连接到容器

    然后会让输入root的密码,即可连接

    使用Docker安装Centos,并通过SSH连接到容器

    连接成功之后,使用uname -a,可以看到现在是Linux,结果如下图:

    使用Docker安装Centos,并通过SSH连接到容器

  1. 退出ssh连接,使用exit命令退出ssh连接(退出容器也是用exit命令)

    exit

    结果如下:

    使用Docker安装Centos,并通过SSH连接到容器

  1. 利用此容器做成本地镜像,方便以后部署同样的环境

    docker commit my_centos7 centos:ssh

    此命令是用已有的容器(my_centos7)生成镜像,名为centos,tag为ssh

    可以看到在Docker Desktop的Images中有了name为centos,tag为ssh的镜像使用Docker安装Centos,并通过SSH连接到容器
上一篇:linux修改22端口


下一篇:Windows 子系统 Ubuntu20.04设置开启SSH服务