Docker安装之MAC
刚学习docker的时候,在linux直接通过yum安装启动后,运行docker命令,起步挺简单的。但在mac上安装时,发现有一堆组件,完全不知道都是干嘛的,一团乱麻。本文介绍mac上安装卸载docker,并介绍docker在mac的运行机制。
一、MAC安装docekr
下载安装
到docker官网下在DockerToolbox.pkg
,按提示安装介绍。
查看版本和虚拟机。
$ docker-machine version
docker-machine version 0.8.2, build e18a919
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
启动
点击 Docker Quickstart Terminal
。
可以看到,自动在VirtualBox创建了一个虚拟机,启动了docker daemon,并通过docker-machine env default
连接上docker,docker ip 是192.168.99.100。
再运行上面的命令,可以看到了一台machine default
。
docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Running tcp://192.168.99.100:2376 v1.13.1
查看docker的版本
$ docker version
Client:
Version: 1.12.6
API version: 1.24
Go version: go1.6.4
Git commit: 78d1802
Built: Wed Jan 11 00:23:16 2017
OS/Arch: darwin/amd64
Server:
Version: 1.13.1
API version: 1.26
Go version: go1.7.5
Git commit: 092cba3
Built: Wed Feb 8 08:47:51 2017
OS/Arch: linux/amd64
运行第一个容器
docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
78445dd45222: Pull complete
Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://cloud.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
查看二进制文件已经安装到mac
ll /usr/local/bin/docker*
-rwxr-xr-x 1 zhaozhou admin 13M 1 11 08:28 /usr/local/bin/docker
-rwxr-xr-x 1 zhaozhou admin 5.1M 1 11 13:49 /usr/local/bin/docker-compose
-rwxr-xr-x 1 zhaozhou admin 28M 1 11 13:49 /usr/local/bin/docker-machine
目前,还在快速启动的终端操作,但是如果想换成iTerm
,打开iTerm,发现连不上Docker daemon。
$ docker ps
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
继续运行命令
$ docker-machine env
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/zhaozhou/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval $(docker-machine env)
可以看到提示我们通过 eval $(docker-machine env)
配置连接即可。
至此,在mac安装docker安装完毕。
二、docker在mac上运行机制
我们看到,安装DockerToolbox后,会自动安装以下组件:
- docker-machine:管理 docker 主机,支持在 virtualbox上直接创建一个安装了 docker 的主机。我们主要使用这个命令管理在 virtualbox 上的机器。
- docker-compose:主要用来做容器编排。
- docker-client:运行在 mac 上其实只是 docker 客户端,通过客户端操作virtualbox上的docker daemon。
- kitematic:图形化的容器管理界面,目前还是 beta 版本。
- virtualbox:开源虚拟机软件
从上面的组件我们可以看到。其实docker还是运行在虚拟机上,mac上只是通过客户端与daemon连接。
这是官方给出的图,指出了各组件功能和安装Docker for mac
和Docker Toolbox
的区别(本文没有涉及Docker for mac
的安装)和各组件扮演的角色。
四、多个docker host
既然docker主机只是跑在 virtualbox上的一个虚拟机,我们就可以创建多个docekr主机。需要用前面提到的docker-machine
管理。
常用命令:
docker-machine ls
docker-machine env
docker-machine stop box
docker-machine ssh vm2
docker-machine create -d virtualbox vm2 #创建vm2
docker-machine rm vm2
客户端切换docker 主机可以通过下面命令即可
eval $(docker-machine env name)
三、卸载
卸载Docker Toolbox安装的所有组件和数据。
3.1 删除machine:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
dev * virtualbox Running tcp://192.168.99.100:2376
my-docker-machine virtualbox Stopped
default virtualbox Stopped
docker-machine rm my-docker-machine
3.2 卸载组件
卸载Quickstart Terminal
和Kitematic
等
$ rm /usr/local/bin/docker
$ rm /usr/local/bin/docker-compose
$ rm /usr/local/bin/docker-machine
如果要删除一些配置数据,还得删除一个文件夹~/.docker/
最后把virtualbox
也卸载了。