记录docker安装配置使用
上一级页面:index-wsl
前言
首先安装wsl2,index-wsl
docker搭配wsl2使用,Docker在wsl2中支持两种安装方式,具体见:Docker在wsl2中支持两种安装方式
本文推荐使用Windows docker desktop
搭配WSL2的方式,下文将其称为Docker for windows desktop
。
此种方式是通过使用内网穿透,使得Linux成功挂载上windows端的docker,并且在Linux中使用docker命令。
什么是Docker for windows Desktop
现在我们已经安装了WSL2,
我们可以在Docker Desktop for Windows上配置它。
Windows 子系统 for Linux (WSL) 2 引入了一个重大的体系结构更改,因为它是 Microsoft 构建的完整 Linux 内核,允许 Linux 容器在没有仿真的情况下本机运行。
Docker Desktop 使用 WSL 2 中的动态内存分配功能来大大提高资源利用率。
这意味着 Docker Desktop 仅使用所需的 CPU 和内存资源量,同时使 CPU 和内存密集型任务(如构建容器)能够更快地运行。
此外,在 WSL 2 中,冷启动后启动 Docker 守护程序所需的时间要快得多。启动 Docker 守护程序只需不到 10 秒,而在以前版本的 Docker Desktop 中则需要近 1 分钟。
另外一种docker安装方式,使用原生的linux 容器
本文主要介绍官方推荐的Docker for windows Desktop搭配WSL2的方式,
而对于另外一种方式,见安装与配置-docker-for-liunx-wsl
安装配置docker & wsl2
官方的docker & WSL2文档请见:WSL 上的 Docker 容器入门 | Microsoft Docs
跟随官方文档开始配置:
如果您运行的是受支持的系统,Docker 将在初始化期间提示您启用 WS2。
若要安装 Docker(在已安装 WSL 之后):
-
下载 Docker Desktop 并按照安装说明进行操作。
-
安装后,从 Windows 开始菜单启动 Docker Desktop,然后从任务栏的隐藏图标菜单中选择 Docker 图标。 右键单击该图标以显示 Docker 命令菜单,然后选择“设置”。
-
确保在“设置”>“常规”中选中“使用基于 WSL 2 的引擎”。
-
通过转到“设置”>“资源”>“WSL 集成”,从要启用 Docker 集成的已安装 WSL 2 发行版中进行选择。
配置网络代理
docker build
中,经常要拉取的一下开发工具也下载很慢或者无法下载, 这时候可以使用代理进行下载
您的docke可以设置一个网络代理,可以使用一个脚本,具体见index-proxy
或者使用docker官方提供的WSL Integration
,具体见为docker-wsl-integration设置代理
配置镜像加速服务器
国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。国内很多云服务商都提供了国内加速器服务,例如:
由于镜像服务可能出现宕机,建议同时配置多个镜像。各个镜像站测试结果请到 docker-practice/docker-registry-cn-mirror-test 查看。
国内各大云服务商(腾讯云、阿里云、百度云)均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务,具体请参考本页最后一小节。
建议阅读文档:镜像加速器 - Docker — 从入门到实践 (gitbook.io)
添加镜像服务器,以提供对二进制文件下载的加速服务
1 | 为docker设置镜像 |
测试docker是否安装成功
若要确认已安装 Docker,请打开 WSL 发行版(例如 Ubuntu)
在WSL发行版的shell中输入 docker --version
来显示版本和内部版本号
通过使用 docker run hello-world
运行简单的内置 Docker 映像,测试安装是否正常工作
成功运行会显示如同的提示
一个docker测试程序
docker官方有全面的文档Docker Documentation | Docker Documentation
按照docker文档所说的,测试第一个docker程序Orientation and setup | Docker Documentation
1 | docker run -d -p 80:80 docker/getting-started |
注意防火墙
打开docker for windows desktop
跟随文档访问Docker 仪表板
成功进入仪表盘,说明docker配置完成了
docker 从入门到实战
docker作为成熟的商业产品,已经有了许多优秀的教程,这里给出一些推荐。
前言 - Docker — 从入门到实践 (gitbook.io)
Docker 入门教程 - 阮一峰的网络日志 (ruanyifeng.com)
需要了解的有用 Docker 命令
下面是一些需要了解的有用 Docker 命令:
通过输入以下命令列出 Docker CLI 中可用的命令:
1 | docker |
使用以下命令列出特定命令的信息:
1 | docker <COMMAND> --help |
使用以下命令列出计算机上的 docker 映像(此时仅为 hello-world 映像):
1 | docker image ls --all |
使用以下命令列出计算机上的容器:
1 | docker container ls --all |
或
1 | docker ps -a |
(如果没有 -a
显示全部标志,则仅显示正在运行的容器)
使用以下命令列出有关 Docker 安装的系统范围的信息,包括 WSL 2 上下文中你可使用的统计信息和资源(CPU & 内存):
1 | docker info |
让容器内的软件使用代理
配置 ENV 变量
让容器内的软件使用代理
1 | ENV http_proxy "http://host.docker.internal:1080" |
注意: **这里的 host.docker.internal 解析出来的是主机 IP, **
MacOS 中可以使用 docker.for.mac.localhost
,
Win 环境中使用 docker.for.win.localhost
host 网络模式–使用宿主网络
直接使用 ENV
命令固然能解决方法, 但是硬编码会导致各种环境需要相应修改,
docker 中还有一种 host 网络模式, 让 container 使用宿主机的网络,
这里 docker build --network host .
也可以相应配置上
1 | export http_proxy="http://host.docker.internal:1080" |
删除停止的容器
在docker中,停止的容器不会自动删除
我们可以使用 docker ps -a
查看所有的容器状态
1 | [root@localhost ~]# docker ps -a |
那些 STATUS
栏以 Exited
开头的都是已经退出停止了的容器
我们可以使用下面的命令删除容器 6801e4604a32
已经停止的容器并不会自动删除,而是需要我们手动删除它们,这时候就要用到 docker rm
命令了
1 | docker rm <container_id> |
1 | root@DESKTOP-VD0NEOU:~# docker ps -a |
有一点需要注意,docker rm
命令只能删除已经停止的容器的 ID,还未停止的容器会报错
1 | docker kill 容器id |
报错解决
test
参考、引用、致谢
适用于 Linux 的 Windows 子系统 Windows 10 安装指南
https://docs.microsoft.com/en-us/windows/wsl/install-win10
更新 WSL 2 Linux 内核
https://docs.microsoft.com/en-us/windows/wsl/wsl2-kernel
Docker for Windows 入门
https://docs.docker.com/docker-for-windows/
Docker Desktop WSL 2 后端
https://docs.docker.com/docker-for-windows/wsl/
https://www.twle.cn/l/yufei/docker/docker-basic-container-rm.html