docker学习(2) mac中docker-machine使用vmware fusion以及配置国内镜像加速
一、前言
先回顾下上一节创建docker-machine的过程,默认情况下docker toolbox中的docker-machine使用virtual box创建虚拟机,KI首次启动时创建虚拟机的过程,大致相当于下面这条命令:
docker-machine create --driver virtualbox default
输出如下:
Running pre-create checks... Creating machine... (default) Copying /Users/yjmyzz/.docker/machine/cache/boot2docker.iso to /Users/yjmyzz/.docker/machine/machines/default2/boot2docker.iso... (default) Creating VirtualBox VM... (default) Creating SSH key... (default) Starting the VM... (default) Waiting for an IP... Waiting for machine to be running, this may take a few minutes... Machine is running, waiting for SSH to be available... Detecting operating system of created instance... Detecting the provisioner... Provisioning with boot2docker... Copying certs to the local machine directory... Copying certs to the remote machine... Setting Docker configuration on the remote daemon... Checking connection to Docker... Docker is up and running! To see how to connect Docker to this machine, run: docker-machine env default
其大致过程为从网上下载boot2docker.iso这个文件,然后利用它创建VirtualBox VM,然后生成SSH key(方便免密码登录到虚拟机)、分配IP之类,创建完以后,可以用:
docker-machine env default
查看虚拟机default的状态,如果要删除该虚拟机,直接
rm -rf ~/.docker/machine/machines/default
现在才开始本文的正题:
二、使用vmware做为docker machine
对于已经在mac上安装了vmwarefusion的同学来讲,为了使用docker强制安装一个virtualbox有点多余,其实docker支持vmwarefusion,只要把driver改一下就行了,命令如下:
docker-machine create --driver vmwarefusion default
创建完成后,用docker-machine ls列出所有虚拟机
可以看到类型确实为vmwarefusion,然后可以
docker-machine ssh default
连接到虚拟机的终端下,顺便ping下外网地址,检查下虚拟机里是否能上网(这个很重要,因为后面下载镜像需要联网)
如果有条件翻*^墙的同学,可以运行
docker pull kitematic/hello-world-nginx
直接从docker hub拉一个只有几M的镜像文件试试
三、设置国内镜像加速pull
docker hub官网太慢了,还好国内有一家公司daocloud提供了加速服务,设置步骤:
3.1 先到daocloud.io网站注册一个账号
过程略,注册成功后,进入控制台
3.2 点击控制台上的加速器
拉到中间部分,有一个『主机监控程序』的文字链接,见下图:
然后选择主机类型,我用的是mac,所以选择mac主机:
如果已经安装好了docker toolbox最新版,直接点击【安装好了】
然后会出现二条命令,复制粘贴执行即可:
注:如果按它的提示,最后出现latest: Pulling from daocloud/daomonit not found之类的错误,可以尝试
docker logout daocloud.io
然后重试,安装成功后,执行
dao pull ubuntu
就可以感受下速度了
如果好奇dao这个命令是什么鬼?可以
which dao
查找下位置,正常情况下应该在/usr/local/bin/dao下,可以cat看下该文件的内容:
#!/bin/sh # DaoTools made by DaoCloud # Update command_exists() { command -v "$@" > /dev/null 2>&1 } lsb_dist='' if command_exists lsb_release; then lsb_dist="$(lsb_release -si)" fi if [ -z "$lsb_dist" ] && [ -r /etc/os-release ]; then lsb_dist="$(. /etc/os-release && echo "$ID")" fi lsb_dist="$(echo $lsb_dist | cut -d " " -f1)" lsb_dist="$(echo "$lsb_dist" | tr '[:upper:]' '[:lower:]')" sh_c='sh -c' if [ "$user" != 'root' ]; then if command_exists sudo; then sh_c='sudo -E sh -c' elif command_exists su; then sh_c='su -c' else echo >&2 'Error: dao needs the ability to run commands as root.' echo >&2 'We are unable to find either "sudo" or "su" available to make this happen.' fi fi update_daotools() { ## Update Bash from https://get.daocloud.io/daotools ## Update Docker Image $sh_c "docker inspect daocloud.io/daocloud/daocloud-toolset" > /dev/null 2>&1 if [ $? -eq 0 ]; then $sh_c "docker pull daocloud.io/daocloud/daocloud-toolset" fi $sh_c "curl --retry 20 --retry-delay 5 -L -o /tmp/daotools https://get.daocloud.io/daotools" if grep -q "DaoCloud" /tmp/daotools then $sh_c "chmod +x /tmp/daotools" if [ "$lsb_dist" = "coreos" ] then $sh_c "mv -f /tmp/daotools /opt/bin/dao" else $sh_c "mv -f /tmp/daotools /usr/local/bin/dao" fi fi # if [ "$(uname)" == "Darwin" ] # then # chmod 777 /usr/local/bin/dao # fi } # RUN $sh_c "docker inspect daocloud.io/daocloud/daocloud-toolset" > /dev/null 2>&1 if [ $? -eq 1 ]; then echo "Dao from DaoCloud" echo "Initializing, Please wait a minute" $sh_c "docker pull daocloud.io/daocloud/daocloud-toolset" if [ $? -eq 0 ]; then echo "Inital Success" echo fi fi # UPDATE update_daotools > /dev/null 2>&1 & # check if this is a tty mode tty > /dev/null 2>&1 if [ $? -eq 0 ] then istty="-it" else istty="" fi if [ "$(uname)" = "Darwin" ] then $sh_c "docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker:ro \ -v /mnt/sda1/daocloud:/etc/daocloud -v /tmp/daocloud:/tmp/daocloud $istty daocloud.io/daocloud/daocloud-toolset $*" elif [ "$lsb_dist" = "boot2docker" ] then $sh_c "docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker:ro \ -v /mnt/sda1/daocloud:/etc/daocloud -v /tmp/daocloud:/tmp/daocloud $istty daocloud.io/daocloud/daocloud-toolset $*" else $sh_c "docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker:ro \ -v /etc/daocloud:/etc/daocloud -v /tmp/daocloud:/tmp/daocloud --privileged $istty daocloud.io/daocloud/daocloud-toolset $*"
有兴趣的可以仔细研究研究
参考文章:
http://elasticskies.com/docker-machine-on-osx-with-vmware-fusion/
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
致新手——OpenStack云倒底是什么?
OpenStack是什么?谁适合使用OpenStack? OpenStack是一套开源云操作系统,由Python语言编写而成且负责通过命令行界面(简称CLI)或者基于Web的仪表板实现对计算、存储 以及网络资源池的管理工作。其在设计上可运行于商用硬件底层,且有时候会被作为基础设施即服务(简称IaaS)实现方案使用。 OpenStack可运行在各类常见Linux平台之上,具体包括RHEL、SUSE以及Ubuntu等等。 OpenStack是一套基础设施(大家也可以将其简单理解为‘云’)。它能够创建出一套环境,从而提供按需增加或者降低的资源分配机制,而且实际 资源不必来源于单一位置。 大数据、Web服务以及网络功能虚拟化(简称NFV)等面向服务供应商的功能都是OpenStack发挥作用的良好舞台。 OpenStack包含哪些关键性服务与组件?它们的具体作用又是什么? OpenStack采用一年两次的发布周期,而且各发布版本各自拥有不同名称而非简单的数字序列,因此其首个版本名为Austin,目前的版本为 Mitaka,其间还曾出现过Liberty与Kilo两个版本。自Kilo版本以来,Ope...
- 下一篇
前端也应该了解点 docker 知识:docker 架构(上)
上一篇文章前端也应该了解点 docker 知识:docker 的理念与场景介绍了 docker 的一些理念,以及在前端方面可能的应用场景,本篇我们梳理一下 docker 的架构。 话说,我们团队的小明同学看了上篇文章之后,很是激动,迫不及待的想尝试下 docker ,然后按照网上一些教程跑出来了一个 “Hello world” ,激动的差点把鼠标给扔了。如果小明的故事到这里,那就不是我们团队的小明了,他是位爱动脑筋,对细节刨根问底的同学,他没有沉浸在跑出来 “Hello world”, 而是想了解下什么 image,container,registry,machine 等都是啥玩意。 他于是找到了我,问了我些上面的问题。然后我把我和小明的聊天整理了一下,然后以期帮助更多像小明这样的同学。 Q1:我的笔记本是 mac,为什么我安装的时候还要装 virtualbox ? 首先我们要知道,docker 提出的容器技术并不是 docker 首创,在之前就有了 LXC 等基于 Linux 内核特性( cgroups 和 namespace )的容器技术,而 docker 可以看做是加强版的 LX...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Hadoop3单机部署,实现最简伪集群
- Docker安装Oracle12C,快速搭建Oracle学习环境