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
複製程式碼

等我一會 ~~~ 還沒寫完 ~~~ (╬ ̄皿 ̄)=○