1.1.0.1、在 Max OS 上安装

Mac OS X

注意这个Docker的发行版本不建议使用Boot2Docker命令行,建议使用Docker Machine。使用Docker Toolbox安装Docker Machine跟安装其他Docker工具一样。

你可以使用Docker Toolbox安装Docker。Docker Toolbox包含如下的Docker 工具:

  • Docker Machine 为了运行 docker-machine 可执行包
  • Docker Engine 为了运行 docker 可执行包
  • Docker Compose 为了运行 docker-compose 可执行包
  • Kitematic,Docker GUI
  • 一个预设的Docker命令行环境
  • Oracle VM VirtualBox

因为Docker Daemon使用了Linux一个内核特性,原生的OS X系统不能直接运行Docker。折中的解决方案,你必须使用 docker-machine 去创建并连接到一个虚拟机上(VM)。这个VM会为你的Mac提供Docker运行环境。

要求

你的Mac必须安装OS X 10.8(及以上)"美洲狮"的操作系统,并安装好Docker Toolbox。

在安装前,先了解一些主要的概念

Docker 在Linux上安装过程里,你的物理机器既是本地主机也是Docker的宿主机。在网络里,本地主机的意思是你的计算机。Docker的宿主机是托管这容器运行的计算机。

在一个标准的Linux安装中,Docker客户端、Docker Daemon和一些运行中的容器会直接寄托在你的本地主机上。这意味着你可以使用标准的本地地址和端口去访问容器,例如, localhost:8000 或 0.0.0.0:8376

Linux Architecture Diagram

在一个OS X 安装里,docker daemon(守护进程)会运行在一个被称为default 的Linux虚拟机的内部。 default 是一个轻量的Linux虚拟机,它为Mac OS X运行Docker Daemon做了模拟。VM(虚拟机)完全运行在内存里,它非常小,大约只有24MB,只需约5S就可以启动。

OSX Architecture Diagram

在OS X内,Docker 宿主机的地址跟Linux虚拟一样。当你使用 docker-machine 启动Linux虚拟机是,它会分配一个IP地址。当你启动一个容器是,容器上的端口会映射到虚拟机的端口上。

安装

如果你已经运行了VirtualBox,在安装前,你必须停止它。

  1. 打开 Docker Toolbox 主页。

  2. 点击安装程序连接去下载。

  3. 双击安装包或通过右键弹出的菜单选择 "打开(Openning)" 启动安装。

    安装程序启动后,会弹出 “Install Docker Toolbox” 对话框。

  4. 点击 “Continue” 安装 toolbox。

    安装程序会给你提供选项来定制标准的安装。

    默认,标准的 Docker Toolboxthe 会安装如下工具:

    • 将所有的Docker 工具二进制执行文件安装到 /usr/local/bin 文件里
    • 将上述的执行文件的权限向所有用户开发
    • 安装 VirtualBox;或更新已经存在的安装

    通过  “Customize(定制)” or “Change Install Location(改变安装路径)” 来改变默认设置。

  5. 点击 “Install” 执行标准安装。

    系统会提示你输入你的密码。

  6. 输入你的密码继续安装。

    安装完成后,安装程序会给提供一些开始操作的信息。

  7. 点击 “Close” 退出安装。

运行一个Docker容器

为了运行一个Docker容器,你需要如下步骤:

  • 创建一个新的(或启动一个已经存在的) Docker 虚拟机
  • 将你的环境切换到新的虚拟机
  • 使用 docker 客户端创建、加载和管理容器

当你创建一个机器时,如果你喜欢,你可以随时重用它。正如所有的VirtualBox虚拟机一样。

这里有两种方式可以使用你已经安装的工具,从Docker 快速终端或从你的shell

使用 Docker 快速启动终端

  1. 打开 “Applications(应用)” 文件夹或“Launchpad”(启动面板)。

  2. 找到 Docker 快速启动终端(Quickstart Terminal)并双击启动它。

    应用执行流程:

    • 打开一个终端窗口
    • 创建一个 default 虚拟机,如果它不存在,并启动虚拟机
    • 将终端的环境指向这个虚拟机

    当启动完成后,快速启动终端会输出一些报告:

    现在,你可以运行 docker 命令了。

  3. 通过运行hello-world 容器核实上述设置是否成功。

    $ docker run hello-world
    Unable to find image 'hello-world:latest' locally
    511136ea3c5a: Pull complete
    31cbccb51277: Pull complete
    e45a5af57b00: Pull complete
    hello-world:latest: The image you are pulling has been verified.
    Important: image verification is a tech preview feature and should not be
    relied on to provide security.
    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.
       (Assuming it was not already locally available.)
    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
    
    
    For more examples and ideas, visit:
    http://docs.docker.com/userguide/
    

一个更加通用的交互方式是使用你常用的shell 命令行和Docker 工具进行通讯。

从你的shell

在这个小节里,假设你已经运行了一个Bash shell。你可能运行了一个一样的shell,例如,C shell。但是它们的命令是相同的。

  1. 创建一个新的Docker 虚拟机。

    $ docker-machine create --driver virtualbox default
    Creating VirtualBox VM...
    Creating SSH key...
    Starting VirtualBox VM...
    Starting VM...
    To see how to connect Docker to this machine, run: docker-machine env default
    

    这里在VirtualBox里,创建了一个新的 default 虚拟机。

    这条命令也创建了一个机器配置文件,在~/.docker/machine/machines/default 文件夹里。你只需运行一次 create 命令。之后,你可以在命令行里,使用 docker-machine 去启动、停止、查询和其他管理虚拟机。

  2. 列出你的可用机器。

    $ docker-machine ls
    NAME                ACTIVE   DRIVER       STATE     URL                         SWARM
    default             *        virtualbox   Running   tcp://192.168.99.101:2376
    

    如果你以前安装了被弃用的Boot2Docker 应用或运行Docker 快速启动终端,你可能还有一个 dev 的虚拟机。当你创建了default 虚拟机,docker-machine 命令会提供指令去学习如何连接虚拟机。

  3. 获取你的新虚拟机的环境命令。

    $ docker-machine env default
    export DOCKER_TLS_VERIFY="1"
    export DOCKER_HOST="tcp://192.168.99.101:2376"
    export DOCKER_CERT_PATH="/Users/mary/.docker/machine/machines/default"
    export DOCKER_MACHINE_NAME="default"
    # Run this command to configure your shell:
    # eval "$(docker-machine env default)"
    
  4. 连接你的shell到 default 机器。

    $ eval "$(docker-machine env default)"
    
  5. 运行 hello-world 容器去校验你的设置。

    $ docker run hello-world
    

了解 Toolbox 安装

Toolbox 安装了Docker 引擎二进制包,Docker二进制包存放在你的系统上。当你使用Docker 快速启动终端或手动创建一个 default 虚拟机时,Docker Machine 会更新 ~/.docker/machine/machines/default 文件夹到你的系统。这个文件夹包含虚拟机的配置文件。

你可以创建多个虚拟机,使用Docker Machine 在你的系统上。因此,你可能得到多个虚拟机文件夹,如果你拥有多个虚拟机。移除一个虚拟机,可以使用 docker-machine rm <machine-name> 命令。

从Boot2Docker迁移

如果你之前使用 Boot2Docker,你拥有一个Docker boot2docker-vm 虚拟机,在你的本地系统上。如果你想让Docker Machine 去管理旧的虚拟机,你可以迁移它。

  1. 打开一个终端或Docker CLI(命令行接口),在你的系统上。

  2. 输入如下命令:

    $ docker-machine create -d virtualbox --virtualbox-import-boot2docker-vm boot2docker-vm docker-vm
    
  3. 使用 docker-machine 命令发起虚拟的迁移通信。

docker-machine 子命令与 boot2docker 有稍许的差异。如下列表中列出了 docker-machine 等同的子命令:

boot2docker docker-machine docker-machine描述
init create 创建一个新的docker主机
up start 启动一个停止的机器
ssh ssh 运行一个命令或互动ssh回话,在机器上。
save - 没有对等指令
down stop 停止一个运行中的机器
poweroff stop 停止一个运行中的机器
reset restart 重启一个运行中的机器
config inspect 打印机器的配置详情
status ls 列出所有机器和他们的状态
info inspect 显示一个机器的详情
ip ip 显示机器的 ip 地址
shellinit env 显示你跟机器交互配置的shell指令
delete rm 删除一个机器
download - 没有对等指令
upgrade upgrade 更新一个机器的Docker客户端到一个最新稳定版本

在 Mac OS X 上的一个 Docker 例子

通过这一小节,在一个虚拟机上,尝试一些实战性的容器任务。此时此刻,你应该拥有一个正在运行中的虚拟机并已经通过你的shell与它连接成功。为了校验上述的条件,执行下面的命令:

$ docker-machine ls
NAME                ACTIVE   DRIVER       STATE     URL                         SWARM
default             *        virtualbox   Running   tcp://192.168.99.100:2376

ACTIVE 机器,在这里是 default ,你的一个环境将指向它。

访问容器的端口

  1. 启动一个 NGINX 容器,在你的Docker主机上。

    $ docker run -d -P --name web nginx
    

    通常,docker run 命令会创建一个容器,运行它,之后退出。-d 标记让容器在后台一直运行,在 docker run 命令执行完后。-P 标记发布容器需要暴露的端口到你的本地主机;这样,你就可以从你的Mac访问到它们。

  2. 使用 docker ps 命令可以查看运行中的容器:

    CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                                           NAMES
    5fb65ff765e9        nginx:latest        "nginx -g 'daemon of   3 minutes ago       Up 3 minutes        0.0.0.0:49156->443/tcp, 0.0.0.0:49157->80/tcp   web
    

    此刻,你可以看到 nginx 正以守护模式运行中。

  3. 观察容器的端口。

    $ docker port web
    443/tcp -> 0.0.0.0:49156
    80/tcp -> 0.0.0.0:49157
    

    这里告诉你,web 容器的端口 80 被映射到你的Docker主机上的 49157 端口上。

  4. 输入 http://localhost:49157 地址(localhost 和 0.0.0.0 等同) 在你的浏览器内:

    它并没有正常的运行。这是因为,并没有Docker Daemon在你的 DOCKER_HOST 地址上工作。但是,你可以把地址替换成你的Docker虚拟机地址,重试一下。

  5. 获取 default 虚拟记得地址。

    $ docker-machine ip default
    192.168.59.103
    
  6. 在你的浏览器内,输入 http://192.168.59.103:49157 地址:

    成功!

  7. 想停止并删除你正在运行中的 nginx 容器,按如下操作即可:

    $ docker stop web
    $ docker rm web
    

挂载一个数据卷到容器上

当你创启一个容器时,它会通过虚拟机系统的分享了你的/Users/username 目录。你可以使用这个分享指向的挂载目录到你的容器上。下一个练习会向你演示如何做到这点。

  1. 更改你的用户 $HOME 目录。

    $ cd $HOME
    
  2. 创建一个新的 site 目录。

    $ mkdir site
    
  3. 进入新建的 site 目录里。

    $ cd site
    
  4. 新建一个 index.html 文件。

    $ echo "my new site" > index.html
    
  5. 启动一个新的 nginx 容器并使用 site替换它的 html 文件。

    $ docker run -d -P -v $HOME/site:/usr/share/nginx/html \
      --name mysite nginx
    
  6. 获取 mysite 容器的端口。

    $ docker port mysite
    80/tcp -> 0.0.0.0:49166
    443/tcp -> 0.0.0.0:49165
    
  7. 在浏览器中打开上面的地址:

  8. 尝试在你的 $HOME/site 实时地添加一个新的页面。

    $ echo "This is cool" > cool.html
    
  9. 在浏览器里打开新页面。

  10. 停止并删除你运行中的 mysite 容器。

    $ docker stop mysite
    $ docker rm mysite
    

升级 Docker Toolbox

Docker Toolbox安装包下载,并重新安装即可。具体可以参考上述的诸多步骤。

卸载 Docker Toolbox

卸载,可以遵循如下步骤:

  1. 列出你的机器。

    $ 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
    
  2. 移除每个机器。

    $ docker-machine rm dev
    Successfully removed dev
    

    移除一个机器,会从VirtualBox删除它们并从 ~/.docker/machine/machines 删除相关的目录。

  3. 从你的“ Applications”文件夹中移除Docker快速启动终端和Kitematic。

  4. 从 /usr/local/bin 文件夹中移除 docker 、 docker-compose 和 docker-machine 命令。

    $ rm /usr/local/bin/docker
    
  5. 从你的系统中删除~/.docker 文件夹。

知识拓展

使用 docker-machine help 列出Docker Machine的完整的命令行帮助文档。获取更多关于使用SSH或SCP访问一个虚拟机的信息,请移步到 Docker Machine文档

你可以通过 Docker用户指南继续学习。如果你Kitematic GUI的使用感兴趣,请移步到Kitematic用户指南


 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章