天天看點

Docker指令合集大禮包

之前的文章介紹過如何使如何編寫Dockerfile及如何使用docker-compose.yml來自動化生成和部署容器

今天主要來介紹一下docker中常用的指令,如下:

1. docker create/run 

create是生成一個容器但是不運作,而run的話是生成之後同時運作它

docker create/run [OPTIONS] IMAGE [COMMAND] [ARG...]

這裡OPTIONS有很多選擇,如下:

  • -a stdin: 指定标準輸入輸出内容類型,可選 STDIN/STDOUT/STDERR 三項;
  • -d: 背景運作容器,并傳回容器ID;
  • -i: 以互動模式運作容器,通常與 -t 同時使用;
  • -P: 随機端口映射,容器内部端口随機映射到主機的端口
  • -p: 指定端口映射,格式為:主機(宿主)端口:容器端口 
  • -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=[]: 開放一個端口或一組端口;
  • --volume , -v: 綁定一個卷

可以發現,這裡的很多常見的參數OPTIONS和之前編寫docker-compose時所定義的容器的屬性類似,隻是這裡在一句指令裡指出。

2. docker start/stop/restart/kill

顧名思義就是容器啟動、暫停和重新開機 、殺死

docker start/stop/restart/kill CONTAINER

注意:這裡的CONTAINER可以是容器名也可以是容器的ID。另外docker stop和docker kill都是容器中止,但是有所差別:docker stop 是“優雅退出”,會先發送SIGTERM信号,在一段時間之後(10s)再發送SIGKILL信号。Docker内部的應用程式可以接收SIGTERM信号,然後做一些“退出前工作”,比如儲存狀态、處理目前請求等。而docker kill,發送SIGKILL信号,應用程式直接退出。

3. docker rm 

移除或删除容器

docker rm [OPTIONS] CONTAINER

這裡OPTIONS說明:

  • -f :通過 SIGKILL 信号強制删除一個運作中的容器。
  • -l :移除容器間的網絡連接配接,而非容器本身。
  • -v :删除與容器關聯的卷。

有時候可能需要在移除容器時删除所關聯的卷,需要用到 -v 這個标示。

4. docker exec

這個指令是表示進入到容器内部去執行指令

docker exec [OPTIONS] CONTAINER

這裡OPTIONS說明:

  • -d :分離模式: 在背景運作
  • -i :即使沒有附加也保持STDIN 打開
  • -t :配置設定一個僞終端

通常我們會使用帶上 -it 即,docker exec -it + containe name/id 

5. docker ps 

檢視容器,包括以下内容:

CONTAINER ID: 容器 ID。IMAGE: 使用的鏡像。COMMAND: 啟動容器時運作的指令。CREATED: 容器的建立時間。STATUS: 容器狀态。其中容器狀态狀态有7種:

  • created(已建立)
  • restarting(重新開機中)
  • running(運作中)
  • removing(遷移中)
  • paused(暫停)
  • exited(停止)
  • dead(死亡)
docker ps [OPTIONS]

注意: docker ps 會列出所有運作中的容器,如果加一個 -a 顯示所有的容器,包括未運作的。

6. docker inspect 

檢視容器的中繼資料

docker inspect [OPTIONS] NAME|ID

我們一般使用這個指令會去檢視,啟動的容器的IP位址。即:

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'  CONTAINER

7. docker logs

檢視容器日志 

docker logs [OPTIONS] CONTAINER

這裡OPTIONS說明:

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

以上就是一些常見和常用的docker指令,如果之後有更多常用的還會繼續補充。如果這篇總結對你有幫助,不妨給我點個贊,謝謝!

參考資料:

1. https://www.runoob.com/docker/docker-command-manual.html

2. https://blog.csdn.net/weixin_34414196/article/details/86428138