Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docker 安装配置初探 #2

Open
allenGKC opened this issue Apr 13, 2018 · 0 comments
Open

Docker 安装配置初探 #2

allenGKC opened this issue Apr 13, 2018 · 0 comments
Labels

Comments

@allenGKC
Copy link
Owner

image

背景

之前团队中因为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后直接会发现电脑上多了下面三个东西:
image
此时你的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,不仅下载慢,而且还会因为网络问题无法访问,即使翻墙,下载速度依然不行,故之前配置的镜像此时发挥了作用。
image
下载完成后,在My images中我们看到了对应的刚刚下载好的ubuntu的镜像
image
点击create,就可以进入到管理页面,默认是开启,点击EXEC,就看到了熟悉的linux命令行模式
image
至此,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

会看到下面这样的输出:
image
复制 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镜像库加速(修订版)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant