windows安装docker

本文最后更新于 2023年10月26日。

安装WSL

先安装WSL,管理员运行`wsl –install

(base) PS C:\Users\weiyo> wsl --install
正在安装: 虚拟机平台
已安装 虚拟机平台。
正在安装: 适用于 Linux 的 Windows 子系统
已安装 适用于 Linux 的 Windows 子系统。
正在下载: WSL 内核
正在安装: WSL 内核
已安装 WSL 内核。
正在下载: GUI 应用支持
[======                    10.6%                           ]
(base) PS C:\Users\weiyo> wsl --install
由于需要重新启动系统,因此未执行任何操作。
(base) PS C:\Users\weiyo>

重启系统。

安装docker-desktop

然后在docker官网下载(https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe)windows客户端安装。

安装完成后系统托盘会出现docker图标。
命令行输入`docker version

C:\Users\weiyo>docker version
Client:
Cloud integration: v1.0.29
Version:           20.10.20
API version:       1.41
Go version:        go1.18.7
Git commit:        9fdeb9c
Built:             Tue Oct 18 18:28:44 2022
OS/Arch:           windows/amd64
Context:           default
Experimental:      true
Server: Docker Desktop 4.13.0 (89412)
Engine:
Version:          20.10.20
API version:      1.41 (minimum version 1.12)
Go version:       go1.18.7
Git commit:       03df974
Built:            Tue Oct 18 18:18:35 2022
OS/Arch:          linux/amd64
Experimental:     false
containerd:
Version:          1.6.8
GitCommit:        9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6
runc:
Version:          1.1.4
GitCommit:        v1.1.4-0-g5fd4c4d
docker-init:
Version:          0.19.0
GitCommit:        de40ad0

出现docker版本信息,表明安装成功。

windows docker-tesktop数据目录

`\wsl.localhost\docker-desktop-data\data\docker\volumes\dc1>

(base) PS Microsoft.PowerShell.Core\FileSystem::\\wsl.localhost\docker-desktop-data\data\docker\volumes\dc1>

查看wls情况:

(base) PS E:\docker\dc1> wsl --list -v
NAME                   STATE           VERSION
* docker-desktop         Running         2
docker-desktop-data    Running         2

查看docker info

C:\Users\weiyo>docker info
Client:
Context:    default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc., v0.9.1)
compose: Docker Compose (Docker Inc., v2.12.0)
dev: Docker Dev Environments (Docker Inc., v0.0.3)
extension: Manages Docker extensions (Docker Inc., v0.2.13)
sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc., 0.6.0)
scan: Docker Scan (Docker Inc., v0.21.0)
Server:
Containers: 1
Running: 1
Paused: 0
Stopped: 0
Images: 1
Server Version: 20.10.20
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runtime.v1.linux runc io.containerd.runc.v2
Default Runtime: runc
Init Binary: docker-init
containerd version: 9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6
runc version: v1.1.4-0-g5fd4c4d
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 5.10.16.3-microsoft-standard-WSL2
Operating System: Docker Desktop
OSType: linux
Architecture: x86_64
CPUs: 12
Total Memory: 7.619GiB
Name: docker-desktop
ID: KWST:JEOF:MTGP:DS5U:H4XM:4K66:2VV6:KLFU:CADN:6H63:WEXL:DQ5G
Docker Root Dir: /var/lib/docker
Debug Mode: false
HTTP Proxy: http.docker.internal:3128
HTTPS Proxy: http.docker.internal:3128
No Proxy: hubproxy.docker.internal
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
hubproxy.docker.internal:5000
127.0.0.0/8
Live Restore Enabled: false
WARNING: No blkio throttle.read_bps_device support
WARNING: No blkio throttle.write_bps_device support
WARNING: No blkio throttle.read_iops_device support
WARNING: No blkio throttle.write_iops_device support

windows中docker根目录的问题

在浏览器访问以下指令可以进入.vhdx中
\\wsl$\docker-desktop
\\wsl$\docker-desktop-data
我们想要访问的是数据卷的位置
\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\
\\wsl$\docker-desktop-data

docker info中的根目录Docker Root Dir: /var/lib/docker是docker直接主机的根目录

基于wsl的windows docker的文件目录
实际位置为`\wsl.localhost\docker-desktop-data\data\docker\volumes

(base) PS E:\docker\dc1> cd \\wsl.localhost\docker-desktop-data\data\docker\volumes
(base) PS Microsoft.PowerShell.Core\FileSystem::\\wsl.localhost\docker-desktop-data\data\docker\volumes> ls
目录: \\wsl.localhost\docker-desktop-data\data\docker\volumes
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/10/26     10:08                dc1_cloudreve
d-----        2022/10/26     10:08                dc1_uploads
d-----        2022/10/26     10:09                03661a451e56c705044921fab1de01f1f0b955b00ac8c15159b84b1da4f888a7
d-----        2022/10/26     10:09                2295aba62804537bbb98ccceed10439d3e639787f94fc8ac96d1c39f248b166c
-----l        2022/10/25     16:13              0 backingFsBlockDev
------        2022/10/26     10:09          32768 metadata.db
Docker 镜像由 docker 自己的虚拟机管理。 “docker info”给出的路径 /var/lib/docker 是相对于 docker 的主机文件系统,而不是你的容器的文件系统。它们的挂载点不同。可以通过以下两种方式查看docker的宿主文件系统:
1.  您可以将主机文件系统挂载到容器目录。比如,
docker run -v /:/data -it ubuntu /bin/bash
此命令在 Ubuntu docker 映像中运行一个 shell,将 docker 的文件系统挂载到 /data 目录。在那里,您可以在 /data 下找到完整的文件系统,包括 ./var/lib/docker。如果需要,您可以在 shell 提示符下“chroot /data”以获得更好的视图。
2.  当您在 WSL2 中的发行版中启用 docker 时,您始终可以在您的发行版 /mnt 目录中检查您的容器。 Docker 已经为你挂载了一切。
/mnt/wsl/docker-desktop-data/data/docker
3.  如果你有足够的经验,你可能会在你的 Windows 目录中找到所有数据的虚拟磁盘的实际位置。
C:\Users\your_name\AppData\Local\Docker\wsl\data\
或者可能只是为了好玩:
\\wsl$\Ubuntu\mnt\wsl\docker-desktop-data\data\docker
很遗憾,我没有尝试深入了解它们。