Docker 简介
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、 bare metal、OpenStack 集群和其他的基础应用平台。
Docker通常用于如下场景:
- web应用的自动化打包和发布;
- 自动化测试和持续集成、发布;
- 在服务型环境中部署和调整数据库或其他的后台应用;
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
上面都是摘抄,我们还是直接实践吧~
装包
有两种方式,使用homebrew直接安装,或者下载包手动安装
homebrew安装(比较慢)
brew cask install docker
下载包安装,下载地址

到桌面上你会看到图标,打开之后,在任务栏,会出现鲸鱼icon


好了,docker已经跑起来了~
镜像加速
鉴于国内网络问题,后续拉取Docker镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:hub-mirror.c.163.com。
在任务栏点击 Docker for mac 应用图标 -> Perferences... -> Daemon -> Registry mirrors。在列表中填写加速器地址即可。修改完成之后,点击 Apply & Restart 按钮,Docker 就会重启并应用配置的镜像地址了。

我们跑一下命令查看下版本和相关信息
docker -v
docker info

image文件 && 容器文件
我们再来稍微了解一下docker中两个灵魂概念
image文件
Docker 把应用程序及其依赖,打包在 image 文件里面。只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。
容器文件
image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。
先跑个官方例子
先从仓库把镜像拉下来,这个是官方的仓库,所以可以直接拉取
docker image pull library/hello-world
拉取成功之后,就可以查看镜像列表
docker image ls

那我们现在把它跑起来
docker container run hello-world
docker container run命令会从 image 文件,生成一个正在运行的容器实例。
注意,docker container run命令具有自动抓取 image 文件的功能。如果发现本地没有指定的 image 文件,就会从仓库自动抓取。因此,前面的docker image pull命令并不是必需的步骤。
如果运行成功,你会在屏幕上读到下面的输出。

这是官方的例子,没依赖,没有麻烦的配置,如果是自己的项目呢?所以...我们又要开始准备工作了~~
接来下,我们需要跑一个私人node项目,所以我们要先从git上拉代码,所以先装个gitlab
gitlab
docker search gitlab
docker pull gitlab/gitlab-ce:latest

OK,我们拉个项目吧~
mkdir docker-demo0108
cd docker-demo0108
git clone https://github.com/daly-young/nuxt-test.git
cd nuxt-test

在项目的根目录下,新建文本文件.dockerignore和Dockerfile。
vim .dockerignore
.git
node_modules
npm-debug.log
vim Dockerfile
FROM node:8.11.3
COPY . /nuxt-test
WORKDIR /nuxt-test
RUN npm install --registry=https://registry.npm.taobao.org
EXPOSE 3000
FROM node:8.11.3:该 image 文件继承官方的 node image,冒号表示版本号,自己的项目用什么版本写什么版本。
COPY . /nuxt-test:将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入 image 文件的/nuxt-test。
WORKDIR /nuxt-test:指定接下来的工作路径为/nuxt-test。
RUN npm install:在/nuxt-test目录下,运行npm install命令安装依赖。注意,安装后所有的依赖,都将打包进入 image 文件。
EXPOSE 3000:将容器 3000 端口暴露出来, 允许外部连接这个端口。
我们来创建image文件吧
// 最后的这个.一定要加上!
docker image build -t nuxt-test .

docker image ls

镜像OK了,然后就是创建容器了~~~
docker container run命令会从 image 文件生成容器。
docker container run -p 8000:3000 -it nuxt-test /bin/bash

创建成功~此时我们已经在项目里了,可以直接跑项目了
npm run dev

等我一会 ~~~ 还没写完 ~~~ (╬ ̄皿 ̄)=○