1. 程式人生 > 其它 >01 Docker概述

01 Docker概述

Docker概述

Doker 容器技術,是一種虛擬化技術,虛擬機器也是屬於虛擬化技術

Docker 隔離,映象(最核心的環境 4m+ jdk + mysql )十分的小巧,秒級啟動

vm, linux centos原生映象(一個電腦!)隔離,需要開啟多個虛擬機器,幾個G

官網:https://docs.docker.com/

Docker的相關文件:前言 - Docker —— 從入門到實踐 (gitbook.io)

Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從 Apache2.0 協議開源。

Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。

容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone 的 app),更重要的是容器效能開銷極低。

比較 Docker 和 虛擬機器技術的不同:

  • 傳統虛擬機器,虛擬出一條硬體,執行一個完整的作業系統,然後在這個系統上安裝和執行軟體
  • 容器內的應用直接執行在 宿主機的核心中,容器是沒有自己的核心,也沒有虛擬我們的硬體,所以就輕便了
  • 每個容器內是互相隔離的,每個容器都有一個自己的檔案系統,互不影響

DevOps(開發,運維)

應用更快速的交付和部署

傳統:一堆幫助文件,安裝程式

Docker:打包映象釋出測試,一鍵執行

更便捷的升級和擴縮容

使用Docker 之後,我們部署應用和搭積木一樣

專案打包為一個映象,擴充套件 伺服器A 伺服器B

更簡單的系統運維

在容器化之後,我們的開發,測試環境都是高度一致的

更高效的計算機資源利用

Docker是核心級別的虛擬化,可以在一個機器上可以執行很多的容器例項!伺服器的效能可以被壓榨到極致

Docker 安裝

Docker的基本組成

映象(image):

Docker 映象 是一個特殊的檔案系統,除了提供容器執行時所需的程式、庫、資源、配置等檔案外,還包含了一些為執行時準備的一些配置引數(如匿名卷、環境變數、使用者等)

docker映象就好比是一個模板,可以通過這個模板建立容器服務,tomcat映象=>run=>tomcat01容器(提供伺服器),通過這個映象可以建立多個容器(最終服務執行或者專案執行就是在容器中的)

容器(container):

Docker 利用 容器技術,獨立執行一個過著一組應用,通過映象來建立的。映象是靜態的定義,容器是映象執行時的實體。

容器可以啟動,停止,刪除,基本命令!

目前就可以把這個容器理解為就是一個簡易的linux系統,專案

倉庫(repository):

倉庫就是存放映象的地方!

倉庫分為公有倉庫和私有倉庫!

Docker Hub(預設是國外的)

阿里雲都有容器伺服器(配置映象加速!)

安裝

環境準備

  1. 需要會一點點的 Linux的基礎
  2. CentOS7
  3. 使用 XShell 連線遠端伺服器進行操作

幫助文件:

安裝

# 1、解除安裝舊的版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
#2、需要的安裝包
 yum install -y yum-utils
 
#3、設定映象的倉庫
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo #預設是從國外的
    
# 推薦使用阿里雲的映象
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 更新yum軟體包索引
yum makecache fast #centos8 不用加fast
    
#4、安裝 docker相關的  docker-ce 社群版  ee 企業版
yum install docker-ce docker-ce-cli containerd.io

#5、啟動 docker
systemctl start docker

#6、使用docker version  是否安裝成功
# 7、
docker run hello-world

8、檢視一下下載的這個 hello-world 映象

[root@vdevops /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    feb5d9fea6a5   2 months ago   13.3kB

阿里雲映象加速

配置使用

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://0enfyjgl.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Run的流程

底層原理

Docker是怎麼工作的

Docker 是一個 Client - Server 結構的系統,Docker的守護程序執行在主機上,通過Socket從客戶端訪問!

DockerServer 接收到 Docker-Client 的指令,就會執行這個命令

Docker 為什麼比 虛擬機器快

1、Docker 有著比虛擬機器更少的抽象層

2、docker 利用的是宿主機的核心,vm 需要是 Guest OS

新建一個容器的時候,docker不需要和虛擬機器一樣重新載入一個作業系統核心,避免引導