【Docker】windows容器的应用 、K8s的运行 、Linux容器可视化
方法二修改:Exec=/usr/bin/google-chrome-stable %U为:Exec=/usr/bin/google-chrome-stable %U --no-sandbox### 结语:**其实也没有什么好总结的,都是固定的东西,这次先说到这里,下一篇准备分享一下在linux容器中如何跑windows程序以及如何在docker中玩游戏,包括docker映射本地显卡的方法**
windows容器的应用
编程中总是离不开docker,足以体现docker的强大性,通常我们会在docker中跑linux容器以进行程序的运行,说起来windows容器大多数也只是认为windows平台上的docker容器。其实不然,在docker中也有着windows容器的存在,在研究了这么多天之后总结一下windows容器到底是怎么一回事!!!
你也许听到过winserver,你也有可能将winserver想成是一个容器,但是不是!winserver说白了就是windows平台服务,但为什么docker跟它有关系呢?其实在winserver2016版本之前,windows平台是不支持docker的,从2016版之后win平台开始支持docker容器,但也只是能跑linux容器。现在的winserver版本是2019,在服务层面上对docker的支持也已经比较完善了,windows开始支持自己的容器-windows容器!所以也正是因为这样 windows平台的docker可以进行win&linux两个版本来回切换!当然,win版本只能跑windows容器!接下来我们在win10平台见证一下!
注意啦!以下操作只能在windows企业版和专业版上操作,家庭版和旗舰版的先进行server版本转换再进行操作,怎么转换呢,去搞一个企业版或者专业版的密钥,重新激活一下!你要问我哪里搞,我会告你上某宝!
下面开始…
打开控制面板,选择程序-启用或关闭windows功能,将haype-V进行全部进行打勾 已经打勾请忽略
下载官方最新版的windows for docker进行安装,首先进入的linux系统,点击下面的鲸鱼图标 点击switch to windows切换为windows容器
下载地址:https://www.docker.com/products/docker-desktop
安装好之后,右键点击右下角鲸鱼图标,设置cpu 内存 转换windows容器
开始菜单,选择“设置”打开“windows设置”后,在菜单中找到“更新和安全”并点击 OS内部版本信息”查看版本号 比如1809
ok!以上内容做完之后我们开始拉取镜像,在windows镜像中分两类,一类是简洁版镜像,另一类是完整版镜像,完整版镜像中会有更多的服务与组件,当然镜像体积也比较大
#二选一
docker pull mcr.microsoft.com/windows/nanoserver:(你的版本号) #简洁windows系统
docker pull mcr.microsoft.com/windows/servercore:ltsc2019 #完整版镜像
#启动windows容器
docker run -it mcr.microsoft.com/windows/nanoserver:1809 cmd.exe #进入简洁windows系统
docker run -it 32fecabef723 powershell #进入完整windows系统
#启动好之后 docker exec -it 容器名称 进入windows容器
docker exec -it 89fecatddos46 powershell
#或者
docker exec -it 89fecatddos46 cmd.exe
#在windows容器中超级用户和普通cmd同物理机一样是分开来的
现在windows容器已经跑起来了,进入之后发现跟我们的物理机的cmd一模一样。目前windows容器不支持GUI,只能完全使用命令行形式运行程序,这一点的话就很鸡肋,毕竟跑程序一般都会用linux,谁没事儿折腾windows容器,线下自己还是自己玩玩罢了,不过有一点好处就是除了GUI之外大部分的windows程序都可以运行。
运行k8s
目前k8s在windows版docker中直接集成了,安装好docker之后可以在settings中看到,注意:需要切换成linux版本的设置中才会有k8s,windows版本的设置中是没有的
不过现在还没办法使用,我们需要安装,我们先在设置中的Docker Engine 设置一下源
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://gcr.azk8s.cn",
"https://quay.azk8s.cn"
],
"insecure-registries": [],
"debug": false,
"experimental": false,
"features": {
"buildkit": true
}
}
因为源在国外的原因,我们为了能下载镜像,所以使用国内镜像源
https://github.com/AliyunContainerService/k8s-for-docker-desktop # 进入git地址 下载k8s的国内镜像
.\load_images.ps1 #cd 到下载的包中执行
进入到docker 选择k8s 勾选"Enable Kubernetes" 选项. 此步骤比较耗时,耐心等待
kubectl version #查看kubectl
kubectl create -f kubernetes-dashboard.yaml #在包内执行
kubectl get pods --namespace kube-system #查看运行状态
不过此时我们还不能进入到k8s的界面,因为我们需要token才能进入
kubectl get secret -n=kube-system #找到 kube-proxy-token-mj2kx
kubectl describe secret -n=kube-system kube-proxy-token-mj2kx #获取token
'''
eyJhbGciOiJSUzI1NiIsImtpZCI6IkkyejZMcU9FX293TDJCVmh3ZF9Yb3U3UElwaWgwMWkyTTQzSkZVVTY5cWMifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlLXByb3h5LXRva2VuLW1qMmt4Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6Imt1YmUtcHJveHkiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyMmU4YmRhZC1iYjVmLTRjNzItYTM3ZC1jYjllNjZlZTMxNTgiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06a3ViZS1wcm94eSJ9.xx87OwGNZcSsE6e0nf64bfqburYKpTpWhv67UDnZGPjs6-emjNWCDeKCb4_ZVAshghacUTsest3xAFCsaVaILpV33Fx5aNTuc8PYsDbltFdjTQryRSclbMJyuFfVhQGjEPkzp65OJmxbusTD58YfObwOIwHvT8seXFhu4F3Un0erF5o2LEMVhVX06RnpdYansB4B4Vx2yA0y16WqB2_aD6SEPYIMfRMVcvlAbBCsiRbW92_q9XT5Sd6WxMYNZG3bxxuJ44PwuYalQvetvwkXaEO1Dj7xSF6x8Y_ELOpsL-CEPKlUv4LmWTuNZelLHhMCH5yiudnGorwdb3CMFkDlvA
'''
kubectl proxy #执行 启动k8s 进入到web界面
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes- dashboard:/proxy/ #进入到此网址 选择token进行登录 将上面生成的token粘贴进去点击确定
目前为止windows版本k8s就启动成功了,目前的k8s跟linux的没有太多的差别,不过master必须要放到linux系统上面,节点可以进行混合使用
'''
k8s的组成:
由Master节点和Node节点组成,
Master是主节点(一个),负责管理和控制;
API server:这个比较厉害,是整个系统的对外接口,供其他组件、客户端等的调用;
scheduler:从单词意思上也能看出来是调度,所以呢,它主要负责对集群内部资源进行调度;
controller manager:同理,看单词意思理解,管理,控制,所以它负责管理控制器;
ectd:信息存储
Node是计算节点(一群),即工作负载节点,里面是具体的容器
docker:创建容器(详情移步:https://www.jianshu.com/p/25029238c011);
kubelet:对分派到它所在Node上的pod进行监控,包括创建、修改、监控、删除等;
kube-proxy:proxy,代理 为pod对象提供代理;
fluentd,负责日志的收集、存储与查询;
pod是k8s最基本的操作单元。一个pod代表着集群中运行的一个进程,其内部封装了一个或多个容器。
'''
容器可视化
我们都知道容器一般只是黑窗口,只能用来打命令,但是我们想要看到容器画面并且想运行一个GUI程序怎么办。事实上可以的,不过也有一点违背docker的初心,docker本来就是奔着轻量、方便、快捷,将无关紧要的桌面功能去掉。但是我们依然可以搞一下。
安装centos7的镜像
docker pull centos:8 #拉取镜像
docker run -d -p 5900:5900 -p 5901:5901 --name="centos8" --privileged=true centos:8 /usr/sbin/init #运行镜像 映射端口
配置远程VNC桌面
docker exec -it hhisgd451a1 bash #进入容器
[root@localhost ~]# systemctl get-default
'''
如果返回值为:multi-user.target 命令行输入下面指令切入到图形界面
systemctl set-default graphical.target
'''
'''
如果需要改回命令行模式,输入如下指令
systemctl set-default multi-user.target
'''
#关闭防火墙
[root@localhost ~]# systemctl stop firewalld
'''
安装软件
'''
[root@localhost ~]# yum update
[root@localhost ~]# yum groupinstall "GNOME Desktop" "X Window System" "Desktop"
[root@localhost ~]# yum install tigervnc-server tigervnc vnc vnc-server
配置vnc
#copy配置文件
[root@localhost ~]# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
#打开配置文件
[root@localhost ~]# vim /etc/systemd/system/vncserver@:1.service
#在打开的文件中找到这一行
ExecStart=/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid
#将两行文件中的<USER>修改为当前系统用户名,我当前用户的用户名为admin,修改后的配置如下
ExecStart=/sbin/runuser -l admin -c "/usr/bin/vncserver %i" PIDFile=/home/admin/.vnc/%H%i.pid
'''
连接如果有问题检查这里的配置用户和启动用户是否是同一个,否则会出现authentication error
'''
'''
设置密码
'''
[root@localhost ~]# vncpasswd
#打开配置文件
[root@localhost ~]# vim /etc/libvirt/qemu.conf
#找到如下两行,把前面的#去掉,保存退出
vnc_password = "123456"
vnc_listen = "0.0.0.0"
#重新加载systemd
[root@localhost ~]# systemctl daemon-reload
#启动vnc
vncserver
#关闭vnc
vncserver -kill :1 #(只是告诉你关闭的方法,关了就连不上了)
'''
systemctl stop firewalld 看一下防火墙关闭了没有,没有关要关闭
'''
在你的物理机上或其他机器下载vncviewer软件,打开软件输入IP,容器桌面出来了!会发现跟平常的centos7系统一模一样!
我们会看到自带的浏览器还是火狐的,那么我们想使用谷歌怎么办,继续往下看
cd /etc/yum.repos.d #进入路径
vim google-chrome.repo #编写文件
'''
#加入以下内容
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
'''
yum -y install google-chrome-stable --nogpgcheck #安装谷歌浏览器
#将chrome浏览器图标copy到桌面
cd /usr/share/applications/
cp /usr/share/applications/google-chrome.desktop /root/Desktop
然后就会看到谷歌浏览器存在桌面了,还需配置一下,不然打不开
#方法一
#桌面图标右击-->属性-->启动命令后添加“--no-sandbox”
/usr/bin/google-chrome-stable %U --no-sandbox
#方法二
vim /usr/share/applications/google-chrome.desktop
修改:Exec=/usr/bin/google-chrome-stable %U
为:Exec=/usr/bin/google-chrome-stable %U --no-sandbox
cp /usr/share/applications/google-chrome.desktop /root/Desktop
结语:
n/google-chrome-stable %U --no-sandbox
#方法二
vim /usr/share/applications/google-chrome.desktop
修改:Exec=/usr/bin/google-chrome-stable %U
为:Exec=/usr/bin/google-chrome-stable %U --no-sandbox
cp /usr/share/applications/google-chrome.desktop /root/Desktop
### 结语:
**其实也没有什么好总结的,都是固定的东西,这次先说到这里,下一篇准备分享一下在linux容器中如何跑windows程序以及如何在docker中玩游戏,包括docker映射本地显卡的方法**
更多推荐
所有评论(0)