天天看點

Docker筆記1 基礎概念和鏡像

基礎概念

開發環境deepin linux 15.11。安裝docker之後,執行指令:

sudo usermod -aG docker $USER_NAME
           

讓docker和目前使用者在一個組中,可以每次不用執行sudo指令了。

三個核心的概念:

  • 鏡像:類似虛拟機的鏡像,一個隻讀模闆。比如linux鏡像等
  • 容器:輕量級的沙箱,基于容器建立的一個運作執行個體
  • 倉庫:docker存放鏡像檔案的場所

容器是鏡像的一個運作時的狀态,鏡像是靜态的,容器是動态的。

docker的很多思想參考了git和github,可以 對比着來了解

Docker鏡像

docker容器運作時,需要從本地擷取對應的鏡像檔案。若果沒有,則去預設倉庫下載下傳。我們可以自定義倉庫的位置。

docker擷取對應的鏡像檔案:

image

是鏡像的名字,

NAME

是在遠端倉庫中鏡像的名字,

TAG

是對應的标簽,類似git上的tag。不指定tag會預設拉去

latest

版本,在服務端不建議這麼做。更加詳細的

pull

指令可以參考有關的手冊。

使用

images

指令可以檢視對應的

docker

資訊。一個執行個體:

docker pull zookeeper
docker images
           

之後終端顯示:

Docker筆記1 基礎概念和鏡像
  • REPOSITORY

    :鏡像所在倉庫
  • TAG

    :對應的

    TAG

    号,類似git中的

    tag

  • IMAGE ID

    :鏡像的唯一标志,就像我們git每次送出都會有對應的一個編
  • CREATED

    :鏡像的最後更新時間
  • SIZE

    :鏡像的大小

我們可以使用

tag

指令給我們本地的鏡像打一個

tag

,比如:

docker tag zookeeper:latest myzookeeper;latest
           

使用

inspect

檢視詳細的資訊,比如:

docker inspect zookeeper:latest
           

docker鏡像由多個層組成,可以使用

history

指令檢視層的資訊,比如:

docker history zookeeper:lastest
           

使用

search

指令搜尋鏡像,比如:

docker search zookeeper
           

具體參數參考手冊

使用

rmi

或者

image rm

指令删除鏡像,比如:

docker rmi zookeeper:latest
docker image rm zookeeper:latest
           

後者

tag

号可以替換成

id

使用

prune

指令清理遺留的臨時鏡像檔案,比如:

docker prune
           

基于已有的容器建立,基本的指令格式是:

比如,執行指令:

docker [container] commit -m "create container example" -a "erick" zookeeper:latest myZookeeper:0.1
           

也可以使用模闆檔案導入鏡像,比如:

cat ubuntu-18.04-x86_64-minimal.tar.gz | docker import - ubuntu:18.04
           

使用Dockerfile可以基于某個父鏡像建立新鏡像。比如:

FROM debian:stretch-slim

LABEL version="1.0" maintainer="docker user <[email protected]>"

RUN apt-get update && \
    apt-get install -y python3 && \
    apt-get clean &&
    rm -rf /var/lib/apt/lists/*
           

可以使用

save

load

指令導出和加載鏡像。

docker save -o ubuntu_18.04.tar ubuntu:18.04  # 導出鏡像
docker load -i ubuntu_18.04.tar # 加載鏡像到本地的docker
docker loac < ubuntu_18.04.tar # 同上
           

可以使用

docker push

指令上傳到指定倉庫,具體可以參考手冊。

總結

docker的鏡像是一個靜态的檔案,而且有不同的版本,這就類似于git的不同版本那樣,docker的鏡像是docker的基礎,需要理清基本概念。