Docker及其使用思維導圖

學習Docker的使用。

包括Docker的一些命令,Docker容器的使用,Docker鏡像的使用,Docker容器連接等內容。



相關文章:
Docker中文社區



Docker的架構

構建分發運行鏡像
構建分發運行鏡像

  • Client(客戶端):是Docker的用戶端,可以接受用戶命令和配置標識,並與Docker daemon通信。
  • Images(鏡像):是一個只讀模板,含創建Docker容器的說明,它與操作系統的安裝光盤有點像。
  • Containers(容器):鏡像的運行實例,鏡像與容器的關係類比面向對象中的類和對象。
  • Registry(倉庫):是一個集中存儲與分發鏡像的服務。最常用的Registry是官方的Docker Hub 。
    在這裏插入圖片描述

Docker deamon(Docker守護進程):

Docker deamon是一個運行在宿主機(DOCKER_HOST)的後臺進程。可通過Dokcer客戶端與之通信。

Client(Docker客戶端):

Docker客戶端是Docker的用戶界面,它可以接受用戶命令和配置標識,並與Docker daemon 通信。docker build等都是Docker的相關命令。

Images(Docker鏡像):

Docker鏡像是一個只讀模板,它包含創建Docker容器的說明。它和系統安裝光盤有點像——使用系統安裝光盤可以安裝系統,同理,使用Docker鏡像可以運行Docker鏡像中的程序。

Container(容器):

容器是鏡像可運行實例。鏡像和容器的關係有點類似於面向對象中,類和對象的關係。可通過Docker API或者CLI命令來啓停、移動、刪除容器。

Registry(註冊中心):

Docker Registry是一個集中存儲與分發鏡像的服務。構建完Docker鏡像後,就可在當前宿主機上運行。但如果想要在啓停機器上運行這個鏡像,就需要手動複製。此時可藉助Docker Registry來避免鏡像的手動複製。

一個Docker Registry可包含多個Docker倉庫,每個倉庫可包含多個鏡像標籤,每個標籤對應一個Docker鏡像。

Docker常用命令

搜索命令:docker search [OPTIONS] TERM

參數列表:
Name,shorthand Default Description
–filter,-f 根據指定條件過濾結果
–limit 25 搜索結果的最大條數
–no-trunc false 不截斷輸出,顯示完整的輸出

Name,shorthand Default Description
–filter,-f 根據指定條件過濾結果
–limit 25 搜索結果的最大條數
–no-trunc false 不截斷輸出,顯示完整的輸出

示例:docker search java

NAME DESCRIPTION STARS OFFICIAL AUTOMATED
java Java is a concurrent,… 1281 [OK]
anapsix/alpine-java Oracle Java 8(and 7),… 190 [OK]
  • NAME:鏡像倉庫名稱。
  • DESCRIPTION:鏡像倉庫描述。
  • STARS:鏡像倉庫收藏數,類似Git的Stars。
  • OFFICIAL:表示是否爲官方倉庫。
  • AUTOMATED:表示是否是自動構建的鏡像倉庫。

下載鏡像:docker pull

使用docker pull從Docker Registry上下載鏡像。
docker pull [OPTIONS] NAME [:TAG|@DIGEST]

Name,shorthand Default Description
–all-tags,-a false 下載所有標籤的鏡像
–disable-content-trust true 忽略鏡像的校驗

示例:docker pull java;docker pull reg.itmuch.com/java:7;(可以從指定Docker Registry中下載標籤爲7的Java鏡像)

列出鏡像:docker images

命令格式:docker images [OPTIONS] [REPOSITORY[:TAG]]

Name,shorthand Default Description
–all,-a false 列出本地所有的鏡像(包括中間鏡像層,默認情況下,過濾中間映像層)
–digests false 顯示摘要信息
–filter,-f 顯示滿足條件的鏡像
–format 通過Go語言模板文件展示鏡像
–no-trunc false 不截斷輸出,顯示完整的鏡像信息
–quiet,-p false 只顯示鏡像ID

示例:

docker images
docker images java
docker images java:8
docker images --digests
docker images --filter “dangling=true” #展示虛懸鏡像

執行該命令後,會看到類似如下表格:

REPOSITORY TAG IMAGE ID CREATED SIZE
java latest 861e95c114d6 4 weeks ago 643.1MB

該表格包含5列,含義如下:

  • REPOSITORY:鏡像所屬倉庫名稱
  • TAG:鏡像標籤。默認是latest,表示最新。
  • IMAGE ID:鏡像ID,表示鏡像唯一標識。
  • CREATED:鏡像創建時間。
  • SIZE:鏡像大小。

刪除本地鏡像:docker rmi

命令格式:docker rmi [OPTIONS] IMAGE [IMAGE…]

Name,shorthand Default Description
–force,-f false 強制刪除
–no-prune false 不移除該鏡像的過程鏡像,默認移除

示例1:刪除指定名稱的鏡像。

docker rmi hello-world
表示刪除hello-world這個鏡像

示例2:刪除所有鏡像

docker rmi -f $(docker images)

保存鏡像:docker save

命令格式:docker save [OPTIONS] IMAGE [IMAGE…]

Name,shorthand Default Description
–output,-o 輸出到文件,而非標準輸出

示例:

#將busybox保存爲busybox.tar
docker save busybox > busybox.tar
docker save --output busybox.tar busybox

加載鏡像:docker load

命令格式:docker load [OPTIONS]

Name,shorthand Default Description
–input,-i 從文件加載而非標準輸入
–quiet,-q false 靜默加載

示例:

#從busybox.tar 文件中加載鏡像
docker load < busybox.tar
docker load --input busybox.tar

構建鏡像:通過Dockerfile構建鏡像

命令格式:docker build [OPTIONS] PATH | URL | -
docker build命令參數

Name,shorthand Default Description
–add-host 添加自定義從host到IP的映射,格式爲(host:ip)
–build-arg 設置構建時的變量
–cache-from 作爲緩存源的鏡像
–cgroup-parent 爲容器指定可選的父cgroup
–compress false 使用gzip亞索構建上下文
–cpu-period 0 限制CPU CFS週期
–cpu-quota 0 限制CPU CFS配額
–cpu-shares,-c 0 CPU使用權重(相對權重)
–cpuset-cpus 指定允許執行的CPU(0-3,0,1)
–cpuset-mems-arg 指定允許執行的內存(0-3,0,1)
–disable-content-trust true 忽略校驗
–file,-f 指定Dockerfile的名稱,默認是PATH/Dockerfile
–force-rm false 刪除中間容器
–isolation 指定容器隔離技術
–label 爲鏡像設置元數據
–memory,-m 0 設置內存限制
–memory-swap 0 設置swap的最大值爲內存+swap,如果設置爲-1,表示不限swap
–network default 在構建期間設置RUN指定的網絡模式
–no-cache false 構建鏡像過程中不適用緩存
–pull false 總是嘗試去下載更新版本的鏡像
–quiet,-q false 靜默模式,構建成功後只輸出鏡像ID
–rm true 構建成功後立即刪除中間容器
–security-opt 安全選項
–shm-size 0 指定/dev/shm目錄的大小
–squash false [實驗]將構建的層壓縮成一個新的層
–stream [實驗]連接到服務器的流,用於協商構建上下文
–tag,-t 設置標籤,格式爲name:tag,其中tag可選
–target 設置構建時的目標構建階段
–ulimit 設置構建時的目標構建階段

示例:

docker build -t itmuch/some-repo:some-tag .

Docker容器常用命令

新建並啓動容器:docker run

使用docker run 命令即可新建並啓動一個容器。

Name,shorthand Default Description
–detach,-d 後臺運行容器,並打印容器ID
–punish-all,-p 隨機映射所有端口
–punish,-p 指定端口映射,該選項有以下四種格式:
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
–network 指定網絡模式,該選項有以下四種可選參數:
–network=bridge:默認選項,表示連接到默認的網橋
–network=host:容器使用宿主機的網絡
–network=container:NAME_or_ ID:告訴Docker讓新建的容器使用已有容器的網絡配置
–network=none:不配置該容器的網絡,用戶可自定義網絡配置

示例:

docker run -d -p 01:80 nginx
啓動一個Nginx容器,訪問http://Docker宿主機IP:91/就可以訪問。

docker run [-i -t -d -p -P -c] [--name]:在容器內運行一個應用程序
 -t :在新容器內指定一個僞終端或終端
 -i:允許你對容器內的標準輸入進行交互
 -d:以進程方式運行容器,讓容器在後臺運行
 -p:設置端口
 -P:將容器內部使用的網絡端口映射到我們使用的主機,就是讓我們訪問我們使用的主機就等同於訪問到容器內部
 -c:command,後面接命令
 --name container name:指定容器名字

列出容器:docker ps

命令格式:docker ps [OPTIONS]

Name,shorthand Default Description
–all,-a false 列出所有容器,包括未運行的容器。默認只展示運行的容器。
–filter,-f 根據條件過濾顯示內容
–format 通過Go語音模板文件展示鏡像
–last,-n -1 顯示最近創建的n個容器(包含所有狀態)
–latest,-l false 顯示最近創建的容器(包含所有狀態)
–no-trunc false 不截斷輸出
–quiert,-q false 靜默模式,只展示容器的ID
–size,-s false 顯示總文件大小

示例:docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
  • CONTAINER_ID:表示容器ID
  • IMAGE:表示鏡像名稱
  • COMMAND:表示啓動容器時運行的命令
  • CREATED:表示容器的創建時間
  • STATUS:表示容器運行的狀態。UP表示運行中,Exited表示已停止
  • PORTS:表示容器對外的端口號
  • NAME:表示容器名稱。該名稱默認由Docker自動生成,也可使用docker run命令的-name選項自行指定。

停止容器:docker stop

使用docker stop命令即可停止容器。
命令格式:docker stop [OPTIONS] CANTAINER [CANTAINER…]

Name,shorthand Default Description
–time,-t 10 強制停止容器前等待的時間,單位是s

示例:docker stop [容器ID]

強制停止容器:docker kill

可使用docker kill命令發送SIGKILL信號來強制停止容器。
命令格式:docker kill [OPTIONS] CONTAINER [CONTAINER…]

Name,shorthand Default Description
–signal,-s KILL 向容器發送一個信號

示例:
docker kill [容器ID]

啓動已停止的容器:docker start

使用docker run命令即可新建並啓動一個容器,對於已停止的容器,可使用docker start命令來啓動。
命令格式:docker start [OPTIONS] CONTAINER [CONTAINER…]

Name,shorthand Default Description
–attach,-a false 連接STDOUT/STDERR並轉發信號
–detach-keys 覆蓋斷開容器的關鍵順序
–interactive,-i false 連接容器的STDIN

示例:docker start [容器ID]

重啓容器:docker restart

可使用docker restart命令來重啓容器,該命令實際上是先執行了docker stop,然後執行了docker start。
命令格式:docker restart [OPTIONS] CONTAINER [CONIAINER…]

Name,shorthand Default Description
–time,-t 10 關閉容器前等待的時間,單位是s

進入容器:docker attach

某些場景下,可能需要進入運行中的容器。
使用docker attach進入容器;例如

docker attach [容器ID]

在很多場景下,使用docker attach命令並不方便。當多個窗口同時attach到同一個容器時,所有窗口都會同步顯示。同理,如果某個窗口發生阻塞,其他窗口也無法執行操作。

使用neenter進入容器;

使用docker exec命令進入容器;
示例:

docker exec -it 容器id /bin/bash

刪除容器:docker rm

docker rm 即可刪除指定容器;
命令格式:docker rm [OPTIONS] CONTAINER [CONTAINER…]

Name,shorthand Default Description
–force,-f false 通過SIGKILL信號強制刪除正在運行中的容器
–link,-l false 刪除容器間的網絡連接
–volumes,-v false 刪除與容器關聯的卷

示例1:刪除指定容器。

docker rm [容器ID]
該命令只能刪除已停止的容器,如需刪除正在運行的容器,可使用-f參數。

示例2:刪除所有容器

docker rm -f ${docker ps -a -q}

導出容器:docker export

使用docker export命令可將容器導出成一個壓縮包文件。
命令格式:docker export [OPTIONS] CONTAINER

Name,shorthand Default Description
–output,-o 將內容寫到文件而非標準輸出

示例:

將red容器到處城latest.tar文件
docker export red > latest.tar
docker export --output=“latest.tar” red

導入容器:docker import

使用docker import命令即可從歸檔文件導入內容並創建鏡像。
命令格式:

Name,shorthand Default Description
–change,-c 將Dockerfile指令應用到創建的鏡像
–message,-m 爲導入的鏡像設置提交信息

示例:

從nginx2.tar文件導入,並創建nginx鏡像
docker import nginx2.tar nginx

查看進程並幹掉進程

jps是jdk提供的一個查看當前java進程的小工具, 可以看做是JavaVirtual Machine Process Status Tool的縮寫。非常簡單實用。

命令格式:jps [options ] [ hostid ]

[options]選項 :

-q:僅輸出VM標識符,不包括classname,jar name,arguments in main method
-m:輸出main method的參數
-l:輸出完全的包名,應用主類名,jar的完全路徑名
-v:輸出jvm參數
-V:輸出通過flag文件傳遞到JVM中的參數(.hotspotrc文件或-XX:Flags=所指定的文件
-Joption:傳遞參數到vm,例如:-J-Xms512m

jps

在這裏插入圖片描述

jps –l:輸出主類或者jar的完全路徑名

在這裏插入圖片描述

jps –v :輸出jvm參數

在這裏插入圖片描述

jps –q :僅僅顯示java進程號

在這裏插入圖片描述

jps -mlv10.134.68.173

在這裏插入圖片描述

幹掉進程

kill - 9 表示強制殺死該進程;而 kill 則有侷限性,例如後臺進程,守護進程等;

kill -9 id:一般不加參數kill是使用15來殺,這相當於正常停止進程,停止進程的時候會釋放進程所佔用的資源;他們的區別就好比電腦關機中的軟關機(通過“開始”菜單選擇“關機”)與硬關機(直接切斷電源),雖然都能關機,但是程序所作的處理是不一樣的。

執行kill命令,系統會發送一個SIGTERM信號給對應的程序。SIGTERM多半是會被阻塞的。kill -9命令,系統給對應程序發送的信號是SIGKILL,即exit。exit信號不會被系統阻塞,所以kill -9能順利殺掉進程。

kill命令格式:
kill -Signal pid
pid是進程號,可以用 ps 命令查出
signal是發送給進程的信號,TERM(或數字9)表示“無條件終止”;
因此 kill - 9 表示強制殺死該進程;
而 kill 則有侷限性,例如後臺進程,守護進程等;

思維導圖

docker

docker常用命令:
常用Docker命令

一張圖總結 Docker 的命令

在這裏插入圖片描述

Docker運維流程圖

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章