2013年發布至今, Docker 一直廣受矚目,被認為可能會改變軟件行業。 但是,許多人并不清楚 Docker 到底是什么,要解決什么問題,好處又在哪里?今天就來詳細解釋,幫助大家理解它,還帶有簡單易懂的實例,教你如何將它用于日常開發并用其部署微服務。 一. Docker簡介 Docker是一個開源的容器引擎,它有助于更快地交付應用。 Docker可將應用程序和基礎設施層隔離,并且能將基礎設施當作程序一樣進行管理。使用 Docker可更快地打包、測試以及部署應用程序,并可以縮短從編寫到部署運行代碼的周期。 Docker的優點如下: 1. 簡化程序 Docker 讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的 Linux 機器上,便可以實現虛擬化。Docker改變了虛擬化的方式,使開發者可以直接將自己的成果放入Docker中進行管理。方便快捷已經是 Docker的最大優勢,過去需要用數天乃至數周的 任務,在Docker容器的處理下,只需要數秒就能完成。 2. 避免選擇恐懼癥 如果你有選擇恐懼癥,還是資深患者。Docker 幫你 打包你的糾結!比如 Docker 鏡像;Docker 鏡像中包含了運行環境和配置,所以 Docker 可以簡化部署多種應用實例工作。比如 Web 應用、后臺應用、數據庫應用、大數據應用比如 Hadoop 集群、消息隊列等等都可以打包成一個鏡像部署。 3. 節省開支 一方面,云計算時代到來,使開發者不必為了追求效果而配置高額的硬件,Docker 改變了高性能必然高價格的思維定勢。Docker 與云的結合,讓云空間得到更充分的利用。不僅解決了硬件管理的問題,也改變了虛擬化的方式。 二. Docker架構
Docker daemon( Docker守護進程) Docker daemon是一個運行在宿主機( DOCKER-HOST)的后臺進程。可通過 Docker客戶端與之通信。 Client( Docker客戶端) Docker客戶端是 Docker的用戶界面,它可以接受用戶命令和配置標識,并與 Docker daemon通信。圖中, docker build等都是 Docker的相關命令。 Images( Docker鏡像) Docker鏡像是一個只讀模板,它包含創建 Docker容器的說明。它和系統安裝光盤有點像,使用系統安裝光盤可以安裝系統,同理,使用Docker鏡像可以運行 Docker鏡像中的程序。 Container(容器) 容器是鏡像的可運行實例。鏡像和容器的關系有點類似于面向對象中,類和對象的關系。可通過 Docker API或者 CLI命令來啟停、移動、刪除容器。 Registry Docker Registry是一個集中存儲與分發鏡像的服務。構建完 Docker鏡像后,就可在當前宿主機上運行。但如果想要在其他機器上運行這個鏡像,就需要手動復制。此時可借助 Docker Registry來避免鏡像的手動復制。 一個 Docker Registry可包含多個 Docker倉庫,每個倉庫可包含多個鏡像標簽,每個標簽對應一個 Docker鏡像。這跟 Maven的倉庫有點類似,如果把 Docker Registry比作 Maven倉庫的話,那么 Docker倉庫就可理解為某jar包的路徑,而鏡像標簽則可理解為jar包的版本號。 三. Docker安裝 Docker 是一個開源的商業產品,有兩個版本:社區版(Community Edition,縮寫為 CE)和企業版(Enterprise Edition,縮寫為 EE)。企業版包含了一些收費服務,個人開發者一般用不到。下面的介紹都針對社區版。 Docker CE 的安裝請參考官方文檔。以下列出不同操作系統的安裝方法
我們這里以CentOS為例: 1、Docker 要求 CentOS 系統的內核版本高于 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。 通過 uname -r 命令查看你當前的內核版本 # uname -r 2、使用 root 權限登錄 Centos。確保 yum 包更新到最新。 # yum -y update 3、卸載舊版本(如果安裝過舊版本的話) # yum remove docker docker-common docker-selinux docker-engine 4、安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的 # yum install -y yum-utils device-mapper-persistent-data lvm2 5、設置yum源 # yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 6、可以查看所有倉庫中所有docker版本,并選擇特定版本安裝 # yum list docker-ce --showduplicates | sort -r 7、安裝docker # sudo yum install -y docker-ce #由于repo中默認只開啟stable倉庫,故這里安裝的是最新穩定版18.03.1 8、啟動并加入開機啟動 # systemctl start docker # systemctl enable docker 9、驗證安裝是否成功(有client和service兩部分表示docker安裝啟動都成功了) # docker version 10、卸載docker # yum -y remove docker-engine 四. Docker常用命令 (一) .鏡像相關命令 1、搜索鏡像 可使用 docker search命令搜索存放在 Docker Hub(這是docker官方提供的存放所有docker鏡像軟件的地方,類似maven的中央倉庫)中的鏡像。執行該命令后, Docker就會在Docker Hub中搜索含有 java這個關鍵詞的鏡像倉庫。 # docker search java 以上列表包含五列,含義如下:
注意:使用docker查找或下載鏡像可能會超時,所以我們需要為docker配置國內的鏡像加速器 我們可以借助阿里云的鏡像加速器,登錄阿里云(https://cr.console.aliyun.com/#/accelerator ) 可以看到鏡像加速地址如下圖: # cd /etc/docker 查看有沒有 daemon.json。這是docker默認的配置文件。 如果沒有新建,如果有,則修改。 # vim daemon.json { "registry-mirrors": ["https://m9r2r2uj.mirror.aliyuncs.com"] } 保存退出并重啟docker服務 # service docker restart 2、下載鏡像 使用命令docker pull命令即可從 Docker Registry上下載鏡像,執行該命令后,Docker會從 Docker Hub中的 java倉庫下載最新版本的 Java鏡像。如果要下載指定版本則在java后面加冒號指定版本,例如:docker pull java:8 # docker pull java:8
3、列出鏡像 使用 docker images命令即可列出已下載的鏡像 # docker images 以上列表含義如下
4、刪除本地鏡像 使用 docker rmi命令即可刪除指定鏡像 [code] # docker rmi java[/code] (二) .容器相關命令 1、新建并啟動容器 使用以下docker run <鏡像名>命令即可新建并啟動一個容器,該命令是最常用的命令,它有很多選項,下面將列舉一些常用的選項。 # docker run -d -p 91:80 nginx 這樣就能啟動一個 Nginx容器。在本例中,為 docker run添加了兩個參數,含義如下:
訪問http://Docker宿主機 IP:91/,將會看到nginx的主界面如下: 需要注意的是,使用 docker run命令創建容器時,會先檢查本地是否存在指定鏡像。如果本地不存在該名稱的鏡像, Docker就會自動從 Docker Hub下載鏡像并啟動一個 Docker容器。 該命令還有一個網絡配置參數,如下所示
2、列出容器 用 docker ps命令即可列出運行中的容器 # docker ps 如需列出所有容器(包括已停止的容器),可使用-a參數。該列表包含了7列,含義如下
3、停止容器 使用 docker stop <容器id>命令,即可停止容器 # docker stop f0b1c8ab3633 其中f0b1c8ab3633是容器 ID,當然也可使用 docker stop容器名稱來停止指定容器 4、強制停止容器 可使用 docker kill <容器id>命令發送 SIGKILL信號來強制停止容器 # docker kill f0b1c8ab3633 5、啟動已停止的容器 使用docker run命令,即可新建并啟動一個容器。對于已停止的容器,可使用 docker start <容器id>命令來啟動 # docker start f0b1c8ab3633 6、查看容器所有信息 使用命令docker inspect <容器id> # docker inspect f0b1c8ab3633 7、查看容器日志 使用命令docker container logs <容器id> # docker container logs f0b1c8ab3633 8、查看容器里的進程 使用命令docker top <容器id> # docker top f0b1c8ab3633 9、進入容器 使用docker container exec -it <容器id> /bin/bash命令用于進入一個正在運行的docker容器。如果docker run命令運行容器的時候,沒有使用-it參數,就要用這個命令進入容器。一旦進入了容器,就可以在容器的 Shell 執行命令了 # docker container exec -it f0b1c8ab3633 /bin/bash 10、刪除容器 使用 docker rm命令即可刪除指定容器 # docker rm f0b1c8ab3633 該命令只能刪除已停止的容器,如需刪除正在運行的容器,可使用-f參數 (三) .構建自己的docker鏡像 使用Dockerfile構建自己的Docker鏡像 Dockerfile是一個文本文件,其中包含了若干條指令,指令描述了構建鏡像的細節 先來編寫一個最簡單的Dockerfile,以前文下載的Nginx鏡像為例,來編寫一個Dockerfile修改該Nginx鏡像的首頁 1、新建文件夾/app,在app目錄下新建一個名為Dockerfile的文件,在里面增加如下內容: FROM nginx #從本地的鏡像倉庫里拉取ngxin的docker鏡像 RUN echo 'This is QingFeng Nginx!!!' > /usr/share/nginx/html/index.html #修改ngxin的docker鏡像的首頁內容 該Dockerfile非常簡單,其中的 FORM、 RUN都是 Dockerfile的指令。 FROM指令用于指定基礎鏡像, RUN指令用于執行命令。 2、在Dockerfile所在路徑執行以下命令構建我們自己的ngxin鏡像,構建完可用docker images命令查看是否已生成鏡像ngxin:tuling: # docker build -t nginx:qingfeng . 其中,-t指定鏡像名字,命令最后的點(.)表示Dockerfile文件所在路徑 3、執行以下命令,即可使用該鏡像啟動一個 Docker容器 # docker run -d -p 92:80 nginx:qingfeng 4、訪問http://Docker宿主機IP:92/,可看到下圖所示界面, Dockerfile的文件編寫還有如下常用指令 注意:RUN命令在 image 文件的構建階段執行,執行結果都會打包進入 image 文件;CMD命令則是在容器啟動后執行。另外,一個 Dockerfile 可以包含多個RUN命令,但是只能有一個CMD命令。 注意:指定了CMD命令以后,docker container run命令就不能附加命令了(比如前面的/bin/bash),否則它會覆蓋CMD命令。 (四) .使用Dockerfile構建微服務鏡像 以spring boot項目ms-eureka-server(源碼在最后)為例,該項目就是一個spring cloud eureka的微服務項目,該項目可通過spring boot的maven插件打包成可執行的jar包運行,如下圖所示 將該項目的可執行jar包構建成docker鏡像: 1、將jar包上傳linux服務器/app/eureka目錄,在jar包所在目錄創建名為Dockerfile的文件 2、在Dockerfile中添加以下內容 # 基于哪個鏡像 From java:8 # 復制文件到容器 ADD microservice-eureka-server-0.0.1-SNAPSHOT.jar /app.jar # 聲明需要暴露的端口 EXPOSE 8761 # 微服務項目的啟動端口 # 配置容器啟動后執行的命令 ENTRYPOINT ["java","-jar","/app.jar"] 3、使用docker build命令構建鏡像 # docker build -t microservice-eureka-server:0.0.1 . # 格式: docker build -t 鏡像名稱:標簽 Dockerfile的相對位置 在這里,使用-t選項指定了鏡像的標簽。執行該命令后,終端將會輸出如下的內容 4、啟動鏡像,加-d可在后臺啟動 # docker run -p 8761:8761 microservice-eureka-server:0.0.1 5、訪問http://Docker宿主機IP:8761/,可正常顯示微服務Eureka Server的首頁 以上就是小編給大家介紹的十分鐘學會用docker部署微服務,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的! |
免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業用途,如果損害了您的權利,請聯系我們及時修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長、創業、互聯網等領域,為您提供最新最全的互聯網資訊,幫助站長轉型升級,為互聯網創業者提供更加優質的創業信息和品牌營銷服務,與站長一起進步!讓互聯網創業者不再孤獨!
掃一掃,關注站長網微信
當我們在共享網絡訪問的時候,可能會遇到提示指定的網絡名不再可用的問題,這可能是由于我們的共享網絡出現了錯誤,也可能是被共享的對象所拒絕了。指定的網絡名 ......
文/曹楊 原標題:誰還看電視? 爸爸戴一副老花鏡,媽媽戴一副近視鏡,一人坐在沙發,一人躺在床上,各自刷著自己關注的博主更新的短視頻。電視也許開著,但只是背景。 這樣的畫面,幾乎成了洛奇家的常 ...
圖片來源于簡書 文/郭開森 楊帆 陸玖財經準備開新欄目了,每周一創始人郭開森和楊帆合體郭德帆,對行業進行一些觀察和評論,第一篇我們仍是打算寫社區團購,這是當下最火的話題。 來過陸玖財經做客的朋友們...
1、首先進入到“百度”軟件中, 2、然后在其中輸入“百度識圖”, 3、之后點擊圖中的“開始使用”按鈕, 4、緊接著點擊右下角的“相冊”功能, 5、在相冊下 ......
一、軟件沖突1、首先確認是否是應用程序沖突導致的。2、查看是否只有特定幾個游戲或應用會導致該問題。3、如果是應用沖突,那么只要卸載這些app就可以解決了。二 ......
電腦端:1、大家可以點擊右邊鏈接進入網頁版的百度網盤,進入之后點擊“去登錄”。https://pan.baidu.com/2、之后正確的輸入賬號密碼進行登錄就好啦。手機端:1 ......
在填寫一些項目申請書中,總是免不了要選擇一些數字,但是在方框中如何插入數字,該怎么辦呢?那么下面就由學習啦小編給大家分享下word在方框里輸入數字的技巧, ......
8月15日消息 上周,有媒體報道前身為百度圖片的“榴蓮”APP含有大量不雅視頻內容被用戶舉報。對此,百度圖片官方進行了回應,百度圖片表示已經對報道中所涉及的“生吃旋風哥”等爭議內容進行了下線處理。 此外,百度...
一、N100對比intel i3 1、N100的跑分達到了147210分,這個數據可以達到i3的七代級別。 2、在跑分上也是超越了大部分的I3七代CPU,不過比I3八代要弱勢一些。 3 ......
WPS Office手機版怎么加橫線?很多用戶還不知道WPS Office手機版怎么加橫線,WPS Office手機版怎么加橫線,WPS Office手機版怎么打橫線,WPS Office手機版怎么弄 ......
迅雷前綴是什么 答:迅雷前綴是(magnet:?xt=urn:btih:)括號里的就是了。 我們只要在這段文字之后輸入后續的內容,就可以創建下載鏈接了。 1、磁力鏈接不基于文 ......
一、內容特權。 1、半價點播。 許多站內視頻都需要付費觀看,而大會員用戶可以直接半價享受; 購買成功后的48h內無限次觀看。有部分的內容是只限在中國大陸內觀 ......
1、首先打開小米運動的“實驗室功能”。 2、接著點擊“門卡模擬”。 3、然后點擊“我知道了”。 4、最后貼近就可以刷卡成功了。...
答:華為P系列: 華為p40,華為p40plus,華為p50,華為p50e,華為p60 華為mate系列: 華為mate40,華為mate50,華為mate50e,華為mate60 華為nova系列: 華為n ......
近期有用戶反映,電腦在更新Windows 11 Insider Preview 25252.1000后,出現了應用和已壓縮的文件點擊毫無反應,拖拽都不行,只能從開始菜單打開的情況,這是怎 ......
可見單元格就是不包括隱藏或者篩選篩選后隱藏起來的單元格區域。方法:篩選或隱藏數據,復制需要粘貼的值,在目標單元格區域左上角的第一個單元格處右擊,選擇【 ......
答:驍龍8+更好。 驍龍7+gen2實際上就是驍龍8+的低配版本。 在一些其他的核心架構方面都是保持一致的,比如說CPU的架構、GPU的架構等等。 驍龍7+和驍龍8+具體 ......
文/黎明 一場針對中國互聯網巨頭的反壟斷風暴正在醞釀,而且這次動真格了。 11月10日,國家市場監管總局發布《關于平臺經濟領域的反壟斷指南(征求意見稿)》,要加大對互聯網巨頭涉嫌壟斷的調查和監管。 ...
win11系統如何釋放掉系統默認保留的存儲空間?一般情況下,Windows會保留一些存儲空間,以便設備獲得良好性能和成功更新。但是當出現系統盤儲存空間不足時,我們會將幾個G的保留空間釋放出來,以解燃眉之急。本期教...
文件被win10系統誤報病毒自動刪除了如何進行恢復?有用戶下載了某些破解軟件卻被Win10系統誤認為是病毒文件而自動刪除,當然系統自帶殺毒軟件其實挺不錯的,就是有時候會誤報,大家遇到這種情況的時候就希望把誤刪的...
win11系統快速跳過聯網創建本地管理賬戶3種方法?現在市面上銷售的品牌筆記本和臺式機基本上都預裝Windows11家庭中文版正版操作系統,聯網后系統會自動激活。當用戶拿到新機器后還需要按照cortana(小娜)的提示一步...
羅技g304dpi燈顏色代表什么:1、藍色:這種情況是正常工作的顯示,如果說是常亮或者閃爍,那都沒有問題這是在正常工作呢。2、紅色:如果說是紅燈閃爍的話那就是 ......
答:在3DMark壓力測試當中,顯卡需要超高97%才能夠算合格,證明顯卡的穩定性是過關的。 1、一般的默認情況下在2500~3000分就算很正常的了。 2、分數越高說明顯卡 ......
1、先打開機頂盒進入主界面,并且使用遙控器打開設置。 2、然后選擇“賬號與安全”,并且進入。 3、最后往下面翻就可以看到“ADB調試”的選項,直接開啟就行了 ......
相信有非常多使用過筆記本的用戶都聽說過獨顯直連這個詞,但很多用戶并不了解獨顯直連是什么,又有什么用處,那么下面就和小編一起來看看什么是獨顯直連和開啟這 ......
答:中高端水平 i513500hx在處理器當中是處于一個中高端的水平。 i513500hx是第十一代酷睿處理器系列的一員,基礎頻率為2.4GHz,表現十分的不錯。 i513500hx介 ......
win11系統開機總是自動登錄OneDrive如何關閉?win11系統開機的時候,會自動啟動OneDrive,不想要啟動,該怎么操作呢?下面我們就來看看詳細的教程。 在OneDrive界面點小齒輪按鈕,下拉菜單中點【設置】。 單擊【...
1、首先確認手機型號是否支持無線充電功能,(可以在品牌官網找到手機信息查看)2、查看充電板的指示燈是否亮起。指示燈不亮檢查充電器、數據線、電源之間連接是 ......
背景 有時候我們需要獲取文件的創建時間。 例如: 我在研究 《xtrabackup 原理圖》的時候,想通過觀察確認 xtrabackup_log 是最早創建 并且是 最晚保存的 ......