Docker在windows上的使用嘗試
摘要:Docker底層都是基于Linux,因此主要的應(yīng)用環(huán)境也應(yīng)該是Linux,但畢竟很多時(shí)候還是Windows環(huán)境工作,尤其是開(kāi)發(fā)的時(shí)候。所以了解下Docker在Windows環(huán)境下的使用情況也有必要。這里記錄了一些基本的信息。
Docker在Windows上的安裝
Windows用戶使用Docker ToolBox來(lái)安裝Docker軟件。Docker ToolBox包括如下Docker工具:
- Docker CLI client for running Docker Engine to create images and containers
- Docker Machine so you can run Docker Engine commands from Windows terminals
- Docker Compose for running the docker-compose command
- Kitematic, the Docker GUI
- the Docker QuickStart shell preconfigured for a Docker command-line environment
- Oracle VM VirtualBox
對(duì)Windows版本的要求
要在Windows上運(yùn)行Docker,必須是64位的win7或者更高的64位版本。
Docker ToolBox安裝
需要安裝如下部分:
- Docker Client for Windows
- Docker Toolbox management tool and ISO
- Oracle VM VirtualBox
- Git MSYS-git UNIX tools
安裝完成后會(huì)生成三個(gè)快捷方式,分別為:
(1) Docker Quickstart Terminal: 提供Docker的命令行操作
(2) Oracle VM VirtualBox: 打開(kāi)可以看到有一個(gè)虛擬機(jī),里面安裝了Core Linux機(jī)器,名字為default。
(3) Kitematic (Alpha):圖形化的docker工具
啟動(dòng)Terminal窗口工具之后,我運(yùn)行hello world報(bào)錯(cuò)了
$ docker run hello-world
docker: An error occurred trying to connect: Post http://127.0.0.1:2375/v1.22/co
ntainers/create: dial tcp 127.0.0.1:2375: connectex: No connection could be made
because the target machine actively refused it..
See 'C:\Program Files\Docker Toolbox\docker.exe run --help'.
上面問(wèn)題的解決辦法:經(jīng)過(guò)多方查資料,可能的原因是本機(jī)安裝的其他虛擬網(wǎng)絡(luò),如VMWare, VPN等可能造成網(wǎng)絡(luò)沖突導(dǎo)致。因此我打算重建自定義網(wǎng)絡(luò),在重建之前,我打開(kāi)"Oracle VM VirtualBox",刪除了默認(rèn)的default虛擬機(jī)和兩個(gè)Host-only網(wǎng)絡(luò)。本來(lái)打算執(zhí)行一個(gè)命令來(lái)自定義創(chuàng)建的的,結(jié)果當(dāng)我啟動(dòng)"Docker Quickstart Terminal"時(shí),系統(tǒng)自動(dòng)重建了虛擬機(jī)和網(wǎng)絡(luò),然后進(jìn)入結(jié)果就OK了。因此,解決辦法就是刪除默認(rèn)的虛擬機(jī)和網(wǎng)絡(luò),讓系統(tǒng)幫你重建一次。
default虛擬機(jī)
可以直接從"Oracle VM VirtualBox"界面進(jìn)入default虛擬機(jī),不需要輸入密碼即可進(jìn)入root環(huán)境,輸入ifconfig命令可以看到default有三個(gè)網(wǎng)段的IP地址,分別為:
docker0: 172.17.0.1,這個(gè)是docker的網(wǎng)橋。
eth0:10.0.2.15,這個(gè)網(wǎng)段在Ubuntu環(huán)境中是沒(méi)有的,暫不知道為什么會(huì)多這一個(gè)。
eth1:192.168.99.100,這個(gè)數(shù)宿主機(jī)的IP地址。
windows環(huán)境部分docker命令
$ docker-machine env
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="C:\Users\dhu\.docker\machine\machines\default"
export DOCKER_MACHINE_NAME="default"
$ docker info
Containers: 2
Running: 0
Paused: 0
Stopped: 2
Images: 1
Server Version: 1.10.3
Storage Driver: aufs
Root Dir: /mnt/sda1/var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 6
Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Plugins:
Volume: local
Network: bridge null host
Kernel Version: 4.1.19-boot2docker
Operating System: Boot2Docker 1.10.3 (TCL 6.4.1); master : 625117e - Thu Mar 10
22:09:02 UTC 2016
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 996.1 MiB
Name: default
ID: PKEB:7MPC:BCKW:4RCR:JLMF:OMOO:ZY5T:O2W2:3LLX:OXDM:DD56:I4B7
Debug mode (server): true
File Descriptors: 10
Goroutines: 22
System Time: 2016-04-09T15:39:25.323452975Z
EventsListeners: 0
Init SHA1:
Init Path: /usr/local/bin/docker
Docker Root Dir: /mnt/sda1/var/lib/docker
Labels:
provider=virtualbox
docker-machine rm default 刪除一個(gè)虛擬機(jī)
打開(kāi)"Oracle VM VirtualBox",進(jìn)入File->Preferences->Network->Host-only Networks,刪除兩個(gè)默認(rèn)的網(wǎng)絡(luò)。
docker-machine create --driver virtualbox --virtualbox-hostonly-cidr "25.0.1.100/24" dev
總結(jié)一下:Docker在windows上運(yùn)行其本質(zhì)是運(yùn)行在Windows上的虛擬機(jī)里面的Linux上,實(shí)質(zhì)上還是運(yùn)行在Linux,因?yàn)镈ocker是建立在Linux內(nèi)核基礎(chǔ)上的,Windows無(wú)法適應(yīng)。所以從這點(diǎn)上來(lái)說(shuō),Docker的主戰(zhàn)場(chǎng)應(yīng)該還是Windows。
參考資料: