Docker基本使用


目錄

1. docker簡介

2. docker安裝

3. docker應用場景

4. docker簡單使用(創建一個nginx容器)

1.1 docker簡介

1. 什么是docker

  • Docker 是應用最廣泛的開源容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中
  • 一種操作系統基本的虛擬化技術
  • 一種簡單的應用程序打包工具
  • 依賴Linux內核特性:Namespace(資源隔離) 和 Cgroup(資源限制)

  docker實質就像虛擬機一樣,就好像是一個具有獨立操作系統的真實機器 

# 虛擬機是有真正的linux內核的(C語言開發的程序),真實需要通過 .ios 文件安裝操作系統


# 而我們的docker共享linux宿主機內核(bin/etc等文件),只有一個linux文件系統

    注:每個容器擁有一套和宿主機完全隔離的文件系統(共用linux內核),程序在這個虛擬容器里運行,就好像在真實的物理機上運行一樣。

   容器

    1):容器是一個操作系統級別下的虛擬化技術,運行一個容器就行運行一個進程一樣

    2):容器依賴linux內核特性:Namespace(資源隔離)和Cgroups(資源限制)

  資源隔離:

    1):Linux Namespaces機制提供一種資源隔離方案,每個namespace看上去就像一個單獨的Linux系統。

    2):PID,IPC(進程通信),Network等系統資源不再是全局性的,而是屬於某個特定的Namespace。

    3):每個namespace下的資源對於其他namespace下的資源都是透明,不可見的。

    4):系統中可以同時存在兩個進程號為0,1,2的進程,由於屬於不同的namespace,所以它們之間並不沖突。

    5):而在用戶層面上只能看到屬於用戶自己namespace下的資源,例如使用ps命令只能列出自己namespace下的進程。

    6):這樣每個namespace看上去就像一個單獨的Linux系統。

  資源隔離:

    1):為了讓容器中的進程更加可控,Docker 使用 Linux cgroups 來限制容器中的進程允許使用的系統資源。

    2):可以在啟動容器是指定每個容器可以使用的 網絡、磁盤、CPU以及內存 等

  容器資源限制

1 '''1. 內存限額: 允許容器最多使用500M內存和100M的Swap,並禁用 OOM Killer '''
2 [root@linux-node4 diff]# docker run -d --name nginx03 --memory="500m" --memory-swap="600m" --oom-kill-disable nginx
3 
4 '''2. CPU限額:'''
5 [root@linux-node4 diff]# docker run -d --name nginx04 --cpus="1.5" nginx           # 允許容器最多使用一個半的CPU
6 [root@linux-node4 diff]# docker run -d --name nginx05 --cpus=".5" nginx            # 允許容器最多使用50%的CPU

2. docker思想

1. Docker的思想源於集裝箱,集裝箱解決了什么問題呢?

2. 在早期運輸貨物需要不同分類的船,例如運輸水果的船,運輸生活用品的船

3. 有了集裝箱后,在大船上,可以把貨物分類到不同的集裝箱中,水果一個集裝箱,生活用品一個集裝箱

4. 它們之間互不影響,只要把貨物封裝好集裝箱里,就可以把不同類的貨物一起運走。

5. 通過Docker logo也可以看出所以然來,Docker就像大船,集裝箱就是容器。

6. 一條鯨魚拖着若干個集裝箱的經典形象已經深入人心。

3. docker與虛擬機比較

  1. docker設計輕巧,部署遷移快,運行高效,按應用隔離,管理人員可以看到所有容器的內容。

  2. 虛擬機技術臃腫,需要先創建新的系統,按系統隔離,管理無法看到系統內部消息。

  舉例

    1)Docker就是手機中的各種APP,只需要一個系統就可以下載自己所需的應用

    2)虛擬化技術相當於蘋果手機安裝一個龐大軟件,這個軟件上安裝安卓系統、魅族系統等,每個系統上還要安裝各類應用。

      

 

       

4. docker解決的問題

  1. 高效的利用資源

  2. 單台機器得部署多個應用;

  3. 應用之間互相隔離(微服務);

  4. 應用之間不能發生資源搶占,每個應用只能使用事先注冊申請的資源。

5. docker架構

  1. Docker客戶端(Client): docker 命令行工具,用戶也可以通過 REST API 與服務器通信

  2. Docker服務器(Docker daemon): 服務器組件,以 Linux 后台服務的方式運行, Docker daemon 運行在 Docker host 上,負責創建、運行、監控容器,構建、存儲鏡像

  3. Docker鏡像(Image): 可將 Docker 鏡像看着只讀模板,通過它可以創建 Docker 容器

  4. 鏡像倉庫(Registry): Registry 是存放 Docker 鏡像的倉庫,Registry 分私有和公有兩種

  5. Docker容器(Container): Docker 容器就是 Docker 鏡像的運行實例

  

1.2 docker 安裝

1. 安裝依賴包

yum install -y yum-utils device-mapper-persistent-data lvm2

2. 添加Docker軟件包源(否則doker安裝的不是新版本)

yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

3. 安裝Docker CE

yum install -y docker-ce

4. 啟動Docker服務並設置開機啟動

systemctl start docker
systemctl enable docker

5. 測試docker是否安裝成功(hello-world是官方提供的一個測試鏡像)

docker run hello-world

6. 查看docker基本信息

docker info
docker version

1.3 docker 技術應用場景

1. 場景一:節省項目環境部署時間

  1)單項目打包   

    1. 每次部署項目到測試、生產等環境,都要部署一大堆依賴的軟件、工具,時間久,出錯概率大。

    2. Docker主要理念就是環境打包部署,可在任意Docker Engine運行。

    3. 我們只需要將每個項目環境打包到鏡像,push到鏡像倉庫,當有需要部署這個項目時,直接pull鏡像啟動容器,這個項目就可以訪問了!一次構建多次部署,一勞永逸。

  2)整套項目打包

    1. 比如有一個產品可以整套部署到客戶那里,以往都是派一名實施工程師到客戶那部署。

    2. 如果用了Docker,我們可以前期將這套項目封裝打包起來,實現一鍵部署,分分鍾鍾搞定,就不需要再派人過去了。比如官方的Docker Compose編排工具。

  3)新開源技術試用

    1. 有時,我們想調研一些開源項目,我們可以直接從公共鏡像倉庫pull項目官方做好鏡像啟動容器即可。

2. 場景二:環境一致性

  1. 項目在開發電腦本地運行沒問題,到了測試或生產環境就運行不起來。

  2. Docker將項目環境打包成鏡像,可以在任何Docker Engine部署

3. 場景三:持續集成

   1. 一個項目版本快速迭代的測試場景,需要一個合理的CI(持續集成)/CD(持續部署)環境支撐。

   2. CI/CD是一個周期性自動化項目測試流程,包括構建、部署、測試、發布等工作,很少需要人工干預。

   3. Docker通過項目鏡像構建和快速部署,打通測試環境與生產環境,高度保持多個環境之間一致性。

4. 場景四:微服務

    1. 微服務指盡可能細粒度拆分業務程序架構,由多個獨立服務組成業務系統。

    2. Docker容器作為這些獨立服務的部署單元,每個服務單獨部署到一個docker容器中。

 1.4. docker簡單使用(創建一個nginx容器)

 1 # 1、創建一個nginx容器
 2 docker run -it nginx
 3 
 4 # 2、查看docker運行的容器(可以獲取到這個容器的id)
 5 docker ps
 6 
 7 # 3、訪問這個容器
 8 # 進入這個nginx容器(進入的文件系統和宿主機是完全隔離的,有自己獨立的文件系統)
 9 docker exec -it 73877e65c07d bash
10 
11 # 4、查看當前容器的 IP
12 docker inspect 73877e65c07d   # 73877e65c07d是通過docekr ps查看到的容器ID
13 curl 172.17.0.2               # 測試這個nginx容器是否可以訪問

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM