1. 程式人生 > >前端專案部署 - docker

前端專案部署 - docker

docker

docker的概念在這裡就不在累述,大家google一下都能得到很詳細的描述。

藉著這次專案需要自己利用docker部署各環境,記錄一下docker學習和部署的相關過程。

概念

linux容器與虛擬機器的對比

方案 資源佔用 冗餘步驟 啟動 體積
虛擬機器 多(獨佔一部分記憶體和硬碟空間) 多(完整作業系統,系統級別操作無法跳過) 慢(mins) -
linux容器 少(只佔用少量資源,多個容器可共享資源) - 快(容器中的應用=程序)

docker屬於linux容器的一種封裝(雖然我並沒有深入瞭解linux容器)。

docker的主要用途有(源阮一峰大大部落格)

  • 提供一次性的環境
  • 提供彈性的雲服務
  • 組建微服務架構

雖然我在用到的過程中並沒有體會到上述好處,但不得不說docker真的是個很方便,也很值得學習的東西

重點

docker有幾個非常重要的概念 imagescontainerDockerfile

  • images

    docker把應用程式和依賴打包到images檔案裡面,通過這個檔案就可以生成一個docker 容器。 簡單來說,就是把專案的原始檔進行打包製作成一個映象檔案

  • container

    利用docker run的命令來生成該對應映象的容器,容器很像一個小型的伺服器

  • Dockerfile
    用來配置image的文字檔案,Docker根據該檔案來生成二進位制的image檔案


下載安裝

mac下載地址
windows下載地址

docker version    // 驗證docker安裝成功並檢視docker版本

製作docker容器

  1. 在專案的根目錄新建文字檔案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
    
  2. 生成專案的映象檔案

    # 生成映象檔案,並打上tag為feedback-sys
    docker build -t feedback-sys
    
  3. 將映象檔案上傳至dockerhub

    docker push ${dockerhub 域名}/歸屬/倉庫名稱:tag名
    
  4. 伺服器端拉取映象檔案

    docker pull 地址
    
  5. 啟動容器

    # 執行一個映象並  啟動 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 埠