前言

推荐更新的方法: Windows 10 家庭版 + WSL 2 + Docker Desktop

Docker 容器在本地搭建服务非常方便,拉取镜像,使用命令行参数启动即可。运行多个容器可以使用 docker-compose 工具,编写 YAML 配置文件为容器进行设置,然后使用 docker-compose 启动。

之前只在 Ubuntu 上用过 Docker,安装 Docker Engine 后就可以使用了,Ubuntu 上的安装过程具体见 官方文档 ,为了让非 root 用户也可以直接使用 Docker,安装完毕后还需要添加 docker 用户组并将当前用户加入该组,官方文档的 可选步骤 说明了具体的操作过程。

但是,我用的是 Windows 10 笔记本,Ubuntu 本来就是在 VirtualBox 虚拟机运行的,然后再在 Ubuntu 里安装 Docker,具体就像这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
+-----------------------------------------+
| |
| +-----------------------------+ |
| | | |
| | +-----------------+ | |
| | | | | |
| | | +---------+ | | |
| | | | Docker | | | |
| | | +---------+ | | |
| | | Ubuntu | | |
| | +-----------------+ | |
| | VirtualBox | |
| +-----------------------------+ |
| Windows |
+-----------------------------------------+

如果想在 Windows 上使用虚拟机里的 Docker ,那就得配置网卡,连接到 Ubuntu 上使用 Docker 。这个做法首先是很麻烦的,VirtualBox 的 网络模式 有 5 种,其中好几种都可以满足需求,但配置过程并不相同;此外,我只是想用 Docker ,不想用 Ubuntu ,虚拟机运行 Ubuntu 不仅消耗系统资源,而且运行窗口还不能关闭,用 Docker 还得先启动 Ubuntu 虚拟机,我???

Docker 为 Windows 用户提供了 Docker Desktop ,UI 看起来还不错的应用程序,方便安装了 64 位 Windows 10 (Pro, Enterprise, or Education (Build 16299 or later) )的用户使用 Docker ,Windows 10 Home 不配。

不过现在官方还提供了 基于 WSL 2 安装 Docker Desktop 的方法,之前折腾 WSL 未果,而且我已经用着现在的解决办法了,如果有朋友按捺不住想安利就留言告诉我一声吧xd

我使用的解决方案是安装 Docker Machine 然后再在其中使用 Docker,其实具体来说和使用 Ubuntu 时的结构是一样的… 不过省去了 Ubuntu 这个大头,直接使用命令行操作就可以了。

安装过程

VirtualBox

如果本来就在用 VirtualBox 当然可以跳过这步了,没有的话,直接下载文件执行安装即可,VirtualBox 下载,使用默认选项一直确定下去就好了。

安装完毕后并不需要进行什么配置。

Docker Machine

安装

Docker 提供了对 Docker Machine 的介绍,有兴趣可以看一下原理,顺带一提 Docker 文档都是英文的。

Docker Machine 在 Github 上开源,我突然发现这玩意儿已经一年没更新了(¿),可以直接在该页面下载可执行文件,或者使用 git bash 下载。

1
2
3
if [[ ! -d "$HOME/bin" ]]; then mkdir -p "$HOME/bin"; fi && \
curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" && \
chmod +x "$HOME/bin/docker-machine.exe"

同样,安装完成后不需要进行什么配置,打开 git bash 确认一下安装是否成功。

  • 我之前已经创建了一个名为 default 的 Docker Machine

创建 Machine

创建一个名为 default 的 Docker Machine,使用 virtualbox 作为驱动。以下操作会下载安装了 Docker 守护进程的轻量级 Linux 发行版(boot2docker),创建并启动一个运行该 Linux 的 VirtualBox 虚拟机。

  • 芜湖,Ubuntu 变成了 boot2docker
1
docker-machine create --driver virtualbox default

创建完毕后使用 ssh 连接虚拟机,然后就可以使用 docker 了,不过在 Windows 上访问其中的容器需要使用虚拟机的 ip 。

1
2
3
4
5
# ssh 连接
docker-machine ssh default

# 查看虚拟机环境变量
docker-machine env default

相关说明可查阅官方文档:Get started with Docker Machine and a local VM

问题解决

1. 在 Machine 中无法使用 clear 清空命令行

‘xterm-256color’: unknown terminal type.

可以使用 export TERM=xterm 临时解决,但是重新 ssh 连接虚拟机后就失效

2. 在 Machine 中访问 Windows 上的文件

可以访问,但貌似仅限于 C:/Users/ ,直接 cd 到相应目录即可

1
cd /c/Users/

3. 使用 scp 拷贝文件提示输入密码

默认用户名为 docker ,密码为 tcuser

4. boot2docker 弃用

回头得改用 WSL 了……