CentOS 7.5 安裝Docker 教程

来源:https://www.cnblogs.com/stormlong/archive/2019/05/20/10863061.html
-Advertisement-
Play Games

Docker簡介 Docker是一個開源的容器引擎,它有助於更快地交付應用。Docker可將應用程式和基礎設施層隔離,並且能將基礎設施當作程式一樣進行管理。 使用Docker可更快地打包、測試以及部署應用程式,並可以縮短從編寫到部署運行代碼的周期。 Docker的優點如下: 1、簡化程式 Docke ...


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 Registry可分為公有Docker Registry和私有Docker Registry。最常用的Docker Registry莫過於官方的Docker Hub,這也是預設的Docker Registry。Docker Hub上存放著大量優秀的鏡像,我們可使用Docker命令下載並使用。

 

Docker 的安裝

 Docker是一個開源的商業產品,有兩個版本:社區版(Community Edition,縮寫為 CE)和企業版(Enterprise Edition,縮寫為 EE)。企業版包含了一些收費服務,個人開發者一般用不到。下麵的介紹都針對社區版。

 Docker CE的安裝請參考官方文檔,我們這裡以CentOS為例

 

1、Docker要求 CentOS 系統的內核版本高於3.10

通過uname -r 命令查看你當前的內核版本

# uname -r

查看操作系統版本

# cat /etc/redhat-release

 

2、卸載舊版本(如果安裝過舊版本的話)

# yum remove docker  docker-common docker-selinux docker-engine

 

3、查看 yum 源地址

# yum repolist

 

4、設置yum源,並更新 yum 的包索引

# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# yum makecache fast

  

5、可以查看所有倉庫中所有docker版本,並選擇特定版本安裝

# yum list docker-ce --showduplicates | sort -r

6、安裝docker

# yum install docker-ce  #由於repo中預設只開啟stable倉庫,故這裡安裝的是穩定版18.03.1

# yum install <FQPN>  # 例如:yum -y install docker-ce-18.03.1.ce

 

7、啟動並加入開機啟動

# systemctl start docker 

# systemctl enable docker

 

8、驗證安裝是否成功(有client和service兩部分表示docker安裝啟動都成功了)

# docker version

9、卸載docker

# yum -y remove docker-engine

 

Docker常用命令

 鏡像相關命令

1、搜索鏡像

可使用docker search命令搜索存放在Docker Hub中的鏡像。執行該命令後,Docker就會在Docker Hub中搜索含有 tomcat 這個關鍵詞的鏡像倉庫。

以上列表包含五列,含義如下:

- NAME:鏡像倉庫名稱。

- DESCRIPTION:鏡像倉庫描述。

- STARS:鏡像倉庫收藏數,表示該鏡像倉庫的受歡迎程度,類似於 GitHub的 stars0

- OFFICAL:表示是否為官方倉庫,該列標記為[0K]的鏡像均由各軟體的官方項目組創建和維護。

- AUTOMATED:表示是否是自動構建的鏡像倉庫。

2、下載鏡像

使用命令docker pull命令即可從Docker Registry上下載鏡像,執行該命令後,Docker會從 Docker Hub中的 tomcat倉庫下載最新版本的 tomcat鏡像。如果要下載指定版本則在tomcat後面加冒號指定版本,例如:docker pull tomcat:7

# docker pull tomcat:7

3、列出鏡像

使用docker images命令即可列出已下載的鏡像

# docker images

以上列表含義如下

- REPOSITORY:鏡像所屬倉庫名稱。

- TAG:鏡像標簽。預設是 latest,表示最新。

- IMAGE ID:鏡像 ID,表示鏡像唯一標識。

- CREATED:鏡像創建時間。

- SIZE: 鏡像大小。

4、刪除本地鏡像

使用docker rmi命令即可刪除指定鏡像

# docker rmi tomcat:7

 

容器相關命令

 1、新建並啟動容器

使用以下docker run命令即可新建並啟動一個容器,該命令是最常用的命令,它有很多選項,下麵將列舉一些常用的選項。

-d選項:表示後臺運行

-p選項:指定埠映射,

  -- hostPort:containerPort

# docker run -d -p 8080:8080 tomcat:7

 

這樣就能啟動一個 tomcat 容器。在本例中,為docker run添加了兩個參數,含義如下:

-d 後臺運行

-p 宿主機埠:容器埠 

這裡是把 容器的8080 埠映射到 虛擬機的8080埠,通過虛擬機自帶的瀏覽器 訪問 127.0.0.1:8080 或者 物理機訪問 虛擬機的ip:8080 (192.168.126.128:8080)也可以訪問,都是一個意思。

訪問http://Docker宿主機 IP:8080/,將會看到tomcat的主界面如下:

 

 需要註意的是,使用docker run命令創建容器時,會先檢查本地是否存在指定鏡像。如果本地不存在該名稱的鏡像, Docker就會自動從Docker Hub下載鏡像並啟動一個 Docker容器。

 

2、列出容器

用docker ps命令即可列出 正在運行中的容器

# docker ps

如需列出所有容器(包括已停止的容器),可使用-a參數。該列表包含了7列,含義如下

 

- CONTAINER_ID:表示容器 ID。

- IMAGE:表示鏡像名稱。

- COMMAND:表示啟動容器時運行的命令。

- CREATED:表示容器的創建時間。

- STATUS:表示容器運行的狀態。UP表示運行中, Exited表示已停止。

- PORTS:表示容器對外的埠號。

- NAMES:表示容器名稱。該名稱預設由 Docker自動生成,也可使用 docker run命令的--name選項自行指定。

3、停止容器

使用 docker stop命令,即可停止容器

# docker stop 4dbf26d1624d

其中 4dbf26d1624d 是容器 ID,當然也可使用 docker stop容器名稱來停止指定容器

 4、啟動已停止的容器

使用docker run命令,即可新建並啟動一個容器。對於已停止的容器,可使用 docker start命令來啟動

# docker start 4dbf26d1624d

5、查看容器日誌

# docker container logs 4dbf26d1624d

 

6、進入容器

使用docker exec命令用於進入一個正在運行的docker容器。如果docker run命令運行容器的時候,沒有使用-it參數,就要用這個命令進入容器。一旦進入了容器,就可以在容器的 Shell 執行命令了

# docker exec -it 4dbf26d1624d /bin/bash

 退出容器  

# exit

7、刪除容器

使用docker rm命令即可刪除指定容器

# docker rm 4dbf26d1624d 

該命令只能刪除已停止的容器,如需刪除正在運行的容器,可使用-f參數

 

Docker虛擬化原理

傳統虛擬化和容器技術結構比較:

傳統虛擬化技術是在硬體層面實現虛擬化,增加了系統調用鏈路的環節,有性能損耗;

容器虛擬化技術以共用Kernel的方式實現,幾乎沒有性能損耗。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 文章大綱 一、高級指令二、練習題三、學習資料下載四、參考文章 一、高級指令 1. hostname指令 作用:操作伺服器的主機名(讀取、設置)語法1:#hostname 含義:表示輸出完整的主機名語法2:#hostname -f 含義:表示輸出當前主機名中的FQDN(全限定功能變數名稱) 2. id指令 作 ...
  • 文章大綱 一、指令與選項二、基礎指令(重點)三、進階指令(重點)四、學習資料下載五、參考文章 一、指令與選項 什麼是Linux的指令?指在Linux終端(命令行)中輸入的內容就稱之為指令。 一個完整的指令的標準格式:Linux通用的格式 一個指令可以包含多個選項操作對象也可以是多個 例如:需要讓張三 ...
  • 什麼是操作系統? 操作系統(Operating System,OS)是控制應用程式執行和充當硬體系統和應用程式之間的界面的軟體。 操作系統的目標 方便性、有效性、可擴充性、開放性。 操作系統的作用 OS作為用戶與電腦硬體系統之間的介面 如圖所示,用戶可以通過命令方式、系統調用和圖標 視窗方式實現與 ...
  • 話不多說,直接進入正題 第一步查看是否能ping通,第二步就是掃描埠,開放了埠才能進行攻擊 linux進入msfconsole,搜索03_026 等待一會,返回漏洞的全名,exploit是一個攻擊模塊 接下來就是使用這個漏洞(在linux里複製快捷鍵是ctrl+shift+c,粘貼快捷鍵是ctr ...
  • 1.當執行一個指令的時候,舉例來說【ls】,系統會依照PATH的設定去每個PATH定義的目錄下搜尋文件名為ls的可執行文件,如果在PATH定義的目錄中含有多個文件名為ls的可執行文件,那麼先搜尋到的同名指令先被執行! 2.使用echo $PATH可以查看那些目錄被定義了。echo 有【顯示、印出】的 ...
  • 文章大綱 一、Linux發展史二、Linux系統的安裝三、Linux系統的文件四、學習資料下載五、參考文章 一、Linux發展史 1. Linux前身-Unix 1968年 Multics項目MIT、Bell實驗室、美國通用電氣有限公司走到了一起,致力於開發Multics項目。到後期由於開發進度不是 ...
  • 基本網路拓撲圖 1. 準備階段。配置雲主機,模擬簡單的ssh登錄爆破入侵行為 步驟一:登錄阿裡雲管理控制台。打開雲主機。 步驟二:打開VMware,將kali虛擬機的網卡模式設置為NAT,打開kali。打開終端,測試ping雲主機,需成功ping通,如下圖所示 步驟三:通過SSH訪問雲主機,通過ro ...
  • stm32F4系列DSP和FPU指令高性能的MCU-arm Cortex基於M4 STM32F4系列MCU利用ST的NVM技術和ART加速器™達到了業界最高的測試分數為基礎的Cortex-M微控制器具有高達225 DMIPS / 608 CoreMark以高達180 MHz的工作頻率從快閃記憶體執行。 通 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...