Docker下搭建Centos8并通过SSH链接

本章节给为大家分享一篇,如何在容器中创建centos8环境,可以用来学习或者模拟一些线上Centos8的操作,例如,来做配置ssh,sftp,web服务等。

下载centos镜像

首先下载centos8 镜像。

docker pull centos:centos8

启动镜像

docker run -itd --privileged --name centos-test -p 5022:22 centos:centos8 /usr/sbin/init

  • 该命令的操作是实例化一个容器,并定义了一个centtos-test名字。
  • 同时将该容器的22端口 绑定到 主机5022端口,注意并以特权模式在后台启动。

进入容器

docker exec -it centos-test /bin/bash

需要进入容器并执行下面操作。

容器的一些配置

当然这里可以使用Dockerfile 完成配置,并打包成为镜像。这里采用的是使用 docker commit 方式将容器形成本地镜像。

升级系统

一些初始的操作,对系统进行升级

yum update -y

如果遇到了下面问题(centos版本太高问题):

vbnet 复制代码
Failed to set locale, defaulting to C.UTF-8
CentOS Linux 8 - AppStream                                                                                                              55  B/s |  38  B     00:00
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

解决方法T o migrate from CentOS 8 to CentOS Stream 8, run the following commands:

css 复制代码
dnf --disablerepo '*' --enablerepo=extras swap centos-linux-repos centos-stream-repos
dnf distro-sync

问题解决过后,继续执行升级命令,并等待升级完成。

升级完成后安装一些需要的软件。

如下,见下个章节介绍。

安装必要软件

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

启动ssh服务并加入自启动

查看ssh的服务状态。

systemctl status sshd

当前还是关闭的。

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

执行启动命令 systemctl start sshd 再次查看,可以看到已经运行了。

将ssh服务加入到自启项。 systemctl enable sshd

如果想停止服务,则使用命令 systemctl stop sshd

如果想移除ssh的自启,则使用这条命令 systemctl disable sshd

编辑ssh的配置文件

下面我们开始ssh,用于从宿主机登录到容器中。

vim /etc/ssh/sshd_config

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

最终效果显示如下:

arduino 复制代码
Port 22
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::

将 PermitRootLogin yes、PubkeyAuthentication yes的注释去掉。 结果如下:

bash 复制代码
PermitRootLogin yes
PubkeyAuthentication yes

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

为root用户设置密码

执行命令 passwd root 然后会连续输入两次密码,密码看不到。 注意前后的密码要输入一致。

例如:我们设置密码为 Newcoder123

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

systemctl restart sshd

通过主机连接容器(该操作在宿主机上执行)

ssh root@localhost -p 5022

退出ssh的方法和普通的链接一样使用exit命令

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

docker commit centos-test centos:ssh

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

然后执行 docker images

可以看到在Images列表中有了name为centos,tag为ssh的镜像。

小结

这样我们就在容器中创建centos8环境,用来学习或者模拟一些centos8的操作。 后边,我们将会进行一些sftp,web服务 等部署学习。

相关推荐
Java爱好狂.2 小时前
Java初学者如何一周速通SpringBoot!
java·spring boot·后端·spring·高并发·架构师·java面试
马良神笔4 小时前
2026 年Rag最近技术前沿总结
后端·python·django
程序猿DD4 小时前
同样10美元,OpenDesign和Command Code的DeepSeek V4.1 Flash额度到底有多少?
后端
高频因子挖掘机5 小时前
A股量化从日线升级到5分钟线:数据量增加后最先暴露哪些工程问题?
后端·github·api
高频因子挖掘机5 小时前
历史行情返回顺序变了,为什么按行号计算指标很危险?
后端·github·api
团子哒哒6 小时前
数组、切片和Map
后端
专注仿真7 小时前
ThinkPHP6 API接口开发实例:从零搭建RESTful风格接口
后端·php·restful
开心猴爷7 小时前
应对iOS审核4.3:可以使用 IpaGuard 来给属性名混淆的技术细节与平衡之道
后端·ios
1m555555557 小时前
RAG 工程实战(五):正确知识已经进入 Prompt,为什么大模型还是会答错?
后端·面试
易小尊7 小时前
我的模型在 65% 以上时准得可怕,在 50% 时像在掷硬币
后端