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服务 等部署学习。

相关推荐
麦兜*9 分钟前
SpringBoot 3.x新特性全面解析:从Java 17支持到GraalVM原生镜像
java·spring boot·后端
你知道“铁甲小宝”吗丶24 分钟前
【第2章】第一个Go程序
后端·go
小北方城市网1 小时前
Spring Boot 接口开发实战:RESTful 规范、参数校验与全局异常处理
java·jvm·数据库·spring boot·后端·python·mysql
千寻技术帮1 小时前
10399_基于SpringBoot的智慧养老院管理系统
java·spring boot·后端·源码·安装·代码
飞升不如收破烂~1 小时前
# Spring Boot 跨域请求未到达后端问题排查记录
java·spring boot·后端
短剑重铸之日2 小时前
《RocketMQ研读》面试篇
java·后端·面试·职场和发展·rocketmq
changzehai2 小时前
Rust + VSCode + probe-rs搭建stm32-rs嵌入式开发调试环境
vscode·后端·stm32·rust·嵌入式·probe-rs
终端域名2 小时前
如何选择有利于品牌宣传的网站域名
java·后端·struts·数字货币域名·网站域名
拽着尾巴的鱼儿2 小时前
Spring:定时任务@Scheduled cron 的实现原理
java·后端·spring
郑州光合科技余经理2 小时前
源码部署同城O2O系统:中台架构开发指南
java·开发语言·后端·架构·系统架构·uni-app·php