docker的安装与使用(Mac环境下)

来源:互联网 发布:纳什职业生涯场均数据 编辑:程序博客网 时间:2024/06/05 19:17

    docker是一种虚拟技术。团队间的合作,如果不想被运行环境 or 各种依赖烦死的话,最明智的做法就是把依赖环境都装在docker里面,做好可移植,开发效率biu~biu~的。本篇将详细说明一下docker的各个方面,为以后做好整理。

一、为什么要用Docker?

说白了就是这几个原因:

  • 为了快。 VMWare吃资源,每建立一个虚拟机就要建立一个os。给别人传的时候大小能达到G级的,太重。Docker各个镜像是共享资源的,资源利用率很高,containers是基于一个os上的。给别人传的时候是M级的,轻量。(官网有个对比图,这里就不放了,读者可自行查看)
  • 为了复用。 有些项目,基本的依赖库都差不多,只是配置有变化(比如端口号不一样),这时候就只用把有变化的镜像打包出来,传给其他小伙伴,就可以复用了,效率很高
  • 不再为环境烦恼。 在dokcer中配置好环境之后,可移植到别的环境中,直接就可以跑起来你的代码,不用自己再搭环境了。也解决了环境版本不一致的问题。

还有其他原因,这里不详述了。

二、安装前的准备

    由于我们伟大的墙,我在安装过程中遇到了许多无(ling)力(ren)吐(fa)槽(zhi)的问题。版本迭代地很快,除了最新的版本,其他的都是历史,所以我们有必要了解一下都有什么改变了。

2.1 Mac系统要运行docker,必须要在10.8以上

    查看你的版本号,记得及时更新~

2.2 关于 boot2docker

    这东西要把我气死了,就是它一直卡我,卡了几天,一定要把这个说明白了!(敲黑板)

  • 关于boot2docker init 这个操作:
          1.一般网上博客的套路就是叫你先装boot2docker:brew install boot2docker
          2.然后再装docker:brew install docker
          3.再配置环境变量:export DOCKER_HOST=tcp://127.0.0.1:4243
          4.所有的都没毛病,嗯,就最后一步:boot2docker init卡死我(手动微笑)

  • 关于boot2docker init报错1
          由于伟大的墙,所以一直给你卡在Downloading image那块,如果要好的话,估计得等到一千年以后了


    这里写图片描述

          这里需要全局翻墙,由于最近风口浪尖&我懒不想搞,所以就尝试了别的方法。祝愿全局翻墙的宝宝成功哟~下面的成功截图,是我尝试的解决方法2&3之后,突然自己抽风给装好了,在这之前我下面的三种解决方法都不管用,如果你够欧,可能方法一就好了也不一定哈哈,毕竟这是个看脸的世界~

    这里写图片描述

          解决1:换成daocloud镜像试试(这里我没用这个方法,读者可自行百度)
          解决2: 来来来,boot2docker镜像已就位!链接:http://pan.baidu.com/s/1o8Se7pC 密码:651v。当然你可以翻墙去github上面下载(别问我github为什么还要翻墙,你不翻墙下载试试,速度绝对“好“到让你哭)。下载后,放在~/.boot2docker这个目录下,再执行boot2docker init
          解决3: 把前面第三步配置的环境变量删掉!这个老给我报错,我删掉之后就成功了,我也不知道什么原因= =。

  • 关于boot2docker init报错2
          如果你已经保证~/.boot2docker目录下有boot2docker.iso这个文件,执行boot2docker init,也许会报错:

error in run: Failed to initialize machine "boot2docker-vm": exit status 1

或者

error in run: Failed to initialize machine "boot2docker-vm": exit status 126

       解决方法:请确定你的boot2docker.iso镜像文件下载完整。报这个错误就是镜像文件出问题了,不管在哪里,再重新下一个。

2.3 使用boot2docker启动docker

      鉴于前面说了这么多,我还是把boot2docker启动docker的全过程走完:
务必保证收到成功信息后,执行eval "$(boot2docker shellinit)"
或者配置环境变量(vim ~/.bash_profile):

    export DOCKER_HOST=tcp://192.168.59.103:2376    export DOCKER_CERT_PATH=/Users/skyamz/.boot2docker/certs/boot2docker-vm    export DOCKER_TLS_VERIFY=1

      这三个环境变量是我执行boot2docker up时候的提示信息。配置好后,执行


boot2docker up


这里写图片描述

执行

                                    boot2docker ssh


这里写图片描述

       可以看到用户名都变成了docker。现在就是在docker的环境里面,我们可以执行关于docker的任何操作了~

2.4 总结

       基于上面我在boot2docker处碰的壁,我决定不用那玩意启动docker了。今年是2017年,它早已经被docker ToolBox取代了(手动微笑)。这是我好不容易才知道的,因为在网上看博客,出来一大堆都是用boot2docker的,我装上了之后各种错误,也没人提= =所以下面我会直接用dockertoolbox来启动docker~

三、在Mac上安装docker

3.1 docker ToolBox镜像下载

       http://mirrors.aliyun.com/docker-toolbox/mac/docker-toolbox/ 官网的速度太垃圾了,这个里面下载的速度可以。装了docker ToolBox,就等于装了:

  • Docker Client docker binary —- docker 命令
  • Docker Machine docker-machine binary —- docker-machine 命令
  • Docker Compose docker-compose binary
  • Kitematic - Desktop GUI for Docker
  • Docker Quickstart Terminal app

      我这个Mac总是不争气,运行Docker Quickstart Terminal app的时候会发生闪退,然后给我自动调item2,我就老起不起来docker。最后我点开了Kitematic,和Docker Quickstart Terminal app起的效果一样,都是建立一个default虚拟机。docker是基于linux的,所以mac和window用户需要建立一个虚拟的环境来跑docker,所以要建立一个default虚拟机。

3.2 安装VirtualBox

      我是官网上下载安装包手动安装的,安装VirtualBox是为了看我现在有哪些虚拟机,可以对这些进行一个设置。下面的图片可以看到我现在有两个虚拟机default和boot2docker.vm。在docker中,一个虚拟机里面装一个application。


这里写图片描述

3.3 安装docker

       官网上下载docker社区版(专业版没有mac版的)。下下来之后就进行安装。知道看到你的右上角有这个图标,就证明docker起起来了:


这里写图片描述

3.3 创建一个虚拟的环境,叫做bigdata。双核cpu,2G内存。这个过程需要花费时间,是时候先去喝杯咖啡了☕️~

docker-machine create --driver vituralbox --virtualbox-cpu-count 2 --virtualbox-memory 2048 bigdata

可能出现的错误:
3.3.1 注意windows用户如果这里报错:

\Driver "virtualbox" not found. Do you have the plugin binary accessible in your PATH?

    可以试试给docker-machine后面加.exe(我没尝试过,这方法是看别人的博客上面写的)

docker-machine.exe create --driver vituralbox --virtualbox-cpu-count 2 --virtualbox-memory 2048 bigdata

3.3.2 一直卡在下载中


这里写图片描述

    这里要全局翻墙下载,比较麻烦,所以我选择了手动下载boot2docker.iso并放入指定的/Users/skyamz/.docker/machine/cache/目录中。这个目录是上面图片里面的那个目录。注意这里要下的boot2docker.iso的版本号是v17.06.2-ce,如果版本号不对的话,可能识别不了

3.3.3 创建不了虚拟机
    报如下错误:


这里写图片描述

    断开网络然后再创建。如果卡在莫名其妙的一些地方,比如coping时,就control+c去中断,然后再重新创建。
这是成功的信息:

这里写图片描述

3.4 查看创建好的虚拟机

    如果创建了虚拟机,要执行关于虚拟机的一系列操作,则要用docker-machine命令。

docker-machine ls #查看当前的虚拟机docker-machine rm bigdata #删除bigdata这个虚拟机docker-machine env bigdata1 #初始化bigdata1这个虚拟机eval "$(docker-machine env bigdata1)" #mac设置环境变量docker-machine env --shell cmd bigdata1 #windows设置环境变量

四、跑一个hello world

      前面第三小节里面,是create了自己的一个容器,但是因为里面没有代码,跑不起来,也没法看到我们的整个流程是不是跑通了,所以我们现在运行一个hello world的容器,看看我们的整个流程。

                                       docker run hello-world


这里写图片描述

五、总结

      本篇是总结我安装过程中遇到的坑,能跑通一个镜像,就证明整个环境没有什么问题了,但是光会安装还是远远不够的,还可以有dockerfile等更加详细的关于docker的一些东西,我会继续深入~

                                                               memoryjdch编辑于2017.9.19
原创粉丝点击