Docker的架構原理和安裝以及基本管理(映象與容器的建立,刪除,匯入及匯出 )

八橘子發表於2020-11-25

一,Docker概述

1,Docker是什麼?

  • 是一種輕量級“虛擬機器”

  • 使用go語言開發的

  • 在linux容器裡執行應用的開源工具
    在這裡插入圖片描述

  • 為什麼docker容器能跨平臺實現?
    因為docker引擎,docker-ce的安裝引領

  • Docker三要素:容器,映象,倉庫

2,Docker與虛擬機器的區別

虛擬機器:啟動時間1-3分鐘,佔用的磁碟空間大,安全方面相對安全
容器:啟動時間毫秒,佔用的磁碟空間小,安全方面相對不安全(屬主系統共享核心資源)

虛擬機器:

工作基本原理如下圖所示
基本上就是程式及程式通過虛擬機器VMM平臺呼叫win10系統最底層的硬體環境來執行的一種方式。
在這裡插入圖片描述

容器:

工作基本原理如下:
是在作業系統的基礎通過docker引擎的支援來實現不同平臺的互動,並在容器上可以直接進行倉庫映象的上傳與載入。
在這裡插入圖片描述

3,Docker的使用場景

  • 打包應用程式簡化部署
  • 可脫離底層硬體任意遷移
  • 例如:伺服器從騰訊雲遷移到阿里雲

4,Docker的特點

  • 服務彼此間相互獨立
  • 服務可以靈活遷移

二,安裝Docker

1,Docker的核心概念及安裝方式

Docker核心概念
  • 映象:一個面向Docker容器引擎的只讀模板
  • 容器:從映象建立的執行例項
  • 倉庫:集中儲存映象的地方
centos安裝docker的兩種方式
  • 使用curl獲得docker的安裝指令碼進行安裝
  • 使用yum倉庫來安裝docker

2,安裝Docker(19版本)

以下安裝方式已經為優化過程:

2,1 安裝最新版Docker依賴環境(依賴包)

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


# yum-utils 提供了yum-config-manager
# device mapper 儲存驅動程式需要device-mapper-persistent-data 和 lvm2
# Device Mapper是linux2.6核心中支援邏輯卷管理的通用裝置對映機制,他為實現用於儲存資源管理的塊裝置驅動提供了一個高度模組化的核心架構

2.2 設定映象源

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo   //阿里雲映象源

yum install http://ftp.riken.jp/Linux/cern/centos/7/extras/x86_64/Packages/container-selinux-2.74-1.el7.noarch.rpm  //此映象源下載速度比較快並且不會缺失一些包

2,3安裝Docker引擎並設定為開機自動啟動

yum install -y docker-ce 
systemctl start docker
systemctl enable docker

2,3 檢查Docker版本檢視Docker服務

docker version

2.4關於docker的網橋橋接網口

首先所有的虛擬機器之間需要通過ens33來建立互動,而在容器內部,所有的映象都有各自的地址,與容器之間形成了一個小型的區域網,此時區域網想要與ens33 建立連線,所以就有了docker0的出現,docker0與ens33之間進行地址轉換,形成一個對映,這樣就能成功的建立起連線了
如下圖所示:

在這裡插入圖片描述

2.5 映象加速

tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://pl01jex2.mirror.aliyuncs.com"]
> }
> EOF

systemctl daemon-reload 重新載入配置檔案
systemctl restart docker  啟動

2.6 網路優化

方便以後配置環境中出現一些棘手難處理的問題進行網路優化:

vim /etc/sysctl.conf
sysctl -p
net.ipv4.ip_forward = 1
ervice network restart
systemctl restart docker

三, Docker映象建立與操作

1,Docker映象操作

(1)搜尋映象/檢視映象

docker search  映象名

檢視本地有無映象

docker images

(2)下載/上傳映象

docker pull  映象名   //下載

docker push 映象名   //上傳

注:此時就開始使用aliyun的加速功能了

(3)檢視映象

docker images  映象名
docker inspect 映象ID號

(4)刪除映象

docker rmi  映象id

(5)如何給映象設定一個標籤

docker tag nginx:latest nginx:123  //設定
docker images | grep nginx  //檢視
docker rmi nginx:123   //刪除建立的標籤映象 

(6)映象匯出/匯入

docker save -o /opt/nginx nginx:latest   //將映象Nginx匯出到opt下並命名為nginx
此時映象匯出之後就可以考到u盤或者在其他平臺上上傳傳送了

docker load < /opt/nginx     //從opt下上傳映象到容器

(7) 上傳映象

docker login     //登入
docker tag nginx:latest abner/nginx:web   //使用者名稱/倉庫名:映象
docker push abner/nginx:web   //上傳

(8)建立容器

docker create -it nginx:latest /bin/bash
注:# i 讓容器的標準輸入保持開啟
     # -t 讓docker分配給一個偽終端,進行執行指令
docker ps -a    //此時建立之後檢視是created狀態
注:# -a 列出所有容器,包括未執行的容器
docker start 2e3b7fb88389    //開啟之後檢視是up狀態
docker ps    //檢視所有執行狀態的容器
docker run -itd centos:7 /bin/bash  //開啟並啟動容器
 docker exec -it 容器id /bin/bash  //進入容器
 yum install net-tools -y    //裝查ip的指令
 ifconfig                   //查詢容器ip
 exit                        //退出容器
 docker run nginx:latest /bin/bash -c ls /        //一次性執行完命令之後立馬關閉釋放    正常退出返回狀態碼為0,不正常返回不為0

(9)刪除容器

docker rm  容器id       //刪除容器之前必須先stop容器,不然的話刪除不了

 docker ps -a | awk '{print "docker rm "$1}' | bash   //批量刪除欄位1 的虛擬機器,刪除之前要先關閉容器

注意:

docker  stop  容器id   //這條指令為停止容器,當執行此命令之後返回狀態碼是不為0的,此時屬於異常退出,強行停止

在這裡插入圖片描述

(10)容器的匯出與匯入

docker export 容器匯出 > /opt/nginx_c   //將容器匯出到opt下面的並命名為nginx_c
cat nginx_c | docker import - nginx:web  //容器匯入實際上只是生成映象,而不會建立容器  ,此時匯入之後應該去映象裡面檢視

相關文章