一、前言
由于 Docker 是一个容器,它支持在一个服务器进行多服务部署,并且还能保持服务的独立性,那么,在Docker 上的运用时 我们也是可以 独立部署多个系统来做不同是其他,这样环境独立的情况下,也就不会造成一下不必要的问题。
二、使用 Docker Desktop 安装 Linux 系统
CentOS(Community Enterprise Operating System)
是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux(RHEL)
依照开放源代码规定发布的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux
使用。
1、安装 Docker Desktop
请看这里:Docker Desktop 安装使用教程
2、使用 Docker Desktop 安装 Centos 镜像
2.1、 查看 CentOS 镜像
docker官方地址:https://docs.docker.com/engine/install/centos/
访问 CentOS 镜像库地址: https://hub.docker.com/_/centos?tab=tags
![在这里插入图片描述](https://img-blog.csdnimg.cn/eee61c27fdb74e4b9484f480e98c0f98.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/ae0e6477b6f94a85be531dca06bdf70b.png)
# 查看centos有哪些镜像
docker search centos
![在这里插入图片描述](https://img-blog.csdnimg.cn/678db364049e42c989ed30b7606071bc.png)
2.2、 下载 CentOS 镜像
注意:Centos 不同版本之间 操作命令有些会稍微有所不一样,会出现某些命令无法使用的情况。
访问 CentOS 镜像库地址:https://hub.docker.com/_/centos?tab=tags&page=1。
可以通过 Sort by 查看其他版本的 CentOS 。默认是最新版本 centos:latest 。
# 拉取最新版本centos镜像
docker pull centos
# 拉取centos7镜像
docker pull centos:7
![在这里插入图片描述](https://img-blog.csdnimg.cn/bb5640f3cbbd4294a0e13dc3fe5e1fd6.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/ae0e6477b6f94a85be531dca06bdf70b.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/6dcaece9a4994fef86c237ae6c7cc50f.png)
2.3、 下载 CentOS 镜像
# 查看本地镜像
docker images
# 查看更详细的centos信息
docker inspect centos
![在这里插入图片描述](https://img-blog.csdnimg.cn/d720b6421d984e4fb8c0cdb84a047f36.png)
这个时候也可以在Docker Desktop 的 images 进行查看
![在这里插入图片描述](https://img-blog.csdnimg.cn/5067d904b7c14710be10c6b7a809adeb.png)
2.4、运行容器,并且可以通过 exec 命令进入 CentOS 容器。
# 运行容器,并且可以通过 exec 命令进入 CentOS 容器
docker run -itd --name centos-test centos:centos7
![在这里插入图片描述](https://img-blog.csdnimg.cn/6bcb34c0a51948b6886bdcf95f9750d3.png#pic_center)
也可以在Docker Desktop 的 Containers 进行运行
![在这里插入图片描述](https://img-blog.csdnimg.cn/55477e42f5c94671ac258d9b6626e4d2.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/1ff21e2062ea4a718b555af1e3f6d0cb.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/4f9a0a22de1e4a7ca41dff06643f4e28.png)
2.5、安装成功
# 通过 docker ps 命令查看容器的运行信息
docker ps
![在这里插入图片描述](https://img-blog.csdnimg.cn/f9bdf1ebf2c04c838f52e6ad3a1b9e46.png)
2.6、运行容器,通过 exec 命令 创建、设置端口号并启动 CentOS 容器。
我在这一步的时候使用 Docker Desktop 不知道为什么设置不了端口号,最后还是只能在exec 命令操作
参数说明:
- 参数–name:设置container容器的名称,我们设置成centos8,如果为空则随机生成。
- 参数-p:指定端口号,2060是宿主机的端口号,22是container的端口号,相当于把容器的22端口号映射到宿主机的2060。
- 参数-v:设置主机与container的共享目录:
主机绝对路径:container绝对路径,我们这里把宿主机的/home/jason目录,映射到container的/home/centos,你在容器里
是可以查到这个目录的。
- 参数centos:对应的是镜像的名称。
# 创建并启动centos8容器
docker run -itd -p 2060:22 -v /home/jason:/home/centos --name centos8 --privileged centos /usr/sbin/init
# 指定centos7容器的名称为centos-desktop-vnc,并暴露宿主机的5901来连接vnc
docker run --name centos-desktop-vnc --privileged -d -p 5901:5901 --ulimit memlock=-1 -td centos:7 /usr/sbin/init
![在这里插入图片描述](https://img-blog.csdnimg.cn/ad793e6c82be4e218c23c919fa6ab8b1.png)
2.7、进入容器环境
# 进入到docker(centos8)容器控制台
docker exec -it centos8 /bin/bash
# 进入到docker(centos7)容器控制台
docker exec -it centos-desktop-vnc bash
![在这里插入图片描述](https://img-blog.csdnimg.cn/1fe59603697b4f4c8782482fbb4e56a0.png)
3、使用 SSH 连接 Docker 镜像的 Linux 系统
3.1、配置appstream 仓库 镜像列表URL
centos官方停止了对centos8的维护,使用yum命令时候 会提示 appstream 镜像仓库没有url地址
![在这里插入图片描述](https://img-blog.csdnimg.cn/b77e023b56d0490d860af8e6e0a10632.png)
#repos 目录
cd /etc/yum.repos.d/
#修改centos 设置url地址
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
#手动缓存 不执行也可以
yum makecache
#更新Yum
yum update -y
#到这里 yum 命令可以正常执行了
![在这里插入图片描述](https://img-blog.csdnimg.cn/555c302b8c414e4c95a630a92532d63a.png)
3.2、安装 net-tools
![在这里插入图片描述](https://img-blog.csdnimg.cn/5304a7353e7048849c7a118673addf55.png)
3.3、给centos安装ssh
# 检查有无安装ssh
yum list installed | grep openssh-server
#安装 密码和ssh服务
yum install passwd openssl openssh-server -y
# 使用vim 查看 /etc/ssh/sshd_config 文件
# PermitRootLogin 需要打卡
# 监听端口:22端口 和启动的端口对应
# 开启用户名密码验证关键字:PasswordAuthentication
# 以上配置一般是默认的,最好查看一下
![在这里插入图片描述](https://img-blog.csdnimg.cn/e18454ae3d804b27aed40f5ea02004d9.png)
# 启动 sshd
systemctl start sshd
# 配置开机启动
systemctl enable sshd
![在这里插入图片描述](https://img-blog.csdnimg.cn/f895a7f734f4485b85b17f47695d22da.png)
# 配置密码 需要确认两次 且密码不可见
passwd
# 到此 docker下安装centos就完成了,且配置了ssh访问
![在这里插入图片描述](https://img-blog.csdnimg.cn/188b91047e684fddb52cc060c7c0c0c6.png)
3.4、Xshell 访问 centos
详情 请查看这里:xshell和xftp下载安装以及使用
![在这里插入图片描述](https://img-blog.csdnimg.cn/27ebf445ff74432faa606bc1d1a5b9c0.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/3d73e37d70d5416f801da12624a23e9f.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/5f7fe893f6524c9cba23d8f735ac9602.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/331663dce0a34b279d09eae4b2acd939.png)
3.5、FinalShell 访问 centos
详情 请查看这里:超级详细的 FinalShell 安装 及使用教程
![在这里插入图片描述](https://img-blog.csdnimg.cn/58267eb875ad4109b240d47611063501.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/fb14eeb52f2542ccb97cf43e725fc96c.png)
4、配置vnc服务端
关于这个的细节作者就不细讲了,如果有需要可以自己去找其他相关资料
4.1、配置vnc服务端
#安装vnc server、vim、net-tools
yum -y install tigervnc-server tigervnc-server-module vim net-tools
4.2、配置vnc server
#复制配置文件模板
cp /lib/systemd/system/vncserver@.service /lib/systemd/system/vncserver@:1.service
设置生效用户-修改配置文件
vim /lib/systemd/system/vncserver@:1.service
将配置文件的修改为root,由于root的home路径是/root,不是/home/root,因此注意修改PIDFILE的路径 改好之后如下
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
#Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
修改vnc server密码
vncpasswd
生效vnc配置
systemctl daemon-reload
4.3、配置vnc开机启动
#启动服务
systemctl start vncserver@:1
#设为开机启动
systemctl enable vncserver@:1
检查vnc server是否启动
netstat -lnpt|grep Xvnc
出现下图结果说明启动成功
![在这里插入图片描述](https://img-blog.csdnimg.cn/5809e7aba036428f9cd1e6dc2d000648.png)
4.4、关闭防火墙
#关闭防火墙
systemctl stop firewalld
#禁止防火墙开机启动
systemctl disable firewalld
4.5、下载并使用VNC
![在这里插入图片描述](https://img-blog.csdnimg.cn/a8132e2323944f8e87079cbe6022335d.png)
到此 就结束了!