美文网首页golang
Docker Toolbox for Windows 之安装二三

Docker Toolbox for Windows 之安装二三

作者: linceln | 来源:发表于2018-01-17 16:22 被阅读2053次

    有条件还是尽量升级到 Win10 去用 Docker for Windows

    安装所需的环境

    1、Win7 及以上版本,Win10 以上可以安装 Docker for Windows
    2、MacType 和 VirtualBox 冲突,导致无法启动虚拟机
    3、安装 VirtualBox 时选择 NDIS5 驱动器。根据官方的说法,从 Windows Vista 开始, VirtualBox 默认安装 NDIS6 驱动,但是可能会导致虚拟机从系统变慢到网络异常的一系列问题,所以如果不幸出现了问题,可以重装 Docker Toolbox,选择用 NDIS5 驱动安装 VirtualBox
    点击查看官方说法

    启动

    点击 Docker Quickstart Terminal

    有时点击可能无效,是因为之前有安装过 git 了,但是 git 的安装路径不对,点击右键 - 属性 - 快捷方式 修改 bash 的路径即可

    不出意外会需要更新 boot2docker.iso 文件,但是下载很慢,此时可以退出直接去 github 下载最新版的 boot2docker.isoC:\Users\Administrator\.docker\machine\cache路径下

    重新点击,启动成功

    此前电脑上装了 MacType,导致一直无法启动 VirtualBox 的虚拟机,这里再次提个醒。其实以前安装 Genymotion 的时候就遇到过 MacType 和 VirtualBox 冲突的情况,只是一直没有联系到一起

    创建虚拟机 default 鲸鱼出现说明启动成功了!

    现在可以 Hello World 了

    docker run hello-world
    
    Hello World

    现在你有一个镜像 (image) 和一个容器(container)了

    镜像和容器,可以用类和实例类比,镜像是模版,容器是实例

    docker images // 查看所有镜像
    docker container ls // 查看正在运行的容器,辛辛苦苦敲了这几个单词却没有显示容器怎么办?
    docker container ls -a // 可以带上 -a 参数,列出所有的容器,此时可以看到刚才的 hello-world 容器了,因为它运行完就退出了
    docker rm -f container CONTAINER ID // 删除容器
    docker rmi IMAGE ID // 删除镜像
    

    设置国内镜像源

    如果尝试拉取一个比较大的镜像,比如nginx,你会发现速度慢得让人怀疑人生,此时可以设置一下国内的镜像源,让下载速度起飞

    docker-machine ssh default // 先进入虚拟机,default 是默认的虚拟机名称
    sudo vi /var/lib/boot2docker/profile // 编辑这个文件,添加镜像源 --registry-mirror https://registry.docker-cn.com
    
    sudo vi /var/lib/boot2docker/profile
    sudo /etc/init.d/docker restart // 重启 docker 进程
    exit // 退出虚拟机
    docker info // 看一下镜像源是否设置成功(是否有刚刚设置的 --registry-mirror 这一行)
    docker pull nginx // 现在可以愉快地拉取`nginx`镜像了
    

    这里有个问题,对于虚拟机中的配置的修改,在重启虚拟机之后(比如关机再开机)配置又被重置了,导致每次开机都要重新配置一遍,比如上面的镜像源配置。Github 上也有不少这方面的 issue #1718 这个描述得比较清晰,暂时的解决方案也很简单,第一次启动后修改启动脚本 start.sh 注释掉 yes | "${DOCKER_MACHINE}" regenerate-certs "${VM}" 这一行即可

    if [ "${VM_STATUS}" != "Running" ]; then
      "${DOCKER_MACHINE}" start "${VM}"
      # yes | "${DOCKER_MACHINE}" regenerate-certs "${VM}"
    fi
    

    文件夹权限

    Toolbox 默认只能访问 C:\Users 这个文件夹下的内容,映射到虚拟机上就是 /c/Users

    注意:c 是小写,Users 是大写开头

    如果你的项目在这个目录内,在添加数据卷(Volume)挂载本机目录时,可以使用相对路径, 比如这样

    ...
    redis:
      ...
      volumes:
        - ./data:/data
      ...
    ...
    

    如果你本机的项目放在其他目录,或者需要进入到其他目录的权限,需要添加该目录到虚拟机的共享文件夹

    1. 打开 VirtualBox
    2. 选择虚拟机,点击设置,这里是 default
    3. 选择共享文件夹,添加目录,映射到虚拟机的对应路径(截图显示是映射到 /Dockerfile 文件夹)
      添加共享文件夹
    4. 重启虚拟机
    docker-machine restart default
    

    这样就可以愉快地写数据卷(Volume)了,比如这样:

    ...
    redis:
      ...
      volumes:
        - /Dockerfile/data:/data #这里就只能使用绝对路径了
      ...
    ...
    

    Docker 开机自启动

    Docker Quickstart Terminal 快捷方式拖到开始菜单『启动』文件夹下即可,这样 Docker 每次开机都会自行启动,相应的为了能让容器也重新启动(因为关机等原因容器停止运行了,但是并未删除,只需重新启动即可),可以加一条重启的命令:

    ...
    redis:
      ...
      restart: always # 加一条重启的命令
      volumes:
        - /Dockerfile/data:/data 
      ...
    ...
    

    卸载 Toolbox

    进入控制面板,先卸载 Toolbox,再卸载 VirtualBox,C:\Users\Administor\.docker 需要手动删除

    相关文章

      网友评论

      • 泥垢樂:在dockertoolbox中执行docker run -it --volumes-from data_container nginx /bin/bash后,发现容器与外部映射的内容不同步,这个咋解决?用linux环境执行就没有这样的问题
      • 01d47e9a3a01:请问,修改镜像源以后要怎么保存呢?每次都是修改完之后打开又恢复之前的状态了
        linceln:@教主_4275 这个我设置镜像源这一节有解释,仔细看下注释部分哈
        01d47e9a3a01:按照docker-machine ssh default
        sudo vi /var/lib/boot2docker/profile
        编辑 加入 --registry-mirror https://registry.docker-cn.com
        然后,怎么退出并保存呢?而且,在命令行里很难编辑,上下左右箭头基本不太好用
        linceln:嗯?你是怎么修改的?要修改一般要基于你要改的镜像 build 一个自己的
      • Roger_6ae7:林老师,我能摸摸你的奖杯吗。
        linceln:@Roger_6ae7 修改启动脚本即可

      本文标题:Docker Toolbox for Windows 之安装二三

      本文链接:https://www.haomeiwen.com/subject/ekfuoxtx.html