美文网首页Docker
Docker 填坑指南

Docker 填坑指南

作者: AllenGKC | 来源:发表于2017-03-23 15:09 被阅读922次

    背景

    之前团队中因为Node版本升级问题,项目整个瘫痪无法运行,搞得杰哥双休日折腾环境折腾了两天,老大遂提出以Docker的方式取代现有的环境。目前团队里Windows居多,还有部分Macbook,环境不统一也是个问题。昨日抱着试一试的想法,在自己的Macbook上搭建一个Docker的环境,谁知道这一搭,才发现其中存在无数的坑,所以写下这篇文章,分享给大家在安装docker的过程中需要注意的一些问题。

    安装方式

    关于docker本身的一些介绍本文不做赘述,可以参考Docker — 从入门到实践
    网上对于安装Docker的文档已经很多,包括官网等,本文主要还是以Mac环境为主,Windows用户可以参考,主要介绍整个安装过程。对于Mac环境安装主要有两种方式,一种是安装Docker Toolbox,一种是安装Docker For Mac的Client,考虑到团队中有Mac和Windows两种环境,所以选择第一种方式。

    开始动手

    目标:配置一个通用 Image,该Image可以在多种环境中使用,项目文件可以在容器中开发又可以在本机上用版本管理软件管理(如:git),预装开发过程中可能用到的包。

    过程:

    1. 下载并安装 Docker Toolbox
    2. 下载并运行 Ubuntu 镜像
    3. 做常规的初始化工作(换源、安装常用工具)
    4. 安装前端开发工具
    5. 导出镜像

    1.下载安装Docker Toolbox

    由于"墙"的问题,一开始没有注意这个问题,导致刚开始安装的时候非常慢,所以在吸取教训后,选择国内的一些站点来做镜像,国内可以选择的站点很多,这里我们选择阿里云镜像,里面有Mac和Windows两种版本的安装包,可以按需下载。BTW:没注册的小伙伴可以先注册一个阿里云的帐号,后面会用到。

    Docker Toolbox 是 Docker 官方开发的 Docker 套装,里面有全套 Docker 环境,也有图形化工具 Kitematic,直接下载安装即可。
    安装好Docker Toolbox后直接会发现电脑上多了下面三个东西:

    此时你的VirtualBox是干净的,没有任何虚拟机,接下来,点击Kitematic,生成一个default的虚拟机,此时需要我们注册一个Docker Hub 账号,方便后面使用。

    因为在下载镜像文件的时候不被墙,所以我们需要修改我们的配置,让我们在访问的时候,直接访问的是国内的站点。之前注册的阿里云的帐号后,请查看你的容器Hub服务控制台查看你的专属加速地址。

    我的加速地址是:https://yvcphu9g.mirror.aliyuncs.com, 也可以直接使用。

    下面需要执行一些命令去让我们的虚拟机访问对应的镜像地址:

    创建一台安装有Docker环境的Linux虚拟机,指定机器名称为default
    docker-machine create -d virtualbox default

    查看机器的环境配置,并配置到本地。然后通过Docker客户端访问Docker服务。

    docker-machine env default

    eval "$(docker-machine env default)"

    docker info

    配置Docker加速器

    您可以使用如下的脚本将mirror的配置添加到docker daemon的启动参数中。

    docker-machine ssh default "echo 'EXTRA_ARGS=\"--registry-mirror=https://yvcphu9g.mirror.aliyuncs.com\"' | sudo tee -a /var/lib/boot2docker/profile"

    docker-machine restart default

    此时你名为default的虚拟机对应mirror就已经配置完成。

    2.下载并运行 Ubuntu 镜像

    打开Kitematic,在search框中输入ubuntu,这里我们下载最精简的ubuntu版本,对应下图第二排第一个,点击create,你会发现下载瞬间完成,如果是直接访问docker hub,不仅下载慢,而且还会因为网络问题无法访问,即使翻墙,下载速度依然不行,故之前配置的镜像此时发挥了作用。

    下载完成后,在My images中我们看到了对应的刚刚下载好的ubuntu的镜像

    点击create,就可以进入到管理页面,默认是开启,点击EXEC,就看到了熟悉的linux命令行模式

    至此,ubuntu的镜像文件也安装完成

    3.做常规的初始化工作

    Ubuntu 装完系统第一件事是什么?没错,换源。
    “源”其实就是网址,你在 Ubuntu 中用 apt-get install 安装软件的时候就是从“源”下载。Ubuntu 默认的源在国外,安装起来非常慢,所以要先换成国内的源。

    国内有很多 Ubuntu 源,我用的是中科大源。
    执行下面的命令进行换源操作:

    sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list

    apt-get update

    换源完毕,之后 apt-get 都会从中科大源下载软件。
    前面说过,这个 Ubuntu Image 是超级精简版,很多不重要的工具都被删掉了,包括常用的 vim、curl、ipconfig、ping。除此之外,Linux 最常用的 TAB 补全路径也没有,所以下面先安装必要的编辑器和路径补全:

    apt-get install vim bash-completion

    这样就完成了基础配置,Ubuntu 可以正常用了

    4.安装前端工具

    首先安装 npm:

    apt-get install npm

    然后安装 cnpm,之后所有 npm 操作都改成 cnpm,从淘宝源下载,速度会快很多。

    npm install -g cnpm --registry=https://registry.npm.taobao.org

    接着安装 n,TJ 大神的 NodeJS 版本管理工具,可以安装多个版本,一键切换。n 需要用到 curl,所以先安装 curl:

    apt-get install curl

    然后安装 n:

    cnpm install -g n

    最后使用 n 安装目前的稳定版 NodeJS:

    n stable

    这样就准备好了前端开发需要的基本工具,你可以根据你的项目需求安装对应的库。

    5.导出镜像

    终于到了最后一步,别忘了前面的提醒:如果不 commit,重启之后所有改动都会丢失!
    所以先 commit。点击 Kitematic 左下角 “DOCKER CLI”,输入命令行执行:

    docker ps

    会看到下面这样的输出:

    复制 Container ID,我这里是5804d12607c5,然后执行:

    docker commit 5804d12607c5 username/imagename

    username 换成你的 Docker Hub 用户名,imagename 换成你的镜像名称。我这里就是 cnyzgkc/ubuntu。

    commit 之后就可以把当前 Container 导出 Image 了:

    docker export 5804d12607c5 -o ubuntu

    执行完后,在你的个人目录下(Mac 上是 /Users/你的用户名)可以找到 ubuntu 文件,这就是我们的最终目标:一个完成所有配置的 Image。至此,你的目标已经完成的差不多了,制作了一个配置好环境的Image,那么这个Image能不能给其他同事用呢?

    我的初衷,也就是理想状态是这样的,对于新人来说,只需要按照如下步骤就可以配置完成:

    1. 准备好 Docker Toolbox 安装包和 Ubuntu Image
    2. 安装 Docker Toolbox
    3. 打开 Kitematic,注册一个 Docker Hub 账号并登陆
    4. 在 Kitematic 中点击左下角“DOCKER CLI”打开 Docker 命令行
    5. 输入命令docker import,从文件夹中直接把 ubuntu 文件拖拽到命令行中(注意 ubuntu 文件路径中不能有中文,如果有,先把文件移动到另一个纯英文路径的文件夹中)
    6. 输入命令docker images,复制出镜像的 IMAGE ID(类似54184b993d46)
    7. 输入命令

    docker run -t -i --privileged -p 137-139:137-139/tcp
    -p 445:445/tcp -p 3000:3000/tcp -p 3123:3123/tcp
    -p 8000:8000/tcp -p 8080:8080/tcp -d --name dev -v /web IMAGEID
    /bin/bash

    把其中的 IMAGEID 替换为上一步复制的内容

    最后回到 Kitematic,应该可以看到左侧多了一个容器,此时环境已经搭建完毕

    但是:理想总是丰满的,现实总是骨感的,在我正踌躇满志准备在windows上实践时,却发现有各种问题,首先是公司电脑的管理员权限,不会统一配置,再者在启动Docker的过程中出现了问题2,还是需要管理员权限,所以最后得出的结论是,如果你的windows不存在权限问题,ok,你按照我上述的过程后,可以直接放到windows机器上运行。但如果没有权限,囧~~

    小结

    虽然本次的结果没有按照预期的方向走,最终没能成功,但在革命成功的路上总要走一些弯路,帮着团队扫清一些障碍也是好的,并且在这个安装docker的过程中,也学到了很多关于docker以及云服务的相关知识,踩了不少坑,分享给大家,以免后面的同学再做重复劳动。

    参考文献

    1.用 Docker 快速配置前端开发环境

    2.Docker 配置前端开发环境实战

    3.docker使用阿里云Docker镜像库加速(修订版)

    相关文章

      网友评论

        本文标题:Docker 填坑指南

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