作完看見網上不少都都不熟nodejs到docker上運行:node
根據我的總結包含兩種:一種是經過dockerFile直接打包成鏡像進行運行;另外一種則是掛在到docker鏡像上進行運行。git
今天講解的是經過掛在nodejs項目到鏡像上進行安裝,首先我經過http://blog.shiqichan.com/Dockerizing-a-Node-js-Web-Application/ 該文進行nodejs鏡像的下載:github
PS C:\Users\hxf> docker run -it --rm node node --version
Unable to find image 'node:latest' locally
latest: Pulling from library/nodeweb
357ea8c3d80b: Pull complete
52befadefd24: Pull complete
3c0732d5313c: Pull complete
ceb711c7e301: Pull complete
868b1d0e2aad: Pull complete
61d10f626f84: Pull complete
Digest: sha256:12899eea666e85f23e9850bd3c309b1ee28dd0869f554a7a6895fc962d9094a3
Status: Downloaded newer image for node:latest
v6.4.0
PS C:\Users\hxf> docker run -it --rm node node --version
v6.4.0
PS C:\Users\hxf> git clone https://github.com/MarshalW/ProtoWebApp.git
Cloning into 'ProtoWebApp'...
remote: Counting objects: 44, done.
remote: Compressing objects: 100% (22/22), done.
remote: Total 44 (delta 17), reused 44 (delta 17), pack-reused 0
Unpacking objects: 100% (44/44), done.
Checking connectivity... done.docker
進行到這一步,已經有nodejs鏡像和nodejs項目,接下來就是進行nodejs的掛在和運行;npm
PS C:\Users\hxf\ProtoWebApp> docker run --rm -it -p 3000:3000 --name ProtoWebApp -v "$(pwd)":/webapp -w /webapp node npm start
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error parsing reference: ":/webapp" is not a valid repository/tag.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.windows
進行這一步報錯,首先解釋一下參數,app
--rm 是指運行時加載到鏡像,中止後,鏡像中刪除該應用webapp
-p 是制定代理端口,3d
--name 制定應用id
-v 掛載本地目錄,冒號後面是掛在鏡像中的位置
-w 是工做目錄
後面跟着的是運行命令。
對於錯誤緣由,則是docker不能識別掛在的鏡像,掛在的鏡像必須是絕對路徑,可是對於不識別的緣由,尋找了一會,這是由於windows中的硬盤標識符須要共享出來,到docker setting中,把包含你項目運行的表示服共享出來,這樣docker就能夠認識了,此處有官方文檔知道能夠看看https://docs.docker.com/docker-for-windows/;
經過設置後再次運行該命令不報錯,正常運行,並能夠訪問本地3000
出現須要的畫面。