代码改变世界

Docker desktop 使用

2022-04-30 10:49  youxin  阅读(5335)  评论(0编辑  收藏  举报

docker desktop启动之后settings一直转圈处理

 

docker ps

error during connect: In the default daemon configuration on Windows,

the docker client must be run with elevated privileges to

connect.: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json": open //./pipe/docker_engine: The system cannot find the file specified.

解决步骤:

步骤一 管理员权限运行PowerShell

步骤二 cd "C:\Program Files\Docker\Docker"

步骤三 ./DockerCli.exe -SwitchDaemon
-----------------------------------

windows要打开  勾选Hyper-V选项

 

 

在 Windows 系统中开发 Linux 程序的又一神器

但是 WSL 只是长得像 Linux 而已,虽然在这个子系统中,我们可以执行 Linux 程序,但是到了底层,WSL 调用的还是 win32 API。

也就是说:WSL 只是一个适配层。

后来,微软终于放出了 WSL2 这个真正的 Linux 子系统,这是一个真正的 Linux 完整内核,与传统的虚拟机 VitualBox、VMWare 一样,但是它与宿主机的互操作性更好.

 

什么是 WSL 2? Windows Subsystem for Linux
WSL 2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。 它的主要目标是提高文件系统性能,以及添加完全的系统调用兼容性。

这一新的体系结构改变了这些 Linux 二进制文件与Windows 和计算机硬件进行交互的方式,但仍然提供与 WSL 1(当前广泛可用的版本)中相同的用户体验。

单个 Linux 分发版可以在 WSL 1 或 WSL 2 体系结构中运行。 每个分发版可随时升级或降级,并且你可以并行运行 WSL 1 和 WSL 2 分发版。 WSL 2 使用全新的体系结构,该体系结构受益于运行真正的 Linux 内核。

只有 Windows 10 版本 2004 的内部版本 19041 或更高版本中才提供 WSL 2
————————————————

 win10安装使用Docker-Docker Desktop

 

WSL2配置
启动Docker Desktop,出现如下提示。

 

 

 

点击提示的网址,转到WSL2 Linux kernel配置网页。
以x86计算机为例,下载适用于 x64 计算机的 WSL2 Linux 内核更新包。
按照配置网页提示完成WSL2配置,步骤4至“祝贺你! 现已成功安装并设置了与 Windows 操作系统完全集成的 Linux 分发!”之间的步骤,即可!

打开Docker Desktop即可使用。

 

我们也可以打开CMD窗口,输入docker version得到如下输出

 
Docker Desktop 4.7.1 (77678)
 Engine:
  Version:          20.10.14
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.15
  Git commit:       87a90dc
  Built:            Thu Mar 24 01:46:14 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.5.11
  GitCommit:        3df54a852345ae127d1fa3092b95168e4a88e2f8
 runc:
  Version:          1.0.3
  GitCommit:        v1.0.3-0-gf46b6ba
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

 

 

 

日益严重的软件安全问题,docker 和anchore 联合开发了一个docker 扩展 sbom (软件物料清单)
内部是基于了开源项目syft,使用简单

curl -sSfL https://raw.githubusercontent.com/docker/sbom-cli-plugin/main/install.sh | sh -s --
 

默认是table 格式输出,但是也支持其他格式的,比如json(方便分析以及存储使用)

docker sbom nginx

sbom 是一个很不错的扩展,可以提升我们docker 镜像的透明以及软件的安全,很值得使用

 
在cmd下运行:
 
docker run -d -p 80:80 docker/getting-started
 Unable to find image 'docker/getting-started:latest' locally
 latest: Pulling from docker/getting-started
 59bf1c3509f3: Pull complete
 8d6ba530f648: Pull complete
 5288d7ad7a7f: Pull complete
 39e51c61c033: Pull complete
 ee6f71c6f4a8: Pull complete
 f2303c6c8865: Pull complete
 0645fddcff40: Pull complete
 d05ee95f5d2f: Pull complete
 Digest: sha256:aa945bdff163395d3293834697fa91fd4c725f47093ec499f27bc032dc1bdd16
 Status: Downloaded newer image for docker/getting-started:latest
 c41a18e7fd167e5d02e1f561943f9d60d46282c4fae9079e65c171a6f55ac0c9

然后Docker Desktop可以看到:

 

 

 

 

 
 

 

 


Docker-Docker镜像存储位置

 

 

 

 

Docker基于容器化技术、可以很方便提供ElasticSearch、MySQL、Redis、RabbitMQ等容器,在Linux上安装Docker就很简单,Windows要如何安装?

参考官方安装文档:https://docs.docker.com/docker-for-windows/install/
官方给出了两种方案,这里可能就会纠结了到底用哪种,WSL2还是Hyper-V,这两者有什么不同?可以参考下面一段话

In the most basic of answers: If you’re ONLY using docker: WSL2

If you require Linux, additional VMs or want access to Docker’s Advanced tab for resource allocation: Hyper-V

Final Note: Although Hyper-V is officially unsupported for Windows 10 Home edition and is stated so throughout published material, there is a proposed way to enable it which can be found in this MicrosoftDocs Virtualization-Documentation issue posting. While I am unable to comment on how well it works or if it works at all, there are guides available if you wish to try.

如果你只用docker的话,考虑各方面使用WSL2是最好的选择,而且Hyper-v不适合家庭版安装docker。

原文地址:
https://superuser.com/questions/1561465/docker-on-hyper-v-vs-wsl-2
————————————————
参考链接:https://blog.csdn.net/qq_38721537/article/details/117163344

使用WSL2 的在docker desktop改不了位置,因为是wsl2管理的。我们手动去调整:

 

修改docker数据存放位置
经过上一步我们已经成功安装好了docker了,但是现在docker默认的镜像和数据文件都存放在C盘中,所以我们需要将修改配置将docker数据文件移动到其他地方。

当前docker数据文件存放位置

 

 

 

 

首先我们右键点击右下角鲸鱼图标退出Docker,等待Docker完全退出后
 

使用以下的命令来查询当前docker的状态

 

wsl -l -v --all

退出后,可以再查询一次状态,可以看到状态变成了stopped这样就正确了

 

 

 

导出WSL系统

 

 

使用以下的命令将上面的两个系统导出来

 

 

wsl --export docker-desktop f:\docker-desktop.tar

wsl --export docker-desktop-data f:\docker-desktop-data.tar

 

f:\ 是要导出文件的存放位置,这个可以根据自己的实际情况改\

 

 

 

 

 执行上面2个命令会看到有2个文件生成。

注销现有的WSL系统

 

上面导出完成后,就需要注销掉之前的,使用以下的命令注销

 

wsl --unregister docker-desktop

wsl --unregister docker-desktop-data

 这两个命令不需要修改,直接执行就好了、

执行后可以看到原来的文件夹为空了

 可以使用上面查询状态的命令查看一下是否注销了,没有那两条docker开头的内容就表示注销掉了

 

 

 

 

重新创建WSL系统

 

 

上面注销掉之后,就可以在我们指定的位置重新创建了,这个新位置就是我们想要真正存放镜像的位置了

 

 

我这里打算将这个位置放在D盘的docker文件夹,我D盘空间还是很大的。可以先提前创建好文件夹

创2个文件夹docker-desktop docker-desktop-data

 

 

 

命令的话就需要这样写

 

 

wsl --import docker-desktop D:\docker\docker-desktop z:\docker-desktop.tar --version 2

wsl --import docker-desktop-data D:\docker\docker-desktop-data z:\docker-desktop-data.tar --version 2

 

 

需要注意的是这两个需要放在不同的文件夹里,不然会执行不成功

 

 

 

 

执行完成后,可以看到D盘的文件夹中个多了一个磁盘文件

 

 

 

 

 

到这docker的存放目录就修改完成了,可以启动我们的docker了

 

 

怎么检查改完后是否生效

 

可以观察磁盘文件的大小是否变大了

这是我刚迁移完后的磁盘文件的大小,有800+

 

这是我随便拉了一个镜像后的文件大小,有1G多了

 

这样就表示我们修改存放位置成功了

 

 

参考:https://baijiahao.baidu.com/s?id=1711473201375899625&wfr=spider&for=pc

https://zhuanlan.zhihu.com/p/411618091

 

docker下载nginx

docker pull nginx

 docker run -d --name nginx -p 8001:80 nginx