docker系列之dockerdesktop初步安装

dotNET跨平台 dotNET跨平台     2022-12-08     731

关键词:

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

用简单的话来讲,它就是一个轻量级的虚拟机,类似于 VMware Workstation 和 VirtualBox 的轻量版,没有那么重(Docker 只有几十 M 左右,虚拟机都上 G 的大小),当然,对于 linux 系统来讲,它就是基于 linux 自身的一个虚拟机,所以,启动快,运行也快,但是,资源(cpu,内存,网络,存储)都是隔离的,现在 Windows 也有这样的概念吧,它就是容器,应该跟 Docker 是一个概念,所以,现在有 Linux 容器和 Windows 容器两种容器(Windows 的容器太大,我试了都几个 G)。

DockerDesktop,不仅仅可以在 Windwos(Win10++)安装,其实现在也可以在 MAC 和 Linux 里安装,参考地址[1]。

开发的时候,用 Visual Studio 2022 之类的 IDE 是可以把服务直接运行到 Docker 服务里的,所以,在开发的机器上安装一个适用的 Docker,在日常工作中,也是十分的方便的。

特别是,我想安装一个数据库,又想安装一个 Redis 和 Nginx,但是,又不想它们与我的系统之间有太多的交叉联系,那么,就可以用 Docker 来实现这些服务的隔离,不用了,直接结束了就好,省的,它还在后台一直运行(类似,Mysql)。

所以,从隔离性上来讲,Docker 是一个很方便的服务,用着也方便。

DockerDestop 的安装

分为两个步骤,第一个是设置好 WSL2 的环境,第二个就是下载 DockerDesktop 应用。

设置好 WSL2 (Windows Subsystem for Linux) 的环境(Windows 子系统和 hyper-v)

windows 桌面端的 docker 是基于 Windows 子系统(WSL2)的,所以,得把这个功能从控制面板里打开(Hyper-v不开启也是可以的)。

同时要打开的还有 Hyper-V 功能。(注:最新版的 VMware Workstation 是可以与 Hyper-V 共存的)

配置后,会重启电脑,按照提示保存好重要的资料,重启即可。

也可以通过以下 PowerShell 或 CMD 命令来实现

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

开启了功能后,还是需要安装具体的 linux 系统,我这边是通过 Microsoft Store 里搜索 Ubuntu 22.04 LTS 进行安装的, Ubuntu 22.04 LTS 是通过控制台方块字进行操作的,也可以下载 Ubuntu 20.04 LTS 版本或者 18 版本。

如果 Microsoft Store 打不开,或者太慢,也可以通过链接通过迅雷等工具下载,速度也挺快,

地址就在参考地址里(参考地址[2])。

离线下载完之后(Ubuntu2204-220620.AppxBundle),是这样子的,打开后,跟 Microsoft Store 打开是一样的。

运行后,就到了这个界面

然后选择,所需的语言,我直接选中文了。

然后,选择,账号和密码,自己设置一个

然后,就是所挂载的目录,默认就可以了。

然后,开始应用你自己的更改,开始安装了。

安装完毕,然后,重启

安装成功,欧耶

至此,WSL 已经安装成功了,但是,还要设置成 WSL2 模式,可以通过以下命令。

wsl //进去子系统,也就是从cmd进入到 linux的 bin命令行
 wsl -l  -v //查看所有安装的子系统,可以有多个
 wsl -s  name //  wsl -s  ubuntu 设置 ubuntu为默认子系统
 wsl --set-default-version X  // wsl --set-default-version 2 设置默认系统为 2也就是WLS2
 wsl --set-version ubuntu X  // wsl --set-version ubuntu 2 设置指定子系统版本为2
 wsl --status  //查看当前子系统状态
 wsl --list --verbose  // 可简写为 wsl -l -v,非常常用!
 wsl --unregister ubuntu // 移除某个子系统

先执行以下命令

wsl --set-default-version 2

通过查询命令可以看到,已经开启了 wsl2 功能

安装 DockerDesktop 应用服务

可以直接在链接[1]主页进行下载。

直接就开始解压了。

直接就安装完成了

桌面有快捷方式,直接双击打开即可。

我直接就接受了

默认开始启动(启动的时候,如果有报错,可以复制报错信息到网上搜一下,大部分都是没有配置好导致的,也可以从头到尾再来一遍)

现在已经安装OK了。

现在这个版本还有引导页

step1

step2

step3

step4

至此,DockerDesktop Windows版,已经安装完毕了。

配置镜像地址

大部分用户都是中国的用户,所以,还是需要更改一下镜像地址为国内,这样,下载镜像速度会快许多,当然,如果有科技,那另说。

修改配置内容为 下面的内容即可


  "builder": 
    "gc": 
      "defaultKeepStorage": "20GB",
      "enabled": true
    
  ,
  "experimental": false,
  "features": 
    "buildkit": true
  ,
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://1rlt72n0.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "https://mirror.ccs.tencentyun.com",
    "https://mirror.baidubce.com"
  ]

用docker 运行起来一个应用服务

我这边就以Mysql为例,运行一个Mysql服务,账号root,密码123456。

docker run -p 3306:3306 --name mysql -v /d/dockerConfig/mysql/data:/var/lib/mysql -v /d/dockerConfig/mysql/config:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql

此命令会把存储的数据映射到本地D盘,防止数据丢失,因为运行在docker里,docker没了,数据就没了。

直接控制台执行即可.

没有镜像,它会直接从hub.docker.com上拉取,然后,运行起来,如果本地有镜像,就会直接用本地的

红线的那一行是容器ID,至此服务已经运行起来了,我们也可以通过 DockerDesktop 应用查看.

可以看到容器里已经有了mysql服务,

这个容器界面可以对容器进行,删除,暂停,启动,以及进入到容器内部的命令控制台里。

当然,直接选中此容器,就会查看容器运行的日志信息。

控制台信息

日志信息

端口映射,网络,等信息

查看当前应用的状态等信息

镜像里也有mysql镜像了,下一次使用,就不用重新下载镜像了

通过Dbeaver 连接 Mysql

可以连接上,还是上次我存储的数据,数据也米有丢失。

总结

一直想写个关于Docker相关的文,这次写的比较完善了,如果捋不顺,那就按照官方的来。

Docker的潜力,不仅仅在于开发侧,我个人认为在应用侧也有它的潜力,毕竟,现在Win10++系统也不少,那么,每个系统如果都有docker,那完全可以玩着游戏,玩docker,甚至可以windows端docker 分布式和集群的支持。让一个算力复杂的任务,分配给多个闲散客户端主机,成为可能。

一键三连呦!,感谢大佬的支持,您的支持就是我的动力!

参考资料地址

[1] https://www.docker.com/

[2] https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package

windows上配置dockerdesktop的k8s

...实现abpvnext的k8s部署,遂进行一系列的安装和配置  在dockerdesktop上启动k8s但是一直在starting状态,查看日志文件C:ProgramDataDockerDesktopservice.txt看到如下错误:[17:04:06.930][ApiProxy     ][Info  ]time="2020-04-30T17:0... 查看详情

docker重学系列之dockercompose(代码片段)

Docker重学系列之DockerComposeDockerCompose简介安装与卸载1.linux2.macos、window3.bash命令补全4.卸载5.测试安装成功dockercompose使用dockercompose使用实例演示docker-compose模板文件buildcommandcontainer_namedepends_onenv_fileenvironmentexpose 查看详情

docker系列之docker安装(代码片段)

Docker支持以下的CentOS版本CentOS7(64-bit)CentOS6.5(64-bit) 或更高的版本前提条件目前,CentOS仅发行版本中的内核支持Docker。Docker运行在CentOS7上,要求系统为64位、系统内核版本为3.10以上。Docker运行在CentOS-6.5或更高的版本的CentOS上... 查看详情

dockerdesktop安装容器(代码片段)

...cos1、版本说明2、启动nacos使用命令去启动 参数说明使用DockerDesktop二、docker安装Elasticsearch1、版本说明2、DockerDesktop启动Elasticsearch三、docker安装kibana1、版本说明2、DockerDesktop启动kibana可能会出现的报错使用以下命令去查看docker中... 查看详情

docker系列之学习笔记教程汇总

Docker是一个开源的应用容器引擎;是一个轻量级容器技术;Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;运行中的这个镜像称为... 查看详情

docker系列之基础实践篇(上)(代码片段)

 常用命令回顾帮助命令1.启动docker//启动$systemctlstartdocker2.查看docker版本$dockerversion3.查看安装的docker信息描述(容器多少,镜像多少等等)dockerinfo4.docker帮助命令(基本上docker的所有命令都有)docker--help此处比较长就不截图了,可... 查看详情

dockerdesktop在开发中很重要吗?

最近在网上偶然发现了DockerDesktop收费,但是Linux使用貌似是免费的。对此有点不太理解,本人也曾经学习使用过Docker。但是Desktop版的还是第一次用。我对Docker的理解主要就是它的容器管理和集群化部署。个人感觉DockerDesktop确实... 查看详情

docker重学系列之dockerfile(代码片段)

Docker重学系列之DockerfileDockerfile什么是DockerfileDockerfile解析过程Dockerfile的保留命令FROM命令MAINTAINER命令RUN命令构建镜像---build镜像构建上下文(Context)其它dockerbuild的用法直接用Gitrepo进行构建用给定的tar压缩包构建从标准... 查看详情

docker实战系列之docker端口映射错误解决方法(代码片段)

错误:Errorresponsefromdaemon:Cannotstartcontainerweb:iptablesfailed:iptables-tnat-ADOCKER-ptcp-d0/0--dport32797-jDNAT--to-destination172.17.0.30:5000!-idocker0:iptables:Nochain/target/matchbythatname.解决 查看详情

docker入门与应用系列docker图形界面管理之shipyard

Shipyard基于DockerAPI实现的容器图形管理系统,支持container、images、engine、cluster等功能,可满足我们基本的容器部署需求可堆栈的Docker管理基于DockerSwarm,Shipyard可让您管理Docker资源,包括容器,图像,私人注册表等等。Shipyard与其... 查看详情

docker实战系列之快速删除docker中的容器(代码片段)

1、停用全部运行中的容器dockerstop$(dockerps-q)2、删除全部容器dockerrm$(dockerps-aq)3.停用并删除容器dockerstop$(dockerps-q)&dockerrm$(dockerps-aq)  查看详情

docker虚拟化技术系列之-磁盘扩容

Docker在启动容器的时候,需要创建文件系统,为rootfs提供挂载点。最初Docker仅能在支持Aufs文件系统的Linux发行版上运行,但是由于Aufs未能加入Linux内核,为了寻求兼容性、扩展性,Docker在内部通过graphdriver机制这种可扩展的方式... 查看详情

docker系列之docker容器(代码片段)

...状态的容器重新启动。  新建并启动:所需命令主要为dockerrun。例如下面启动后输出一个“HelloWorld”,之后终止容器。[email protect 查看详情

容器系列之docker存储卷

容器系列之docker存储卷docker存储卷背景:一个程序,对于容器来说,启动时依赖于可能不止一层的镜像,联合挂载启动而成,使用overlay2文件系统,引导最上层的可写层,对于读写层来说,所有在容... 查看详情

docker系列之swarm集群搭建

学习Docker很久了,今天分享一下Docker的swarm集群的搭建过程很简单首先第一步是每台机器上面都要安装docker本人使用的是centos7操作系统,使用3太虚拟机,3太虚拟机必须网络互通(废话)docker早在1.12版本就已经支持原生的swarm集... 查看详情

docker入门与应用系列docker图形界面管理之dockerui

1.dockeruiDockerrUI是一个基于DockerAPI提供图形化页面简单的容器管理系统,支持容器管理、镜像管理。1.1下载镜像dockerpullabh1nav/dockerui:latest1.2执行dockerrun-d-p9000:9000-v/var/run/docker.sock:/docker.sock--namedockeruiabh1nav/dockerui:lates 查看详情

docker虚拟化技术系列之-dockerfile配置

 随着Docker管理的任务增多,我们需要用Dockerfile进行docker容器管理,这样可以减轻人工的操作,让docker管理更加的方便,快捷:Dockerfile是一个镜像的完整描述,可以通过Dockerfile来描述构建镜像的步骤,并自动构建一个容器。... 查看详情

docker从入门到初步掌握(代码片段)

提纲:Docker和Kubernetes关系本人开始今天分享之前想提以前简单的问题,大家可以试试回答。Kubernetes和Docker关系?Kubernetes的作用是管理容器,docker一旦变多,重启,容器通信等一系列过程就需要一个工具来进行管理,这就... 查看详情