安裝Docker
安裝Docker在各個環境上有不同的步驟,但在非Linux的系統上,就必須透過boot2docker來虛擬出可以執行Docker的環境。
Docker安裝的文件非常完整,在Docker的Installation Page有所有環境的安裝檔案與環境。
https://docs.docker.com/installation/
我們這邊說明一下boot2docker的安裝與基本使用方法...
下載與安裝boot2docker
boot2docker for Mac OS X的部分,下載可以在下面網址下載:
https://github.com/boot2docker/osx-installer/releases/latest
安裝的部分,只要透過安裝的Winzard完成安裝即可,在篇幅內就不再贅述安裝流程...
啟動與關閉boot2docker
啟動boot2docker
$ boot2docker start
Waiting for VM and Docker daemon to start...
.........................
Started.
Your DOCKER_HOST env variable is already set correctly.
當boot2docker啟動後,我們可以透過下面指令找到boot2docker的實際ip位置
$ boot2docker ip
The VM's Host only interface IP address is: 192.168.59.103
以docker client而言,我們需要設定boot2docker環境變數,將docker host的位置指向server的位置
export DOCKER_HOST=tcp://192.168.59.103:2375
當設定完成,就可以透過docker的指令來操作...
$ docker info
Containers: 44
Images: 76
Storage Driver: aufs
Root Dir: /mnt/sda1/var/lib/docker/aufs
Dirs: 164
Execution Driver: native-0.2
Kernel Version: 3.16.1-tinycore64
Operating System: Boot2Docker 1.2.0 (TCL 5.3); 3.16.1-config-file : e75396e - Fri Aug 22 06:45:30 UTC 2014
Debug mode (server): true
Debug mode (client): false
Fds: 11
Goroutines: 11
EventsListeners: 0
Init Path: /usr/local/bin/docker
Username: peihsinsu
Registry: [https://index.docker.io/v1/]
當不需要boot2docker時候,我們可以透過下面指令關閉boot2docker環境
boot2docker stop
boot2docker有提供其他操作指令,我們可以透過help page來查詢其他可用的操作
透過-h可以得到boot2docker後面可以接受哪些參數操作
$ boot2docker -h
Usage of docker:
--api-enable-cors=false Enable CORS headers in the remote API
-D, --debug=false Enable debug mode
-d, --daemon=false Enable daemon mode
-G, --group="docker" Group to assign the unix socket specified by -H when running in daemon mode
use '' (the empty string) to disable setting of a group
-H, --host=[] The socket(s) to bind to in daemon mode
specified using one or more tcp://host:port, unix:///path/to/socket, fd://* or fd://socketfd.
--tls=false Use TLS; implied by tls-verify flags
--tlscacert="/Users/simonsu/.docker/ca.pem" Trust only remotes providing a certificate signed by the CA given here
--tlscert="/Users/simonsu/.docker/cert.pem" Path to TLS certificate file
--tlskey="/Users/simonsu/.docker/key.pem" Path to TLS key file
--tlsverify=false Use TLS and verify the remote (daemon: verify client, client: verify daemon)
-v, --version=false Print version information and quit
另外,需要操作boot2docker的功能,可以透過boot2docker知道第二層指令有哪些...
$ boot2docker help
Usage: boot2docker [<options>] <command> [<args>]
Boot2Docker management utility.
Commands:
init Create a new Boot2Docker VM.
up|start|boot Start VM from any states.
ssh [ssh-command] Login to VM via SSH.
save|suspend Suspend VM and save state to disk.
down|stop|halt Gracefully shutdown the VM.
restart Gracefully reboot the VM.
poweroff Forcefully power off the VM (may corrupt disk image).
reset Forcefully power cycle the VM (may corrupt disk image).
delete|destroy Delete Boot2Docker VM and its disk image.
config|cfg Show selected profile file settings.
info Display detailed information of VM.
ip Display the IP address of the VM's Host-only network.
socket Display the DOCKER_HOST socket to connect to.
shellinit Display the shell command to set up the Docker client.
status Display current state of VM.
download Download Boot2Docker ISO image.
upgrade Upgrade the Boot2Docker ISO image (restart if running).
version Display version information.
Options:
--basevmdk="": Path to VMDK to use as base for persistent partition
--dhcp=true: enable VirtualBox host-only network DHCP.
--dhcpip=192.168.59.99: VirtualBox host-only network DHCP server address.
-s, --disksize=20000: boot2docker disk image size (in MB).
--dockerport=0: host Docker port (forward to port 2375 in VM). (deprecated - use with care)
--driver="virtualbox": hypervisor driver.
--hostip=192.168.59.3: VirtualBox host-only network IP address.
--iso="/Users/simonsu/.boot2docker/boot2docker.iso": path to boot2docker ISO image.
--lowerip=192.168.59.103: VirtualBox host-only network DHCP lower bound.
-m, --memory=2048: virtual machine memory size (in MB).
--netmask=ffffff00: VirtualBox host-only network mask.
--serial=false: try serial console to get IP address (experimental)
--serialfile="": path to the serial socket/pipe.
--ssh="ssh": path to SSH client utility.
--ssh-keygen="ssh-keygen": path to ssh-keygen utility.
--sshkey="/Users/simonsu/.ssh/id_boot2docker": path to SSH key to use.
--sshport=2022: host SSH port (forward to port 22 in VM).
--upperip=192.168.59.254: VirtualBox host-only network DHCP upper bound.
--vbm="VBoxManage": path to VirtualBox management utility.
-v, --verbose=false: display verbose command invocations.
--vm="boot2docker-vm": virtual machine name.
另外,關於boot2docker的一些information,可以在boot2docker info中查詢到
$ boot2docker info | json
{
"Name": "boot2docker-vm",
"UUID": "e5f3e81c-f7c8-433c-97d6-958ebfedb788",
"State": "running",
"CPUs": 4,
"Memory": 2048,
"VRAM": 8,
"CfgFile": "/Users/simonsu/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vbox",
"BaseFolder": "/Users/simonsu/VirtualBox VMs/boot2docker-vm",
"OSType": "",
"Flag": 0,
"BootOrder": null,
"DockerPort": 0,
"SSHPort": 2022,
"SerialFile": "/Users/simonsu/.boot2docker/boot2docker-vm.sock"
}
註:json這個指令是為了將screen output做json format的一個工具,如欲安裝json這個工具,可以參考jsontool。
進入boot2docker Shell
到這邊,我們應該大概猜到,boot2docker其實是另外的一台VM,因此,應當也有進入這個VM的方法... 在Mac中,boot2docker是預設是安裝在VirtualBox中,如果要進到VM中,可以透過下面方法:
boot2docker ssh
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
boot2docker: 1.2.0
3.16.1-config-file : e75396e - Fri Aug 22 06:45:30 UTC 2014
docker@boot2docker:~$
進入boot2docker之後,一樣可以執行docker指令...