阿里雲部署docker及node、nginx鏡像配置

1. docker三大概念

1.1 Image(鏡像):

Docker 鏡像能夠看做是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些爲運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。鏡像不包含任何動態數據,其內容在構建以後也不會被改變。vue

1.2 Container(容器)

全部的鏡像層上增長一個可寫層。這個可寫層有運行在CPU上的進程,並且有兩個不一樣的狀態:運行態(Running)和退出態(Exited)。這就是Docker容器。當咱們使用docker run啓動容器,Docker容器就進入運行態,當咱們中止Docker容器時,他就進入了退出態。node

  • Repository(倉庫)

存放各類開源鏡像文件的場所,專門用來存放開源鏡像的服務器,跟代碼託管的gitlab同樣樣的nginx

三者關係:
鏡像是 Docker 運行容器的前提,倉庫是存放鏡像的場所(倉庫相似代碼託管倉庫)git

透徹理解:當鏡像經過 RUN 命令運行成功後,這個運行的鏡像就建立一個 Docker 容器啦,容器能夠理解爲一個輕量級的沙箱, Docker 利用容器來運行和隔離應用,容器是能夠被啓動、中止、刪除的,這並不會影響 Docker 鏡像web

1.3 鏡像跟容器的關係理解

最簡單理解:鏡像至關於構造函數,容器至關於這個構造函數的一個實例docker

2. 安裝

yum install docker

2.1安裝完成後,運行下面的命令,驗證是否安裝成功:

docker version
    // 或者
    docker info

image.png

3. Dockerfile文件(一下都以node鏡像爲例,下面會單獨講nginx鏡像及本地nginx.conf配置文件掛載)

描述鏡像的內容和建立步驟的文件,docker build 命令會執行的文件, 把項目源文件也放到這個文件夾內,本例放的是一個node服務的app.js文件express

3.1 app.js文件

var express = require('express');
    var app = express();
    var server = app.listen(3000, function () {
        console.log("啓動3000端口服務")
    });

3.2 dockerfile文件

FROM node:latest        // 從 Docker Hub 上 pull 下 node 最新的基礎鏡像

    RUN mkdir -p /webfile/NeteaseCloudNodeApi       // 建立文件

    WORKDIR /webfile/NeteaseCloudNodeApi/           // 指定容器工做目錄

    COPY . /webfile/NeteaseCloudNodeApi/            // 把當前文件複製到容器工做目錄 . 指的是全部文件

    RUN npm install                                 // 安裝依賴包

    CMD ["npm", "start"]                            // 執行啓動命令,一個dockerfile只能有一個CMD,若是多個則執行最後一個

4. 構建鏡像

有了dockerfile文件了,在dockerfile所在的文件夾執行指令npm

  • 構建鏡像
docker build -t nodeserver:v1 .   
    // . 是Dockerfile文件的路徑,不能忽略 
    // -t 指定構建鏡像的名字
  • 查看全部鏡像
docker images
  • 刪除全部的鏡像
docker rmi $(docker images -q)
  • 刪除全部不使用的鏡像
docker image prune --force --all或者docker image prune -f -a`

5. 容器

Docker 容器就是 Docker 鏡像的運行實例,是真正運行項目程序、消耗系統資源、提供服務的地方。 Docker Container 提供了系統硬件環境,咱們可使用 Docker Images 這些製做好的系統盤,再加上咱們所編寫好的項目代碼, run 一下就能夠提供服務啦。segmentfault

5.1 經過鏡像建立容器

docker run --name myserver -d -p 3000:3000 --rm  nodeserver:v1 
    // -d 後臺運行
    // -p 映射指定本地端口到容器指定端口
    // --rm:容器中止運行後,自動刪除容器文件
    // --name:容器的名字爲myserver

這個時候經過3000端口已經能夠訪問容器裏面的node服務了centos

5.2 操做容器的經常使用指令

  • 列出運行的容器
docker ps
  • 列出全部容器:包括沒有運行的容器
docker ps -a
  • 中止全部的容器
docker stop $(docker ps -aq)
  • 刪除全部的容器
docker rm $(docker ps -aq)
  • 刪除全部中止的容器
docker container prune -f

5.3 進入容器

  • 查看運行的容器
docker ps

image.png

  • 進入容器
docker exec -it 容器ID bash
    // 或者
    docker exec -it 容器ID /bin/bash

image.png

  • 退出容器
exit

5.4 docker run與start的區別

  • docker run 只在第一次運行時使用,將鏡像放到容器中,之後再次啓動這個容器時,只須要使用命令docker start 便可。
  • docker run至關於執行了兩步操做:將鏡像放入容器中(docker create),而後將容器啓動,使之變成運行時容器(docker start)。

6. nginx鏡像及本地nginx.config配置文件掛載及vue項目部署

若是nginx配置有疑問能夠看我另外一篇阿里雲服務器(centos)配置nginx及node環境部署

6.1 dockerfile配置文件

FROM nginx:latest

    RUN mkdir -p /webfile/vue-music-player-pc

    WORKDIR /webfile/vue-music-player-pc/

    COPY ./dist/ /webfile/vue-music-player-pc/

6.2 本地nginx.conf配置文件

nginx配置文件網上不少。copy一份就好,可是容器目錄要修改爲本身項目對應的目錄就好,端口設置成本身須要的端口

image.png

6.3 構建鏡像運行容器

  • 構建music鏡像
docker build -t music:v1 .
  • 建立容器並掛載本地的nginx.conf配置文件到容器,理解爲容器使用本地的nginx.congf配置文件

    • -p 映射本機端口到容器端口
    • -v 掛載本地配置到容器 前面是容器nginx.conf的路徑 後面是宿主機nginx.conf的路徑
    • -d 後臺運行
docker run -it -p 8080:80 -v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf -d music:v1

如今就能夠經過8080端口訪問vue項目了

若是有疑問能夠加我qq: 990324393

相關文章
相關標籤/搜索