一、前言
由于 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
# 查看centos有哪些镜像
docker search centos
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
2.3、 下载 CentOS 镜像
# 查看本地镜像
docker images
# 查看更详细的centos信息
docker inspect centos
这个时候也可以在Docker Desktop 的 images 进行查看
2.4、运行容器,并且可以通过 exec 命令进入 CentOS 容器。
# 运行容器,并且可以通过 exec 命令进入 CentOS 容器
docker run -itd --name centos-test centos:centos7
也可以在Docker Desktop 的 Containers 进行运行
2.5、安装成功
# 通过 docker ps 命令查看容器的运行信息
docker ps
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
2.7、进入容器环境
# 进入到docker(centos8)容器控制台
docker exec -it centos8 /bin/bash
# 进入到docker(centos7)容器控制台
docker exec -it centos-desktop-vnc bash
3、使用 SSH 连接 Docker 镜像的 Linux 系统
3.1、配置appstream 仓库 镜像列表URL
centos官方停止了对centos8的维护,使用yum命令时候 会提示 appstream 镜像仓库没有url地址
#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 命令可以正常执行了
3.2、安装 net-tools
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
# 以上配置一般是默认的,最好查看一下
# 启动 sshd
systemctl start sshd
# 配置开机启动
systemctl enable sshd
# 配置密码 需要确认两次 且密码不可见
passwd
# 到此 docker下安装centos就完成了,且配置了ssh访问
3.4、Xshell 访问 centos
详情 请查看这里:xshell和xftp下载安装以及使用
3.5、FinalShell 访问 centos
详情 请查看这里:超级详细的 FinalShell 安装 及使用教程
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
出现下图结果说明启动成功
4.4、关闭防火墙
#关闭防火墙
systemctl stop firewalld
#禁止防火墙开机启动
systemctl disable firewalld
4.5、下载并使用VNC
到此 就结束了!