天天看點

Docker(四)Image、Container

一、Image鏡像

Docker把應用程式及其依賴,打包在image檔案裡面。隻有通過這個檔案,才能生成Docker容器。image檔案可以看作是容器的模闆。Docker根據image檔案生成容器的執行個體。同一個image檔案,可以生成多個同時運作的容器執行個體。注意image檔案是隻讀的

二、Image的擷取

  • 第一種方式:Build from Dockerfile
  • 第二種方式:Pull from Registry

三、Image基本指令

docker image ls

-> 檢視目前docker service中的所有image

docker history [IMAGE ID]

-> 檢視該image的分層

docker run [IMAGE NAME | IMAGE ID]

-> 建立新的容器并運作command,這個command是image中的CMD指令

注意:

docker run ubuntu

會預設運作latest版本,

docker run ubuntu:14.04

會運作指定版本

四、Container容器

  • container是通過image建立的
  • 在image layer(隻讀)之上建立了一個container layer(可讀、可寫)
    Docker(四)Image、Container
  • image負責App的儲存和分發,container負責運作App

五、Container基本指令

docker container ls

-> 列出目前正在運作的container

docker container ls -a

-> 列出所有狀态的container(包括正在運作的、已經退出的)

注意:使用

docker run [IMAGE NAME]

指令運作容器,容器執行完command後會直接退出。

互動式運作容器的指令:

docker run -it [IMAGE NAME]

例如:

Docker(四)Image、Container

可以看到進入到了作業系統裡面了,也就是說現在産生了一個up狀态的container。

docker container stop [CONTAINER ID]

-> 退出容器

docker container rm [CONTAINER ID]

-> 移除容器

docker rm [CONTAINER ID]

-> 移除容器(簡化指令),效果同上

docker container ls -aq

-> 列出所有containerId

docker rm $(docker container ls -aq)

-> 批量移除container

docker rm $(docker container ls -f 'status=exited' -aq)

-> 按過濾條件’status=exited’,批量删除container

六、建構自己的鏡像

場景:centos鏡像中沒有安裝vim,現在需要制作一個基于centos鏡像并安裝好vim的鏡像。

  • first,建立一個Dockerfile檔案,裡面的内容如下:
# 表示base image為centos,如果沒有base image那麼需寫成FROM scratch 
FROM centos
RUN yum install -y vim
           
  • second,利用build指令建構鏡像:
docker build -t cherry-peng/centos-vim-new .
           

-t

後面參數表示鏡像的名稱和tag,tag不寫預設latest

.

為Dockerfile檔案的

PATH

參數,即表示目前目錄下的Dockerfile。