Docker日常工作常用命令

2022-09-03 21:02:47

容器生命週期管理

Docker建立新容器並執行[run]

語法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS說明:

  • -a stdin: 指定標準輸入輸出內容型別,可選 STDIN/STDOUT/STDERR 三項;
  • -d: 後臺執行容器,並返回容器ID;
  • -i: 以互動模式執行容器,通常與 -t 同時使用;
  • -t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;
  • --name="nginx-lb": 為容器指定一個名稱;
  • --dns 8.8.8.8: 指定容器使用的DNS伺服器,預設和宿主一致;
  • --dns-search example.com: 指定容器DNS搜尋域名,預設和宿主一致;
  • -h "mars": 指定容器的hostname;
  • -e username="ritchie": 設定環境變數;
  • --env-file=[]: 從指定檔案讀入環境變數;
  • --cpuset="0-2" or --cpuset="0,1,2": 繫結容器到指定CPU執行;
  • -m :設定容器使用記憶體最大值;
  • --net="bridge": 指定容器的網路連線型別,支援 bridge/host/none/container: 四種型別;
  • --link=[]: 新增連結到另一個容器;
  • --expose=[]: 開放一個埠或一組埠;

範例:

使用docker映象nginx:latest以後臺模式啟動一個容器,並將容器命名為yyflightNginx:

docker run --name yyflightNginx -d nginx:latest

執行完後可使用docker ps驗證容器是否成功執行

Dcoker start/stop/restart

docker start 容器名:啟動一個或多少已經被停止的容器

docker start yyflightNginx

docker stop 容器名:停止一個執行中的容器

docker stop yyflightNginx

 

docker restart 容器名:重啟容器

docker restart yyflightNginx

Docker殺死執行中的容器[kill]

docker kill :殺掉一個執行中的容器。

範例:

殺死執行中的nginx容器yyflightNginx

docker kill yyflightNginx

Docker刪除一個或者多個容器[rm]

語法:docker rm [OPTIONS] CONTAINER [CONTAINER...]

範例:

1、強制刪除容器 yyflightNginx001、yyflightNginx02

docker rm -f  yyflightNginx001、yyflightNginx02

2、移除容器nginx01對容器db01的連線,連線名db

docker rm -l db 

3、刪除容器nginx01,並刪除容器掛載的資料卷

docker rm -v nginx01

Docker建立新容器但不啟用[create]

語法:docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

範例:

使用docker映象nginx:latest建立一個容器,並將容器命名為yyflightNginx001

docker create --name yyflightNginx001 nginx:latest

Docker容器暫停和恢復[pause/unpause]

docker pause :暫停容器中所有的程序

暫停資料庫容器db01提供服務:

docker pause db01

docker unpause :恢復容器中所有的程序

恢復資料庫容器db01提供服務:

docker unpause db01

容器操作

檢視本地正在執行的容器[ps]

語法:docker ps [OPTIONS]

OPTIONS說明:

  • -a :顯示所有的容器,包括未執行的。
  • -f :根據條件過濾顯示的內容。
  • --format :指定返回值的模板檔案。
  • -l :顯示最近建立的容器。
  • -n :列出最近建立的n個容器。
  • --no-trunc :不截斷輸出。
  • -q :靜默模式,只顯示容器編號。
  • -s :顯示總的檔案大小。
docker ps

Docker檢視容器中執行的程序資訊[top]

docker top:檢視容器中執行的程序資訊,支援 ps 命令引數。

範例:

檢視容器yyflightNginx的程序資訊:

docker top yyflightNginx

Dcoker獲取容器的紀錄檔[logs]

語法: docker logs [OPTIONS] CONTAINER

OPTIONS說明:

  • -f : 跟蹤紀錄檔輸出
  • --since :顯示某個開始時間的所有紀錄檔
  • -t : 顯示時間戳
  • --tail :僅列出最新N條容器紀錄檔

範例:

跟蹤檢視容器yyflightNginx的紀錄檔輸出(幫你檢視這個容器在某個時間段被執行了什麼操作):

docker logs -f yyflightNginx

Docker列出指定的容器的埠對映[port]

docker port :列出指定的容器的埠對映,或者查詢將PRIVATE_PORT NAT到面向公眾的埠。

範例:

檢視容器yyflightNginx的埠對映情況:

docker port yyflightNginx

Docker info|version|status

Docker版本資訊檢視[version]

語法:docker version [OPTIONS]

OPTIONS說明:

  • -f :指定返回值的模板檔案。
docker version

檢視Docker系統資訊[info]

顯示 Docker 系統資訊,包括映象和容器數。

docker info

Docker服務狀態檢視[systemctl status]

systemctl status docker

Docker本地映象管理

檢視本地映象列表[images]

語法:docker images [OPTIONS] [REPOSITORY[:TAG]]

OPTIONS說明:

  • -a :列出本地所有的映象(含中間映像層,預設情況下,過濾掉中間映像層);
  • --digests :顯示映象的摘要資訊;
  • -f :顯示滿足條件的映象;
  • --format :指定返回值的模板檔案;
  • --no-trunc :顯示完整的映象資訊;
  • -q :只顯示映象ID。
docker images

Docker刪除本地一個或多少映象[rmi]

語法:docker rmi [OPTIONS] IMAGE [IMAGE...]

OPTIONS說明:

  • -f :強制刪除;
  • --no-prune :不移除該映象的過程映象,預設移除;

範例:

強制刪除本地映象nginx/ubuntu

docker rmi -f nginx/ubuntu

Docker給本地映象打標籤[tag]

docker tag : 標記本地映象,將其歸入某一倉庫。

語法:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

Docker映象打標籤在我們的實際開發中非常常用,比如說公司的專案每次開發都會發佈一個版本然後我們通過打標籤來區分不同版本,如果以後想要回滾版本就可以使用指定的標籤的映象來建立容器。

範例:

1、比如說我本地現在有一個nginx的映象:

docker images

2、我對nginx進行了開發,釋出第一個版本,我就可以通過對這個版本打標籤,打完標籤後生成新的映象:

docker tag nginx nginx:v001

Docker使用Dockerfile建立映象[build]

語法:docker build [OPTIONS] PATH | URL | -

OPTIONS說明:

  • --build-arg=[] :設定映象建立時的變數;
  • --cpu-shares :設定 cpu 使用權重;
  • --cpu-period :限制 CPU CFS週期;
  • --cpu-quota :限制 CPU CFS配額;
  • --cpuset-cpus :指定使用的CPU id;
  • --cpuset-mems :指定使用的記憶體 id;
  • --disable-content-trust :忽略校驗,預設開啟;
  • -f :指定要使用的Dockerfile路徑;
  • --force-rm :設定映象過程中刪除中間容器;
  • --isolation :使用容器隔離技術;
  • --label=[] :設定映象使用的後設資料;
  • -m :設定記憶體最大值;
  • --memory-swap :設定Swap的最大值為記憶體+swap,"-1"表示不限swap;
  • --no-cache :建立映象的過程不使用快取;
  • --pull :嘗試去更新映象的新版本;
  • -q :安靜模式,成功後只輸出映象ID;
  • --rm :設定映象成功後刪除中間容器;
  • --shm-size :設定/dev/shm的大小,預設值是64M;
  • --ulimit :Ulimit設定。

範例:

使用當前目錄的Dockerfile建立映象:

docker build -t w3xue/ubuntu:v1 . 

使用URL github.com/creack/docker-firefox 的 Dockerfile 建立映象:

docker build github.com/creack/docker-firefox

Dcoker檢視指定映象的建立歷史[history]

語法docker history [OPTIONS] IMAGE

OPTIONS說明:

  • -H :以可讀的格式列印映象大小和日期,預設為true;
  • --no-trunc :顯示完整的提交記錄;
  • -q :僅列出提交記錄ID。

實列:

檢視容器nginx的建立歷史記錄:

docker history nginx

映象倉庫相關

登入/退出Docker映象倉庫[login/logout]

docker login : 登入到一個Docker映象倉庫,如果未指定映象倉庫地址,預設為官方倉庫 Docker Hub

docker logout : 登出一個Docker映象倉庫,如果未指定映象倉庫地址,預設為官方倉庫 Docker Hub

語法:

docker login [OPTIONS] [SERVER]
docker logout [OPTIONS] [SERVER]

OPTIONS說明:

  • -u :登陸的使用者名稱
  • -p :登陸的密碼

範例:

登陸到Docker Hub:

docker login -u 使用者名稱 -p 密碼

登出Docker Hub:

docker logout

Docker從映象倉庫中拉取或者更新指定映象[pull]

語法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]

OPTIONS說明:

  • -a :拉取所有 tagged 映象
  • --disable-content-trust :忽略映象的校驗,預設開啟

實列:

從Docker Hub下載最新的ubuntu映象

docker pull ubuntu

從Docker Hub下載repository為ubuntu的所有映象

docker pull -a ubuntu

Docker將原生的映象上傳到映象倉庫[push]

docker push : 將原生的映象上傳到映象倉庫,要先登陸到映象倉庫

語法:docker push [OPTIONS] NAME[:TAG]

OPTIONS說明:

  • --disable-content-trust :忽略映象的校驗,預設開啟

範例:

上傳本地映象nginx:v001到映象倉庫中:

docker push nginx:v001

查詢Docker Hub映象[search]

語法:docker search [OPTIONS] TERM

OPTIONS說明:

  • --automated:棄用,只列出自動構建型別的映象。
  • --filter , -f:基於給定條件過濾輸出。
  • --format:使用模板格式化顯示輸出。
  • --limit:Max number of search results ,預設值25。
  • --no-trunc:禁止截斷輸出。
  • --stars , -s:棄用,只顯示收藏數不小於幾顆星的映象,移到--filter中使用。

從Docker Hub查詢所有映象名包含redis,並且收藏星數大於10的映象

docker search --filter stars=10 redis

從Docker Hub查詢所有映象名包含redis的映象

docker search redis

參考文章

Dcoker命令線上速查手冊