【Docker】windows容器的应用 、K8s的运行 、Linux容器可视化 您所在的位置:网站首页 ps1游戏bin转srm 【Docker】windows容器的应用 、K8s的运行 、Linux容器可视化

【Docker】windows容器的应用 、K8s的运行 、Linux容器可视化

2023-04-01 17:23| 来源: 网络整理| 查看: 265

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/[email protected] /etc/systemd/system/vncserver@:1.service #打开配置文件 [root@localhost ~]# vim /etc/systemd/system/vncserver@:1.service #在打开的文件中找到这一行 ExecStart=/sbin/runuser -l -c "/usr/bin/vncserver %i" PIDFile=/home//.vnc/%H%i.pid #将两行文件中的修改为当前系统用户名,我当前用户的用户名为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映射本地显卡的方法**


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有