Docker安装和helloworld
生活随笔
收集整理的這篇文章主要介紹了
Docker安装和helloworld
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
0.基本簡介(想直接實操,直接跳過去看1就好)Docker 在容器的基礎上,進行了進一步的封裝,從文件系統、網絡互聯到進程隔離等等,極大的簡化了容器的創建和維護。使得 Docker 技術比虛擬機技術更為輕便、快捷。傳統虛擬機技術是虛擬出一套硬件后,在其上運行一個完整操作系統,在該系統上再運行所需應用進程;而容器內的應用進程直接運行于宿主的內核,容器內沒有自己的內核,而且也沒有進行硬件虛擬。因此容器要比傳統虛擬機更為輕便。優勢更高效的利用系統資源、更快速的啟動時間、一致的運行環境、持續交付和部署、更輕松的遷移、更輕松的維護和擴展理解鏡像、容器、倉庫Docker 鏡像:Docker 鏡像是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。鏡像不包含任何動態數據,其內容在構建之后也不會被改變。因為鏡像包含操作系統完整的 root 文件系統,其體積往往是龐大的,因此在Docker 設計時,就充分利用 Union FS 的技術,將其設計為分層存儲的架構。所以嚴格來說,鏡像并非是像一個 ISO 那樣的打包文件,鏡像只是一個虛擬的概念,其實際體現并非由一個文件組成,而是由一組文件系統組成,或者說,由多層文件系統聯合組成。鏡像構建時,會一層層構建,前一層是后一層的基礎。每一層構建完就不會再發生改變,后一層上的任何改變只發生在自己這一層。比如,刪除前一層文件的操作,實際不是真的刪除前一層的文件,而是僅在當前層標記為該文件已刪除。在最終容器運行的時候,雖然不會看到這個文件,但是實際上該文件會一直跟隨鏡像。因此,在構建鏡像的時候,需要額外小心,每一層盡量只包含該層需要添加的東西,任何額外的東西應該在該層構建結束前清理掉。分層存儲的特征還使得鏡像的復用、定制變的更為容易。甚至可以用之前構建好的鏡像作為基礎層,然后進一步添加新的層,以定制自己所需的內容,構建新的鏡像。Docker 容器:鏡像( Image )和容器( Container )的關系,就像是面向對象程序設計中的類 和 實例 一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啟動、停止、刪除、暫停等。容器的實質是進程,但與直接在宿主執行的進程不同,容器進程運行于屬于自己的獨立的 命名空間。因此容器可以擁有自己的 root 文件系統、自己的網絡配置、自己的進程空間,甚至自己的用戶 ID 空間。容器內的進程是運行在一個隔離的環境里,使用起來,就好像是在一個獨立于宿主的系統下操作一樣。這種特性使得容器封裝的應用比直接在宿主運行更加安全。按照 Docker 最佳實踐的要求,容器不應該向其存儲層內寫入任何數據,容器存儲層要保持無狀態化。所有的文件寫入操作,都應該使用 數據卷(Volume)、或者綁定宿主目錄,在這些位置的讀寫會跳過容器存儲層,直接對宿主(或網絡存儲)發生讀寫,其性能和穩定性更高。Docker Registry鏡像構建完成后,可以很容易的在當前宿主機上運行,但是,如果需要在其它服務器上使用這個鏡像,我們就需要一個集中的存儲、分發鏡像的服務,DockerRegistry 就是這樣的服務。一個 Docker Registry 中可以包含多個 倉庫( Repository );每個倉庫可以包含多個 標簽( Tag );每個標簽對應一個鏡像。安裝使用docker 我是windows上用VM虛擬機安裝的ubuntu18.04,之后的筆記是基于這個系統的。1.windows上安裝vmware最新版本https://www.vmware.com/2.下載ubuntu鏡像https://ubuntu.com/download/alternative-downloads3.虛擬機上安裝系上面的鏡像,嘗試幾次失敗,顯示end Kernel panic,解決辦法是在安裝鏡像的時候直接 選擇自定義安裝,選擇兼容性6.5-7.x (什么都設置好了安裝過程耐心等幾分鐘就好)安裝過程中有疑問的就照這個這個做:https://www.cnblogs.com/alonely/p/10299802.html4.Docker分為CE和EE兩大版本。CE即社區版(免費,支持周期7個月),EE企業版,強調安全,付費,支持周期24個月。這里安裝使用CE版本。直接用最快的安裝方式 使用腳本自動安裝(用國內的安裝源)$ curl -fsSL get.docker.com -o get-docker.sh$ sudo sh get-docker.sh --mirror Aliyun5.啟動Docker CEsudo systemctl enable dockersudo systemctl start docker6.測試安裝是否成功(留意輸出This message shows your installation .......correctly就ok)docker run hello-world7.關于安全組的問題,Docker命令會使用Unix socket與Docker引擎通訊。而只有root用戶和docker組的用戶才可以訪問Docker引擎的Unix socket。出于安全考慮,一般Linux上不會直接使用root用戶。因此,更好的做法是將需要使用docker的用戶加入docker用戶組。切換到root用戶(1)創建docker組 sudo groupadd docker (可能顯示已經創建過了)(2)然后把需要加入的用戶加入到這個用戶組 sudo usermod -aG docker $USER8.鏡像加速器國內從 Docker Hub 拉取鏡像有時會遇到困難,此時可以配置鏡像加速器。這里配置【Azure 中國鏡像 https://dockerhub.azk8s.cn】對于使用 systemd 的系統,請在 /etc/docker/daemon.json 中寫入如下內容(如果文件不存在請新建該文件)
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com"
]
}然后重啟服務sudo systemctl daemon-reloadsudo systemctl restart docker檢查加速器是否生效執行 $ docker info ,如果從結果中看到了如下內容,說明配置成功。Registry Mirrors:https://dockerhub.azk8s.cn/ps:如果你是遠程Xshell 鏈接上面創建的unbuntu的話可能遇到 SSH服務器拒絕了密碼,直接別連root用戶,如果非要鏈接root用戶就按照這個設置下
http://www.imooc.com/qadetail/65395
?
總結
以上是生活随笔為你收集整理的Docker安装和helloworld的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重新封装了一下NODE-MONGO 使其
- 下一篇: Docker镜像基本使用