Docker安装之MAC

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 macDocker 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也卸载了。

CONTENTS