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 镜像的透明以及软件的安全,很值得使用
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:\ 是要导出文件的存放位置,这个可以根据自己的实际情况改\
注销现有的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