Docker基礎與基本概念

jigsawecho發表於2024-09-07
  1. docker與傳統虛擬機器的架構對比

傳統的虛擬機器在宿主OS上執行Hypervisor, 在Hypervisor上執行虛擬作業系統如RHEL, CentOS等。應用App是執行在虛擬作業系統上的。

容器在宿主OS上執行Docker Engine,而應用App是直接執行在Docker Engine上的。容器上執行的App與宿主OS共享硬體資源,如CPU和記憶體。以VMware為例,即使是企業級的esxi虛擬化技術,和容器的執行效率比仍然有 5%~45% 的效能差異。

  1. docker的安裝

CentOS上執行如下命令安裝docker

yum install docker-ce

如果遇到網路問題無法下載,可以修改 /etc/docker/damon.json 新增如下映象連結

{
    "registry-mirrors": [
        "https://docker.rainbond.cc"
        "https://docker.1pnel.live"
    ]
}
  1. docker映象的組成

docker映象從下往上,有以下幾個部分組成

  • 可寫容器
  • 映象,製作的應用映象如Nginx, VIM等
  • 基礎映象rootfs,如ubuntu
  • 引導檔案系統boots,包含核心和容器組、名稱空間、裝置對映等

doker容器分映象層和容器層,映象層是隻讀的,容器層允許修改映象的整個副本。容器層使用寫時複製技術,資料寫入到掛載的宿主機資料卷中。

  1. 映象的製作

映象製作的dockerfile例項:

FROM centos
RUN yun -y install wget
RUN wget -O redis.tar.gz "https://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xzvf redis.tar.gz

以上執行會建立3層映象。可簡化為以下格式:

FROM centos
RUN yun -y install wget && wget -O redis.tar.gz "https://download.redis.io/releases/redis-5.0.3.tar.gz" && tar -xzvf redis.tar.gz

原則上一個容器執行一個應用。

  1. docker的一些命令

編譯docker映象

docker build -t nginx:v20

執行docker映象

docker run -itd -p 8000:80 nginx:v20

檢視宿主和容器的埠對映

iptables -t nat -L -n

檢視docker掛載的卷

docker volume ls

檢視docker網路

docker network ls

檢視docker裡程序

docker ps

相關文章