Docker 鏡像能夠看做是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些爲運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。鏡像不包含任何動態數據,其內容在構建以後也不會被改變。vue
全部的鏡像層上增長一個可寫層。這個可寫層有運行在CPU上的進程,並且有兩個不一樣的狀態:運行態(Running)和退出態(Exited)。這就是Docker容器。當咱們使用docker run啓動容器,Docker容器就進入運行態,當咱們中止Docker容器時,他就進入了退出態。node
存放各類開源鏡像文件的場所,專門用來存放開源鏡像的服務器,跟代碼託管的gitlab同樣樣的nginx
三者關係:
鏡像是 Docker 運行容器的前提,倉庫是存放鏡像的場所(倉庫相似代碼託管倉庫)git
透徹理解:當鏡像經過 RUN 命令運行成功後,這個運行的鏡像就建立一個 Docker 容器啦,容器能夠理解爲一個輕量級的沙箱, Docker 利用容器來運行和隔離應用,容器是能夠被啓動、中止、刪除的,這並不會影響 Docker 鏡像web
最簡單理解:鏡像至關於構造函數,容器至關於這個構造函數的一個實例docker
yum install docker
docker version // 或者 docker info
描述鏡像的內容和建立步驟的文件,docker build 命令會執行的文件, 把項目源文件也放到這個文件夾內,本例放的是一個node服務的app.js文件express
var express = require('express'); var app = express(); var server = app.listen(3000, function () { console.log("啓動3000端口服務") });
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,若是多個則執行最後一個
有了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`
Docker 容器就是 Docker 鏡像的運行實例,是真正運行項目程序、消耗系統資源、提供服務的地方。 Docker Container 提供了系統硬件環境,咱們可使用 Docker Images 這些製做好的系統盤,再加上咱們所編寫好的項目代碼, run 一下就能夠提供服務啦。segmentfault
docker run --name myserver -d -p 3000:3000 --rm nodeserver:v1 // -d 後臺運行 // -p 映射指定本地端口到容器指定端口 // --rm:容器中止運行後,自動刪除容器文件 // --name:容器的名字爲myserver
這個時候經過3000端口已經能夠訪問容器裏面的node服務了centos
docker ps
docker ps -a
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
docker container prune -f
docker ps
docker exec -it 容器ID bash // 或者 docker exec -it 容器ID /bin/bash
exit
若是nginx配置有疑問能夠看我另外一篇阿里雲服務器(centos)配置nginx及node環境部署
FROM nginx:latest RUN mkdir -p /webfile/vue-music-player-pc WORKDIR /webfile/vue-music-player-pc/ COPY ./dist/ /webfile/vue-music-player-pc/
nginx配置文件網上不少。copy一份就好,可是容器目錄要修改爲本身項目對應的目錄就好,端口設置成本身須要的端口
docker build -t music:v1 .
建立容器並掛載本地的nginx.conf配置文件到容器,理解爲容器使用本地的nginx.congf配置文件
docker run -it -p 8080:80 -v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf -d music:v1
如今就能夠經過8080端口訪問vue項目了
若是有疑問能夠加我qq: 990324393