前端專案部署 - docker
docker
docker的概念在這裡就不在累述,大家google一下都能得到很詳細的描述。
藉著這次專案需要自己利用docker部署各環境,記錄一下docker學習和部署的相關過程。
概念
linux容器與虛擬機器的對比
方案 | 資源佔用 | 冗餘步驟 | 啟動 | 體積 |
---|---|---|---|---|
虛擬機器 | 多(獨佔一部分記憶體和硬碟空間) | 多(完整作業系統,系統級別操作無法跳過) | 慢(mins) | - |
linux容器 | 少(只佔用少量資源,多個容器可共享資源) | - | 快(容器中的應用=程序) | 小 |
docker屬於linux容器的一種封裝(雖然我並沒有深入瞭解linux容器)。
docker的主要用途有(源阮一峰大大部落格)
- 提供一次性的環境
- 提供彈性的雲服務
- 組建微服務架構
雖然我在用到的過程中並沒有體會到上述好處,但不得不說docker真的是個很方便,也很值得學習的東西
重點
docker有幾個非常重要的概念 images
、container
、Dockerfile
-
images
docker把應用程式和依賴打包到images檔案裡面,通過這個檔案就可以生成一個docker 容器。 簡單來說,就是把專案的原始檔進行打包製作成一個映象檔案
-
container
利用
docker run
的命令來生成該對應映象的容器,容器很像一個小型的伺服器 -
Dockerfile
用來配置image的文字檔案,Docker根據該檔案來生成二進位制的image檔案
下載安裝
docker version // 驗證docker安裝成功並檢視docker版本
製作docker容器
-
在專案的根目錄新建文字檔案
Dockerfile
# 本次專案基本dockerfile配置項 # 基礎映象 FROM nginx # 將打包好的專案檔案拷貝到容器對應位置 COPY build /usr/share/nginx/html # 將本地的nginx配置檔案拷貝到容器對應位置,使其生效 COPY ./nginx.conf /etc/nginx/conf.d/default.conf # 用來啟動容器的命令 COPY ./docker-compose.yml /home/dengbingyu/docker-compose.yml
-
生成專案的映象檔案
# 生成映象檔案,並打上tag為feedback-sys docker build -t feedback-sys
-
將映象檔案上傳至dockerhub
docker push ${dockerhub 域名}/歸屬/倉庫名稱:tag名
-
伺服器端拉取映象檔案
docker pull 地址
-
啟動容器
# 執行一個映象並 啟動 bash 互動 docker run -it mydocker /bin/bash # 也可以寫docker-compose.yml檔案,通過docker-compose up 命令來啟動 # docker-compose.yml檔案配置參見官網
常用docker命令
-
docker ps
檢視所有當前執行的容器 (docker ps -a
檢視所有容器,包括停止的) -
docker images
檢視所有的映象檔案 -
docker rm ${containerId}
移除容器 -
docker rmi ${imageId}
移除映象檔案 -
docker rm ${docker ps -aq}
刪除所有容器 -
docker attach ${containerId}
進入docker容器,以bash互動 -
docker kill ${containerId}
殺掉執行的容器,stop也可以
-
docker build -t ${mydocker} .
將當前目錄下檔案構建成指定名稱映象 -
docker tag ${imageName} ${imageName}
改映象tag -
docker run -it ${imageName} /bin/bash
啟動映象,並進入容器,以bash進行互動 -
docker run --name ${imageName} -d -p 80:80 nginx
用 nginx 映象啟動一個容器,命名為 webserver,並對映 80 埠