UDN-企业互联网技术人气社区

板块导航

浏览  : 1509
回复  : 0

[Docker资讯] web前端开发环境:在 mac 系统配置 Docker 开发环境

[复制链接]
小辫儿的头像 楼主
发表于 2016-6-12 15:36:13 | 显示全部楼层 |阅读模式
  在这篇文章中,我们将介绍如何在 mac 平台下使用 Docker toolbox 中提供的工具来运行第一个 Docker 容器。

  在 Mac 上安装 Docker 环境

  Docker 提供了 toolbox 方便 windows 和 mac 下运行容器,主要的功能组件有:

  • Docker-machine :管理 Docker 主机,支持在 virtualbox、digitalocean、azure、rackspace 等上面直接创建一个安装了 Docker 的主机。 我们主要使用这个命令在 virtualbox 上管理机器。
  • Docker-compose :管理和运行多个容器应用的工具
  • Docker-client:运行在 mac 上的 Docker 客户端,所有的操作都是通过客户端来运行的,客户端和 Docker daemon 打交道来完成实际的工作
  • kitematic:图形化的容器管理界面,目前还是 beta 版本(这篇文章不会介绍)。

  这些组件的关是这样的:通过 Docker-machine 来生成和管理 Docker host(实际运行 Docker daemon和跑容器的机器),然后通过 Docker-client 和不同的 host 交互。示意图如下:
2.png

  toolbox 在 mac 下的安装请参考 官方文档 ,因为提供的图形化安装比较简单,这里就不赘述。

  NOTE:这篇文章中,所有 Docker host 都运行在 virtualbox 上,请保证你已经安装了 virtualbox 最新版!

  创建第一个容器

  如果你运行了 kitematic,那么它已经为你创建了一个 host:
  1. ➜  ~ Docker-machine ls
  2. NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   Docker    ERRORS
  3. default   -        virtualbox   Running   tcp://192.168.99.100:2376           v1.11.1
复制代码

  如果没有的话,我们就自己创建第一个机器:
  1. ➜  ~ Docker-machine create -d virtualbox box
  2. Running pre-create checks...
  3. Creating machine...
  4. (box) Copying /Users/cizixs/.Docker/machine/cache/boot2Docker.iso to /Users/cizixs/.Docker/machine/machines/box/boot2Docker.iso...
  5. (box) Creating VirtualBox VM...
  6. (box) Creating SSH key...
  7. (box) Starting the VM...
  8. (box) Check network to re-create if needed...
  9. (box) Waiting for an IP...
  10. Waiting for machine to be running, this may take a few minutes...
  11. Detecting operating system of created instance...
  12. Waiting for SSH to be available...
  13. Detecting the provisioner...
  14. Provisioning with boot2Docker...
  15. Copying certs to the local machine directory...
  16. Copying certs to the remote machine...
  17. Setting Docker configuration on the remote daemon...
  18. Checking connection to Docker...
  19. Docker is up and running!
  20. To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: Docker-machine env box
复制代码

  上面的命令就是通过 virtualbox 安装 boot2Docker.iso 这个镜像,最后一个参数就是机器的名称 box 。输出的最后一行,有一个提示命令,我们来运行一下:
  1. ➜  ~ Docker-machine env box
  2. export Docker_TLS_VERIFY="1"
  3. export Docker_HOST="tcp://192.168.99.101:2376"
  4. export Docker_CERT_PATH="/Users/cizixs/.Docker/machine/machines/box"
  5. export Docker_MACHINE_NAME="box"
  6. # Run this command to configure your shell:
  7. # eval $(Docker-machine env box)
复制代码

  可以看到输出的是一些 Docker 有关的环境变量。要想使用这个 Docker daemon 来管理容器的话,把这些变量 export 到终端:
  1. eval $(Docker-machine env box)
  2. ➜  ~ env | grep -i Docker
  3. Docker_TLS_VERIFY=1
  4. Docker_HOST=tcp://192.168.99.101:2376
  5. Docker_CERT_PATH=/Users/cizixs/.Docker/machine/machines/box
  6. Docker_MACHINE_NAME=box
复制代码

  然后我们运行 Docker 命令的时候,Docker client 就会从环境变量中读取 Docker host 的连接信息,和它进行通信:
  1. ➜  ~ Docker images
  2. REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
  3. ➜  ~ Docker ps
  4. CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
  5. ➜  ~ Docker version
  6. Client:
  7. Version:      1.11.1
  8. API version:  1.23
  9. Go version:   go1.5.4
  10. Git commit:   5604cbe
  11. Built:        Tue Apr 26 23:44:17 2016
  12. OS/Arch:      darwin/amd64

  13. Server:
  14. Version:      1.11.1
  15. API version:  1.23
  16. Go version:   go1.5.4
  17. Git commit:   5604cbe
  18. Built:        Wed Apr 27 00:34:20 2016
  19. OS/Arch:      linux/amd64
复制代码

  这样呢,我们就能运行自己的第一个容器:
  1. ➜  ~ Docker run -d busybox top
  2. Unable to find image 'busybox:latest' locally
  3. latest: Pulling from library/busybox

  4. 385e281300cc: Pull complete
  5. a3ed95caeb02: Pull complete
  6. Digest: sha256:4a887a2326ec9e0fa90cce7b4764b0e627b5d6afcb81a3f73c85dc29cea00048
  7. Status: Downloaded newer image for busybox:latest
  8. 656f4ec68b96a12f0a1fd92ef9262a6ef95f80cc3a5ea10749a40c1323b33926
复制代码

  嗯,熟悉的下载镜像和运行容器的输出!

  NOTE: 当我们有多个 Docker host 的时候,每次都要通过 eval $(Docker-machine env name) 来切换。

  Docker 网络模式

  Docker-machine 网络

  可以使用 Docker-machine config 命令查看 Docker 主机的配置:
  1. ➜  ~ dm config box
  2. --tlsverify
  3. --tlscacert="/Users/cizixs/.Docker/machine/certs/ca.pem"
  4. --tlscert="/Users/cizixs/.Docker/machine/certs/cert.pem"
  5. --tlskey="/Users/cizixs/.Docker/machine/certs/key.pem"
  6. -H=tcp://192.168.99.101:2376
复制代码

  我们看最后一行,前面的 ip 就是主机的地址,也就是说我们的主机是监听在它所在地址的 2376 端口的。通过 Docker-machine ssh box 进入到主机,可以查看它的网络信息:
  1. Docker@box:~$ ip addr
  2. 3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  3.     link/ether 08:00:27:a1:7a:a4 brd ff:ff:ff:ff:ff:ff
  4.     inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
  5.        valid_lft forever preferred_lft forever
  6.     inet6 fe80::a00:27ff:fea1:7aa4/64 scope link
  7.        valid_lft forever preferred_lft forever
  8. 4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  9.     link/ether 08:00:27:a5:3e:71 brd ff:ff:ff:ff:ff:ff
  10.     inet 192.168.99.101/24 brd 192.168.99.255 scope global eth1
  11.        valid_lft forever preferred_lft forever
  12.     inet6 fe80::a00:27ff:fea5:3e71/64 scope link
  13.        valid_lft forever preferred_lft forever
复制代码

  我们看到 eth1 的地址就是 192.168.99.101 ,而上面的配置就是 Docker daemon 运行的参数:
  1. Docker@box:~$ ps aux | grep Docker | grep daemon
  2. root      2618  0.0  3.8 431372 38948 ?        Sl   02:20   0:02 /usr/local/bin/Docker daemon -D -g /var/lib/Docker -H unix:// -H tcp://0.0.0.0:2376 --label provider=virtualbox --tlsverify --tlscacert=/var/lib/boot2Docker/ca.pem --tlscert=/var/lib/boot2Docker/server.pem --tlskey=/var/lib/boot2Docker/server-key.pem -s aufs
复制代码

  一个需要注意的的问题是:virtualbox 创建出来的虚拟机有两个网卡信息。 eth0 是正常访问主机的网络接口,模式为 NAT ; eth1 是和 Docker 通信的网络接口,网络模式是 Host-only Adapter 。

  到此,我们就搭建了自己的开发环境。

相关帖子

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部