- docker與傳統虛擬機器的架構對比
傳統的虛擬機器在宿主OS上執行Hypervisor, 在Hypervisor上執行虛擬作業系統如RHEL, CentOS等。應用App是執行在虛擬作業系統上的。
容器在宿主OS上執行Docker Engine,而應用App是直接執行在Docker Engine上的。容器上執行的App與宿主OS共享硬體資源,如CPU和記憶體。以VMware為例,即使是企業級的esxi虛擬化技術,和容器的執行效率比仍然有 5%~45%
的效能差異。
- docker的安裝
CentOS上執行如下命令安裝docker
yum install docker-ce
如果遇到網路問題無法下載,可以修改 /etc/docker/damon.json
新增如下映象連結
{
"registry-mirrors": [
"https://docker.rainbond.cc"
"https://docker.1pnel.live"
]
}
- docker映象的組成
docker映象從下往上,有以下幾個部分組成
- 可寫容器
- 映象,製作的應用映象如Nginx, VIM等
- 基礎映象rootfs,如ubuntu
- 引導檔案系統boots,包含核心和容器組、名稱空間、裝置對映等
doker容器分映象層和容器層,映象層是隻讀的,容器層允許修改映象的整個副本。容器層使用寫時複製技術,資料寫入到掛載的宿主機資料卷中。
- 映象的製作
映象製作的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
原則上一個容器執行一個應用。
- 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