Docker windows下安裝並搭建Nodejs的webapp

来源:http://www.cnblogs.com/klsw/archive/2017/11/14/7834768.html
-Advertisement-
Play Games

一、關於Docker 什麼是Docker?Docker 採用go語言編寫,是一個開源的應用容器引擎。讓開發者可以快速打包他們的應用以及依賴包到一個封裝的可移植的容器Image中,然後發佈到任何流行的機器( Linux ,windows,Mac等)上,也可以實現虛擬化。容器是使用完全獨立的沙箱機制,相 ...


一、關於Docker

什麼是Docker?Docker 採用go語言編寫,是一個開源的應用容器引擎。讓開發者可以快速打包他們的應用以及依賴包到一個封裝的可移植的容器Image中,然後發佈到任何流行的機器( Linux ,windows,Mac等)上,也可以實現虛擬化。容器是使用完全獨立的沙箱機制,相互之間不會有任何介面。可以同時運行多個Container,且相互獨立各不幹擾,對於多環境下的系統測試非常有用,但是Docker的應用遠不止此。

 

二、安裝

1. Windows 7系統下建議使用Docker toolbox方式安裝,簡單粗暴直接快速省事!

    https://www.docker.com/products/docker-toolbox

 Windows 10 系統下使用 Docker Coumunity Edition 

    http://get.daocloud.io/#install-docker-for-mac-windows 

    https://www.docker.com/community-edition#/windows

2.因為目前win7系統占多數,直接介紹Docker toolbox:

docker toolbox是一個工具集,它主要包含以下一些內容:

     1、Docker CLI 客戶端,用來運行docker引擎創建鏡像和容器

     2、Docker Machine. 可以讓你在windows的命令行中運行docker引擎命令

     3、Docker Compose. 用來運行docker-compose命令

     4、Kitematic. 這是Docker的GUI版本

     5、Docker QuickStart shell. 這是一個已經配置好Docker的命令行環境

     6、Oracle VM Virtualbox. 虛擬機

    由於Docker引擎的守護進程使用的是Linux的內核,所以我們不能夠直接在windows中運行docker引擎。而是需要運行Docker Machine命令 docker-machine, 在你的機器上創建和獲得一個Linux虛擬機,

    用這個虛擬機才可以在你的windows系統上運行Docker引擎

3.準備工作:

Windows 7和10 x64,支持Hyper-V

4.安裝Docker Toolbox

下載完成後安裝  

    在這一步,你將安裝Docker Toolbox。安裝後你的系統將會安裝以下幾個軟體:

    1、Windows版的Docker客戶端

    2、Docker Toolbox管理工具和ISO鏡像

    3、Oracle VM Virtualbox

    4、Git MSYS-git Unix 工具

5.確認是否安裝成功

  安裝完成後,你會在你的電腦桌面上看到新增了三個圖標

    

  雙擊Docker Quickstart Terminal圖標,啟動一個終端

  第一次啟動的話你會看到命令行會輸出一些東西,等待一下,它會配置Docker Toolbox,之後,當它完成後,你會看到啟動成功的畫面

  若在bash界面提示沒有boot2docker鏡像,需要在github上下載,提示大概如下

 

  這是因為沒有找到預設的boot2docker鏡像的原因,提示正在下載,然而github的下載速度不可恭維,第一反應都是找別的站資源下載。

在此要註意了,不同的docker版本最好要對應相同的boot2docker版本,相信打開github下載頁的應該都留意到。最後我才發現,其實不用下載,

在一開始安裝好的DockerToolbox根目錄下就有一個boot2docker,並且可以推斷就是對應的版本。

    

  把boot2docker.iso複製到,bash所提示找不到的那個目錄下(我這裡是C:\Users\Administrator\.docker\machine\cache)。

  然後再次雙擊Docker Quickstart Terminal圖標,出現如下界面,說明安裝成功了。

 

 在命令行中輸入docker run hello-world並按回車鍵,如果docker配置成功的話,你會看到命令行中有如下輸出:

windows下安裝好了docker環境配置完成。

 

三、搭建一個包含Nodejs環境的簡單webApp的image

1.本地配置完Nodejs環境(參考nodejs官網: https://nodejs.org/en/download/)

2.去express官網下載generator

參考步驟: http://expressjs.com/en/starter/generator.html

3.安裝後在對應的express應用文件夾下比如 C:/myspp:

新建文件Dockerfile,拷貝下麵code

# Express-App
#
# VERSION 1.0.0

FROM node:latest

RUN mkdir -p /home/www/express-app
WORKDIR /home/www/express-app

COPY . /home/www/express-app
RUN npm install

EXPOSE 3000
CMD ["npm", "start"]

 

然後雙擊桌面DockerQuickStartTerminal圖標,進入DockerTerminal界面:

 

跳轉到剛纔安裝的express應用文件路徑: cd C:/myapp

註意在Docker Terminal中文件路徑的斜杠是反的,與直接拷貝出來的路徑不同,要改成反斜杠,否則docker跳轉不了。

然後輸入 : docker build -t myapp .   (註意後面的點)

 

運行結果如下:

 

 看到successfully build ***** 就表示image構建成功了。

然後驗證一下是不是image已經有了: docker images

可以通過dicker history查看鏡像構建過程: docker history myapp

 

然後把image run起來:docker run  -p 3000:3000 myapp

如果要讓docker終端後臺運行: 在參數上加 -d

可以通過docker ps查看運行情況:

 

 在本地瀏覽器輸入:192.168.99.100:3000 查看運行的app:(註意使用docker toolbox時不是使用127.0.0.1,而是要使用啟動docker時分配的那個ip地址)

 

查看瀏覽器webapp運行情況:

 參考文檔:https://www.cnblogs.com/lujiangping/p/7206503.html

                   http://www.jb51.net/article/104251.htm


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • TensorFlow Serving https://tensorflow.github.io/serving/ 。 生產環境靈活、高性能機器學習模型服務系統。適合基於實際數據大規模運行,產生多個模型訓練過程。可用於開發環境、生產環境。 模型生命周期管理。模型先數據訓練,逐步產生初步模型,優化模型。 ...
  • 說說最近在開發微信小程式語音識別遇到的問題吧 最先使用微信小程式錄音控制項可以拿到silk格式,後來微信官方又支持mp3格式了 但是我們拿到這些格式以後,都還不能直接使用,做語音識別,因為目前百度的語音識別格式不支持mp3格式的 百度php語音識別介面 http://yuyin.baidu.com/d ...
  • 接上篇隨筆。繼續介紹ajax的使用。 上篇友情連接:http://www.cnblogs.com/liluning/p/7831169.html 本篇導航: Ajax響應參數 csrf 跨站請求偽造 jQuery.serialize() 上傳文件 一、Ajax響應參數 上篇最後介紹了ajax的請求參 ...
  • 1. Spring MVC執行過程 1. 客戶端的請求提交到dispatcherServlet 2. DispatcherServlet查詢一個或者多個handlermapping ,找請求的Controller 3. DispatcherServlet將請求提交給Controller, Contr ...
  • ThreadLocal的主要應用場景為按線程多實例(每個線程對應一個實例)的對象的訪問,並且這個對象很多地方都要用到。例如:同一個網站登錄用戶,每個用戶伺服器會為其開一個線程,每個線程中創建一個ThreadLocal,裡面存用戶基本信息等,在很多頁面跳轉時,會顯示用戶信息或者得到用戶的一些信息等頻繁 ...
  • java學習路線: 作為Java程式員來說,最痛苦的事情莫過於可以選擇的範圍太廣,可以讀的書太多,往往容易無所適從。我想就我自己讀過的技術書籍中挑選出來一些,按照學習的先後順序,推薦給大家,特別是那些想不斷提高自己技術水平的Java程式員們。此外,大家可以加入457036818交流群,互相分享一下關 ...
  • Consider a positive integer X,and let S be the sum of all positive integer divisors of 2004^X. Your job is to determine S modulo 29 (the rest of the d ...
  • 1 Servlet簡介 Servlet(服務端小程式)是使用Java語言編寫的服務端小程式,可以像JSP一樣,生成動態的Web頁; Servlet運行在伺服器端,並由伺服器調用執行,是一種按照Servlet標準開發的類; Servlet程式是Java對CGI程式的實現,與傳統的CGI程式的多線程處理 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...