docker項目管理

      網友投稿 703 2025-03-31

      docker項目管理


      本文目錄一覽:

      什么是docker

      docker是一個開源項目,誕生于2013年初,最初是dotCloud公司內部的一個業余項目。它基于Google公司推出的GO語言實現,項目后來加入了Linux基金會,遵從了apache2.0協議,項目代碼在GitHub上進行維護。

      docker自開源后受到廣泛的關注和討論,以至于dotcloud公司后來都改名為docker lnc。Redhat已經在其rhel6.5中集中支持docker,Google也在其PaaS產品中廣泛應用。

      docker項目的目標是實現輕量級的操作系統虛擬化解決方案,docker的基礎是Linux容器等技術。

      Docker 有什么優勢?

      1、更高效的利用系統資源

      docker對系統資源的利用率更高,無論是應用執行速度,內存損耗或者文件存儲速度,都要比傳統虛擬機技術更高效。因此,相比虛擬機技術,一個相同配置的主機往往可以運行更多數量的應用。

      2、更快速的啟動時間

      傳統的虛擬機技術啟動應用服務往往需要數分鐘,而docker容器應用,由于直接運行于宿主內核,無需啟動完整的操作系統,因此可以做到秒級,甚至毫秒級的啟動時間,大大的節約了開發測試,部署的時間。

      3、一致的運行環境

      開發過程中常見的一個問題是環境一致問題,由于開發環境,測試環境,生產環境不一致,導致有些bug并未在開發過程中發現。而docker的鏡像提供了除內核外完整的運行時環境,確保環境一致性,從而不會在出現“這段代碼在我機器上沒問題”這類問題。

      4、持續支付和部署

      對開發和運維人員來說,最希望就是一次創建和部署,可以在任意的地方運行。(定制應用鏡像來實現集成、持續支付、部署。開發人員可以通過dockerfile來進行鏡像構建,并結合持續集成系統進行集成測試,而運維人員則可以直接在生產環境中快速部署該鏡像,甚至結合持續部署系統進行自動部署)。而且使用dockerfile使鏡像構建透明化,不僅僅開發團隊可以理解應用運行環境,也方便運維團隊理解應用運行所需條件,幫助更好的生產環境中部署該鏡像。

      5、更輕松的遷移

      由于docker確保了執行環境的一致性,使得應用的遷移更加的容易。docker可以在很多平臺上運行,無論是物理機、虛擬機、公有云、私有云、甚至是筆記本、其運行結果是一致的。因此用戶可以很輕易的將在一個平臺上運行的應用,遷移到另一個平臺上,而不用擔心運行環境的變化導致應用無法正常運行的情況。

      6、更輕松的維護和拓展

      docker使用的分層存儲以及鏡像的技術,使得應用重復部分的復用更為容易,也使得應用的維護更新更加簡單,基于基礎鏡像進一步擴展鏡像也變得十分簡單。此外,docker團隊同各個開源項目團隊一起維護了一大批高質量的官網鏡像,既可以直接在生產環境使用,又可以作為基礎進一步定制,大大的降低了應用服務的鏡像制作成本。

      如何構建基于docker的開發環境

      一、基本思路

      1. 創建一個用于開發Django App的目錄

      mkdir django-example cd django-example

      2. 構建基本開發環境

      touch Dockerfile

      touch pip.conf requirements.txt

      pip.conf文件填入以下內容,以便一會用pip安裝Python 模塊時使用阿里云鏡像加速:

      [global]

      index-url =

      [install]

      trusted-host=mirrors.aliyun.com

      requirements.txt文件中填入要安裝的Python 模塊:

      django

      編寫構建開發環境的Dockerfile文件,填入以下內容:

      # MAINTAINER ? ? ? ?Gevin flyhigher139@gmail.com

      # DOCKER-VERSION ? ?1.12.0

      #

      # Dockerizing Python: Dockerfile for building python applications

      FROM python:2.7.12

      MAINTAINER Gevin flyhigher139@gmail.com

      WORKDIR /usr/src/app

      # 使用阿里云的pip鏡像

      COPY pip.conf /root/.pip/pip.conf

      docker項目管理

      COPY requirements.txt /usr/src/app/requirements.txt

      RUN pip install -r /usr/src/app/requirements.txt

      EXPOSE 8000

      CMD ["bash"]

      然后執行下面命令構建鏡像:

      docker build -t gevin/django-example:0.1 .

      構建成功后,執行docker images命令,可以查看到當前構建好的image

      docker images

      REPOSITORY ? ? ? ? ? ? TAG ? ? ? ? ? ? ? ? IMAGE ID ? ? ? ? ? ?CREATED ? ? ? ? ? ? SIZE

      gevin/django-example ? 0.1 ? ? ? ? ? ? ? ? 1855fc3c8062 ? ? ? ?12 hours ago ? ? ? ?698.9 MB

      3. 使用構建的image拉起開發環境

      執行下面命令,可以以前臺形式拉起django-example鏡像的一個container:

      docker run -it --rm -v $(pwd):/usr/src/app gevin/django-example:0.1

      上面命令使用了data volume,把當前目錄掛載到container中的工作目錄下,這樣當前目錄下的所有文件都會映射到container的工作目錄下,在工作目錄下的所有改動,也都會保存到宿主機的當前目錄下。

      4. 創建django項目

      上一步的命令創建了一個安裝了django的交互式的container,直接在該container中執行創建django項目的命令即可:

      root@7c91f460599f:/usr/src/app# django-admin startproject dj_example

      上述命令,在container中基于django的命令創建了一個django項目,由于上一步操作時把宿主機的當前目錄掛載到container的工作目錄下,因此,剛剛在container中創建的django項目,在宿主機上也能看到。

      container:

      root@7c91f460599f:/usr/src/app# lsDockerfile ?dj_example ? ?pip.conf ?requirements.txt

      宿主機:

      django-example ls

      Dockerfile ? ? ? dj_example ? ? ? pip.conf ? ? ? ? requirements.txt

      5. 啟動django項目

      docker run -it --rm -p 8000:8000 -v $(pwd):/usr/src/app gevin/django-example:0.1 python dj_example/manage.py runserver 0.0.0.0:8000

      二、Docker-compose與Django環境的結合

      每次使用上面章節中介紹的冗長命令來使用django環境非常麻煩,docker-compose可以簡化操作。

      首先在當前目錄下創建docker-compose.yml文件:

      ? ?django-example touch docker-compose.yml

      然后在該文件中寫入如下內容:

      version: '2'

      services:

      django-example:

      image: gevin/django-example:0.1

      volumes:

      - ./dj_example:/usr/src/app

      ports:

      - 8000:8000

      command: python manage.py runserver 0.0.0.0:8000

      執行下面命令即可拉起django服務:

      ? ?django-example docker-compose up# Starting djangoexample_django-example_1# Attaching to djangoexample_django-example_1

      在瀏覽器中訪問,即可看到默認的django頁面

      注:

      上面的docker-compose文件,把./dj_example目錄掛載到/usr/src/app,免去執行django命令時,需要對應到下級目錄的麻煩,但這樣隱藏了原來container中的requirements.txt文件,需要注意。

      基于docker-compose 執行django 命令

      使用docker-compose 的 run命令,可以在容器內執行相應操作,如:

      對django服務的數據庫做migrate操作:

      docker-compose run django-example python manage.py migrate

      創建超級用戶:

      docker-compose run django-example python manage.py createsuperuser# Username (leave blank to use 'root'): gevin# Email address:# Password:# Password (again):# Superuser created successfully.

      創建成功后,訪問,即可使用剛創建的用戶(即gevin),登錄數據庫管理頁面

      由于使用了數據卷,保存在sqlite數據庫中的數據會一直有效。

      三、簡化方案

      上面方案已經成功構建了django 環境,并應用于開發。上面的方案主要是為了闡述實現思路,在實際操作起來至少有兩個麻煩:(1)需要進入容器里面創建django項目;(2)由于django項目是建立在當前目錄的子目錄下,使用docker-compose 時為了命令簡單通用,更換了數據卷。

      在實踐中,利用docker-compose的run命令,沒必要進入容器創建django項目;只要把django項目建立在當前目錄下,也沒必要更換數據卷了。

      因此,可以把上面的方案再理一下,按下面步驟構建開發環境,并應用到開發中去。

      Outline:

      創建Dockerfile文件

      構建鏡像

      創建docker-compose文件

      創建項目

      拉起項目

      1. 創建Dockerfile文件

      對Python開發環境而言,最好再創建pip.conf和requirements.txt文件,以便方便安裝項目必須的Python依賴,其他語言的開發環境就具體情況而定。

      以Python為例,Dockerfile 內容如下:

      # MAINTAINER ? ? ? ?Gevin flyhigher139@gmail.com

      # DOCKER-VERSION ? ?1.12.0

      #

      # Dockerizing Python: Dockerfile for building python applications

      FROM python:2.7.12

      MAINTAINER Gevin flyhigher139@gmail.com

      WORKDIR /usr/src/app

      # 使用阿里云的pip鏡像

      COPY pip.conf /root/.pip/pip.conf

      COPY requirements.txt /usr/src/app/requirements.txt

      RUN pip install -r /usr/src/app/requirements.txt

      EXPOSE 8000

      CMD ["bash"]

      2. ?構建鏡像

      docker build -t gevin/django-example:0.1 .

      3. ?創建docker-compose文件

      docker-compose文件內容如下:

      version: '2'

      services:

      ? django-example:

      ? ?image: gevin/django-example:0.1

      ? ?volumes:

      ? ? ?- .:/usr/src/app

      ? ?ports:

      ? ? ?- 8000:8000

      ? ?command: python manage.py runserver 0.0.0.0:8000

      4. ?創建項目

      docker-compose run django-example django-admin startproject dj_project .

      果然需要migrate數據庫,創建超級用戶等,可以在這里一并創建,也可以在后面的開發中再創建:

      docker-compose run django-example python manage.py migrate

      docker-compose run django-example python manage.py createsuperuser

      5. ?拉起項目

      docker-compose up

      四、其他

      Gevin認為,雖然基于docker可以構建開發環境,但還是vagrant用起來更舒服,docker更加適合做CI,測試和部署。

      實際工作中如何使用docker,就仁者見仁,智者見智了。

      作者:Gevin

      鏈接:

      來源:簡書

      著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

      1.2 為什么要使用Docker

      Docker容器虛擬化的好處

      Docker項目的發起人和Docker Inc.的CTO Solomon Hykes認為,Docker在正確的地點、正確的時間順應了正確的趨勢—即高效地構建應用。現在開發者需要能方便地創建運行在云平臺上的應用,也就是說應用必須能夠脫離底層機器,而且同時必須是“任何時間任何地點”可獲取的。因此,開發者們需要一種創建分布式應用程序的方式,這也是Docker所能夠提供的。

      舉個簡單的應用場景的例子。假設用戶試圖基于最常見的LAMP(Linux + Apache + MySQL + PHP)組合來運維一個網站。按照傳統的做法,首先,需要安裝Apache、MySQL 和PHP以及它們各自運行所依賴的環境;之后分別對它們進行配置(包括創建合適的用戶、配置參數等);經過大量的操作后,還需要進行功能測試,看是否工作正常;如果不正常,則意味著更多的時間代價和不可控的風險。可以想象,如果再加上更多的應用,事情會變得更加難以處理。

      更為可怕的是,一旦需要服務器遷移(例如從阿里云遷移到騰訊云),往往需要重新部署和調試。這些瑣碎而無趣的“體力活”,極大地降低了工作效率。

      而Docker提供了一種更為聰明的方式,通過容器來打包應用,意味著遷移只需要在新的服務器上啟動需要的容器就可以了。這無疑將節約大量的寶貴時間,并降低部署過程出現問題的風險。

      Docker在開發和運維中的優勢

      對開發和運維(DevOps)人員來說,可能最夢寐以求的就是一次性地創建或配置,可以在任意環境、任意時間讓應用正常地運行。而Docker恰恰是可以實現這一終極目標的瑞士軍刀。

      具體說來,Docker在開發和運維過程中,具有如下幾個方面的優勢。

      更快速的交付和部署。使用Docker,開發人員可以使用鏡像來快速構建一套標準的開發環境;開發完成之后,測試和運維人員可以直接使用相同環境來部署代碼。Docker可以快速創建和刪除容器,實現快速迭代,大量節約開發、測試、部署的時間。并且,各個步驟都有明確的配置和操作,整個過程全程可見,使團隊更容易理解應用的創建和工作過程。

      更高效的資源利用。Docker容器的運行不需要額外的虛擬化管理程序(Virtual Machine Manager,VMM,以及Hypervisor)支持,它是內核級的虛擬化,可以實現更高的性能,同時對資源的額外需求很低。

      更輕松的遷移和擴展。Docker容器幾乎可以在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、個人電腦、服務器等。 這種兼容性讓用戶可以在不同平臺之間輕松地遷移應用。

      更簡單的更新管理。使用Dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作。并且所有修改都以增量的方式進行分發和更新,從而實現自動化并且高效的容器管理。

      Docker與虛擬機比較

      作為一種輕量級的虛擬化方式,Docker在運行應用上跟傳統的虛擬機方式相比具有顯著優勢:

      Docker容器很快,啟動和停止可以在秒級實現,這相比傳統的虛擬機方式要快得多。

      Docker容器對系統資源需求很少,一臺主機上可以同時運行數千個Docker容器。

      Docker通過類似Git的操作來方便用戶獲取、分發和更新應用鏡像,指令簡明,學習成本較低。

      Docker通過Dockerfile配置文件來支持靈活的自動化創建和部署機制,提高工作效率。

      Docker容器除了運行其中的應用之外,基本不消耗額外的系統資源,保證應用性能的同時,盡量減小系統開銷。傳統虛擬機方式運行N個不同的應用就要啟動N個虛擬機(每個虛擬機需要單獨分配獨占的內存、磁盤等資源),而Docker只需要啟動N個隔離的容器,并將應用放到容器內即可。

      當然,在隔離性方面,傳統的虛擬機方式多了一層額外的隔離。但這并不意味著Docker就不安全。Docker利用Linux系統上的多種防護機制實現了嚴格可靠的隔離。從1.3版本開始,Docker引入了安全選項和鏡像簽名機制,極大地提高了使用Docker的安全性。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:低代碼應用搭建平臺(低代碼應用搭建平臺有哪些)
      下一篇:js鍵盤事件中的鍵碼對照表
      相關文章
      男人的天堂亚洲一区二区三区| 亚洲依依成人亚洲社区| 亚洲va中文字幕无码| 国产精品亚洲AV三区| 亚洲日本成本人观看| 亚洲一本一道一区二区三区| 中中文字幕亚洲无线码| 亚洲人成小说网站色| 亚洲一区二区三区在线网站| 亚洲AV成人无码天堂| 亚洲国产成+人+综合| 亚洲av无码国产综合专区| 亚洲五月丁香综合视频| 亚洲熟妇AV一区二区三区浪潮| 伊人久久亚洲综合影院首页| 亚洲人成无码网站在线观看| 亚洲国产精品日韩av不卡在线 | 久久久久久a亚洲欧洲AV| 亚洲成A人片在线观看无码不卡 | 不卡一卡二卡三亚洲| 久久久久国产亚洲AV麻豆| 亚洲精品无码久久久久去q | 亚洲高清国产拍精品熟女| 国产在亚洲线视频观看| 亚洲精品人成无码中文毛片| 久久伊人亚洲AV无码网站| 亚洲日韩aⅴ在线视频| 久久久久亚洲精品成人网小说| 亚洲午夜久久久精品影院| 亚洲福利视频网址| 亚洲综合丁香婷婷六月香| 亚洲а∨精品天堂在线| 亚洲国产精品丝袜在线观看| 综合亚洲伊人午夜网| 亚洲成av人片在线观看无码不卡| 亚洲久本草在线中文字幕| 亚洲最大的视频网站| 在线观看亚洲AV日韩A∨| 亚洲第一页日韩专区| 亚洲精品夜夜夜妓女网| 久久亚洲精品成人av无码网站|