Docker for Windows 使用 VMware 作为后端(无需安装 Hyper-V)

本文参考自 http://www.cnblogs.com/VAllen/p/Docker-for-windows-on-VMware.html

1. 安装 docker for windows

我是使用 docker for windows 的 msi 文件安装的,如果是使用 DockerToolbox.exe 安装请看上方参考文本。

安装过程十分简单,这里不赘述。

2. 下载 VMware Workstation 驱动支持

下载最新的 docker-machine-vmwareworkstation

将下载下来的 docker-machine-driver-vmwareworkstation.exe 放到 C:\Program Files\Docker\Docker\resources\bin

3. 新建 machine

打开 Xshell,Xshell 自带 windows 终端模拟功能。

运行 docker-machine ls

1
2
3
PS C:\Users\nero> docker-machine.exe ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default * vmwareworkstation Running tcp://192.168.140.129:2376 v17.09.1-ce

默认应该什么都没有,我这里已经部署好所以会出现 default。

可以执行 docker-machine stop default && docker-machine rm default 来结束并删除这个 machine。

创建支持 vmware 的 machine docker-machine create --driver=vmwareworkstation default

启用 docker-machine active default

4. 修改 Docker 源为国内源

在 Xshell 下执行 docker-machine.exe ssh default

这时候会链入一个 Linux 的虚拟机里,其实这个就是 Docker 的虚拟机咯。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[c:\~]$ docker-machine.exe ssh default
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 17.09.1-ce, build HEAD : e7de9ae - Fri Dec 8 19:41:36 UTC 2017
Docker version 17.09.1-ce, build 19e2cf6
docker@default:~$

接下来修改配置文件 sudo vi /var/lib/boot2docker/profile

--label provider=vmwareworkstation的下一行添加 --registry-mirror https://registry.docker-cn.com

1
2
3
4
5
6
7
8
9
10
11
12
EXTRA_ARGS='
--label provider=vmwareworkstation
--registry-mirror https://registry.docker-cn.com
'
CACERT=/var/lib/boot2docker/ca.pem
DOCKER_HOST='-H tcp://0.0.0.0:2376'
DOCKER_STORAGE=aufs
DOCKER_TLS=auto
SERVERKEY=/var/lib/boot2docker/server-key.pem
SERVERCERT=/var/lib/boot2docker/server.pem

保存后运行退出 ssh

运行 docker-machine restart

5. powershell 启用后端

创建 powershell 启动运行脚本

1
2
New-item –type file –force $profile
Notepad $profile

打开记事本之后输入

1
& docker-machine.exe env default | Invoke-Expression

保存退出。

关闭 powershell 再次运行的时候会遇到 在此系统中禁止执行脚本解决方法,这时候以管理员身份运行 Powershell 输入以下命令。

1
2
3
4
5
set-executionpolicy remotesigned
执行策略更改
执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如
http://go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略?
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暂停(S) [?] 帮助 (默认值为“N”): y

以上禁止执行脚本解决方法参考自 PowerShell在此系统中禁止执行脚本解决方法

再次运行 powershell ,再运行 docker info

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
PS C:\Users\nero> docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 17.09.1-ce
Storage Driver: aufs
Root Dir: /mnt/sda1/var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 0
Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 06b9cb35161009dcb7123345749fef02f7cea8e0
runc version: 3f2f8b84a77f73d38244dd690525642a72156c64
init version: 949e6fa
Security Options:
seccomp
Profile: default
Kernel Version: 4.4.104-boot2docker
Operating System: Boot2Docker 17.09.1-ce (TCL 7.2); HEAD : e7de9ae - Fri Dec 8 19:41:36 UTC 2017
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 995.7MiB
Name: default
ID: GDCJ:VXO6:STS3:IGS5:YU2P:ALGO:L22U:4RV7:62ON:O3F2:X53E:MPBC
Docker Root Dir: /mnt/sda1/var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
File Descriptors: 17
Goroutines: 27
System Time: 2017-12-23T07:51:27.84521085Z
EventsListeners: 0
Registry: https://index.docker.io/v1/
Labels:
provider=vmwareworkstation
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://registry.docker-cn.com/
Live Restore Enabled: false

终于可以在 Windows 下愉快的玩耍 Docker 了。

6. 任务管理器中禁用默认的 Docker for Windows 启动

disable_Dockerautorun