`
sunbin
  • 浏览: 353016 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

mac中docker-machine使用vmware fusion以及配置国内镜像加速

 
阅读更多

一、前言

先回顾下上一节创建docker-machine的过程,默认情况下docker toolbox中的docker-machine使用virtual box创建虚拟机,KI首次启动时创建虚拟机的过程,大致相当于下面这条命令:

1
docker-machine create --driver virtualbox default

输出如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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之类,创建完以后,可以用:

1
docker-machine env default

查看虚拟机default的状态,如果要删除该虚拟机,直接

1
rm -rf ~/.docker/machine/machines/default

现在才开始本文的正题:

 

二、使用vmware做为docker machine

对于已经在mac上安装了vmwarefusion的同学来讲,为了使用docker强制安装一个virtualbox有点多余,其实docker支持vmwarefusion,只要把driver改一下就行了,命令如下:

1
docker-machine create --driver vmwarefusion default

创建完成后,用docker-machine ls列出所有虚拟机

可以看到类型确实为vmwarefusion,然后可以

1
docker-machine ssh default

连接到虚拟机的终端下,顺便ping下外网地址,检查下虚拟机里是否能上网(这个很重要,因为后面下载镜像需要联网)

  

如果有条件翻*^墙的同学,可以运行

1
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之类的错误,可以尝试

1
docker logout daocloud.io

然后重试,安装成功后,执行

1
dao pull ubuntu

就可以感受下速度了

  

如果好奇dao这个命令是什么鬼?可以

1
which dao

查找下位置,正常情况下应该在/usr/local/bin/dao下,可以cat看下该文件的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/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 sudothen
        sh_c='sudo -E sh -c'
    elif command_exists suthen
        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 $*"

有兴趣的可以仔细研究研究

分享到:
评论

相关推荐

    docker-machine-Windows-x86_64.exe

    Docker Machine 是一种可以让您在虚拟主机上安装 Docker 的工具,并可以使用 docker-machine 命令来管理主机。 Docker Machine 也可以集中管理所有的 docker 主机,比如快速的给 100 台服务器安装上 docker。

    docker-machine-driver

    mac上使用的docker基础虚拟化软件 docker machine driver hyerkit,可通过该软件安装linux虚拟机,并在此基础上安装docker

    docker-machine-Linux-x86_64

    docker-machine 服务器上下一值失败 直接拷到服务器上 改名就能用 mv docker-machine-Linux-x86_64 /tmp/docker-machine chmod +x /tmp/docker-machine && sudo cp /tmp/docker-machine /usr/local/bin/docker-...

    docker-machine-Linux_AND_WINDOWS-x86_64

    这个文件使Linux用户能够利用Docker Machine的功能,如自动化安装Docker引擎、配置Docker守护进程的设置、以及通过SSH连接到远程主机等。在Linux环境中,用户通常需要将该二进制文件添加到PATH环境变量中,以便在...

    docker-machine-prompt.bash

    docker-machine

    docker-machine-wrapper.bash

    docker-machine

    Windows系统的docker-machine.exe

    Windows系统下docker-machine安装文件v0.14.0,docker-machine-Windows-x86_64.exe

    docker-machine-Windows64.7z

    Docker Machine是Docker生态系统中的一个重要工具,它允许用户在多种不同的主机环境中轻松地安装和配置Docker守护进程。在Windows 10操作系统上,Docker Machine为开发人员提供了在本地运行Docker容器的能力,无需...

    docker-machine boot2docker-17.09-ce 镜像

    docker-machine boot2docker-17.09-ce 镜像文件 由于通过脚本到github.com拉取镜像较慢,特意将该文件上传. 原拉取该镜像命令为:docker-machine create --driver virtualbox default 使用方法 1.下载好后讲该文件...

    docker-compose安装包

    一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如 Consul...

    【linux】docker-compose1.25.5 & docker-machine0.16.2

    Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。 Docker-Machine 是 Docker 官方提供的一个工具,它可以帮助我们在远程的机器上安装 Docker

    docker-machine.7z

    Docker Machine是Docker生态系统中的一个重要组件,它主要用于管理和配置Docker主机。Docker Machine允许用户在各种不同的环境中轻松创建和管理Docker主机,包括本地机器、云提供商以及虚拟机。在v.0.16.0这个版本中...

    docker-machine-linux v0.16.1 免费下载

    docker 被墙 github docker-machine 下载失败,试试这个离线包。下载积分没法更改?怎么回事?链接: https://pan.baidu.com/s/1pBPcCCG_qTkxEDHTkg-QHw 提取码: pv3c

    使用docker-machine 管理Azure容器虚拟机1

    ### 使用docker-machine管理Azure容器虚拟机 #### 一、概述 在云计算日益普及的背景下,容器技术成为构建、部署和管理应用的重要手段之一。Docker作为最流行的容器化平台之一,提供了丰富的工具来帮助开发者轻松地...

    如何给Docker配置官方国内加速镜像

    为了快速访问 Docker 官方镜像都会配置三方加速器,目前常用三方加速器有: 网易 、 USTC 、 DaoCloud 、 阿里云 。 现在 Docker 官方针对中国区推出了镜像加速服务。通过 Docker 官方镜像加速,国内用户能够以更快...

    docker-machine-completions:Bash脚本为docker-machine提供补全

    要启用完成功能: 将此文件复制到/etc/bash_completion.d中source直接将文件将此文件复制到给定位置(例如~/comps/docker-machine_completions ),然后将以下内容添加到您的.bashrc中:`。 〜/ comps / docker-...

    Docker-compose 教程全集 PDF 53页

    Docker Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器 (container)。Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环 境变量文件等)组成一个工程...

Global site tag (gtag.js) - Google Analytics