初識Docker

      網友投稿 722 2025-04-09

      初識docker


      萬物上云,虛擬化技術助力云計算蓬勃發展。僅以此文記錄docker學習歷程。

      為什么需要Docker?

      許多程序開發者經常會遇到這樣一個問題,A開發的軟件在B的機器上運行不了,因為軟件環境配置存在差異。為了解決這個問題,通用的方案是在安裝軟件時也將環境(Lib/Bin)給復制過來,保證軟件環境的整體結構。

      虛擬機(Virtual Machine,VM)技術是一種常見的解決方案。如下圖左邊部分所示,單個節點上可部署多個虛擬機來提升資源利用率。每個虛擬機含有自身的操作系統和軟件環境,并搭載多種類型的應用程序。虛擬機之間資源隔離,因此各虛擬機搭載的應用程序不會相互干擾。但是,虛擬機含有自己的OS,每創建一個虛擬機都要創建一個屬于該虛擬機的OS,單個OS將近占用GB級別內存空間(可想而知,內存開銷有多大),體積大、啟動慢、占用資源多。

      容器(Linux Container,LXC)技術則客服了虛擬機存在的缺點,在進程級別對資源進行隔離,如下圖右邊部分所示,每個容器不含有自身的OS。相對于虛擬機而言,容器體積更小,啟動更快、占用資源更少。

      初識Docker

      Docker是什么?

      Docker是Linux容器的一種封裝,提供簡單易用的容器使用接口,是目前最流行的Linux容器解決方案。Docker將應用程序與該程序的依賴環境,打包到一個文件中。運行這個文件就會生成一個虛擬容器。應用程序在容器里運行,就像在自己的物理機器上運行一樣。

      Docker提供一次性的環境,便于本地測試別人的軟件,部署、運行和刪除操作簡單便捷;提供彈性的云服務,隨開隨關,很適合動態伸縮服務場景;易于組件微服務架構,一臺機器上可以運行多個容器和多個服務,同時也提升物理節點的資源利用率。

      目前國內外大多數主流云計算服務廠商均采用Docker來部署自己的微服務架構,抓住時代的尾巴,現在上車還來得及。

      Docker核心組件

      Docker的核心組成部分包含下面幾個部分:

      image鏡像:就是上面提到的應用程序和其依賴的環境,可以理解成一個環境實體;

      container容器:image的實體,真正用來運行服務的載體(可以理解成image是一個類,而container則是對象,讓image動起來),可支持創建、啟動、停止、刪除和暫停等操作;

      repository倉庫:image停車場,用來保存image

      如圖所示,每個節點可部署多個Docker容器(可以理解成一個進程,只不過這個進程已經對運行環境進行封裝),容器依托于image創建運行。image鏡像依托于倉庫,若節點上所需的image不存在,則從倉庫里拉(pull)下來。

      Docker使用

      安裝Docker

      參考官方文檔https://docs.docker.com/。

      Docker基本操作指令

      #?獲取image docker?pull?ubuntu:14.08??????????????#?ubuntu是倉庫名稱,14.08是版本,兩者在一起用來唯一標記image #?啟動一個容器 docker?run?-it?ubuntu:14.08?/bin/bash????????#?-i:允許與STDIN交互,?-t:開個終端,?exit或者ctrl+D退出 #?后臺運行一個容器 docker?run?-itd?--name?myubuntu?ubuntu:14.08?/bin/bash????????#?--name:為容器命名 #?進入容器 docker?attach?myubuntu????????#?退出即停止容器 docker?exec?myubuntu????????#?在這里面退出,容器不會停止 #?查看后臺容器輸出 docker?logs?myubuntu #?查看所有容器 docker?ps #?停止一個容器 docker?stop?myubuntu??? #?刪除容器 docker?rm?-f?myubuntu docker?container?prune????????#?清楚所有已處于終止狀態的容器

      鏡像操作指令

      #?列出鏡像 docker?images #?獲取新的鏡像 docker?pull?ubuntu:14.08????????#?拉取鏡像到本地 #?查找鏡像 docker?search?ubuntu:14.08????????#?也可以在 #?刪除鏡像 docker?rmi?ubuntu:14.08 #?使用dockerfile定制鏡像 mkdir?myngix cd?myngix touch?dockerfile ------------?dockerfile?content?------------ FROM?nginx????????#?指定基礎鏡像,必備,第一條指令,Docker?Hub上還有很多其他官方鏡像,例如redis,mysql,mongo等 RUN?echo?'

      Hello,?Docker!

      '?>?/usr/share/nginx/html/index.html????????#?執行命令,盡量在一個RUN里完成多個操作來減少image的層數(每一個RUN需要一次commit操作來保存本次結果以構成新的鏡像,RUN越多,鏡像越臃腫) #?使用build指令根據dockerfile創建鏡像 docker?build?-t?myngix:0.1?.

      端口映射

      #?容器內部端口隨意映射到主機的高端口?-P docker?run?-d?-P?ubuntu:14.08?ping?8.8.8.8 #?內部端口綁定到指定的主機端口?-p docker?run?-d?-p?8080:80?ubuntu:14.08?ping?8.8.8.8 docker?run?-d?-p?127.0.0.1:8080:80?ubuntu:14.08?ping?8.8.8.8????????#?指定綁定的網絡地址 docker?run?-d?-p?127.0.0.1:8080:80/udp?ubuntu:14.08?ping?8.8.8.8????????#?默認走tcp協議,可更改為udp協議

      上面只是最基本的docker知識,后續還要加強學習!

      Docker 虛擬化

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

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

      上一篇:PDF如何設置頁面方向(pdf怎么設置頁面方向)
      下一篇:怎么去除底紋(美篇內容轉word文檔后怎么去除底紋)
      相關文章
      亚洲人成在线播放| 亚洲一区二区电影| 亚洲精品国产福利在线观看| 亚洲国产AV无码专区亚洲AV| 在线日韩日本国产亚洲| 国产成人精品日本亚洲专区| 亚洲国产成人精品女人久久久 | 亚洲av综合av一区二区三区| 亚洲久热无码av中文字幕| 亚洲熟妇成人精品一区| 亚洲中文字幕精品久久| 亚洲欧美日韩中文无线码| 亚洲国产高清国产拍精品| 亚洲AV无码AV日韩AV网站| 亚洲AV综合永久无码精品天堂| 男人的天堂av亚洲一区2区| 午夜亚洲WWW湿好爽| 亚洲?V乱码久久精品蜜桃| 亚洲日韩VA无码中文字幕| 亚洲日韩精品一区二区三区| 亚洲精品国产字幕久久不卡| 亚洲成AV人片在线观看无码| 亚洲电影中文字幕| 亚洲精品第一国产综合精品| 亚洲免费一级视频| 亚洲性色精品一区二区在线| 亚洲欧美在线x视频| 中文字幕亚洲天堂| 亚洲av无码乱码国产精品| 久久夜色精品国产噜噜噜亚洲AV| 亚洲视频免费播放| 亚洲男人天堂2022| 日韩国产精品亚洲а∨天堂免| 亚洲国产一区二区三区| 亚洲中文字幕久久精品无码喷水 | 亚洲线精品一区二区三区影音先锋 | 久久影院亚洲一区| 国产亚洲色婷婷久久99精品| 亚洲精品视频在线| 亚洲日本久久一区二区va| 亚洲国产高清国产拍精品|