1. 程式人生 > >Docker 命令詳解-容器生命週期管理(RUN)

Docker 命令詳解-容器生命週期管理(RUN)

一、概況

  • run: 建立一個新的容器並執行一個命令;

二、RUN詳情

2.1 語法

$ sudo docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

具體版本特性,可通過命令檢視引數說明

$ sudo docker run --help

2.2 OPTIONS說明

  • –add-host: 向IP對映新增自定義主機
引數 型別 說明
--add-host list 向IP對映新增自定義主機

示例:

$ sudo docker run -d --add-host cc-man:192.168.46.111 --add-host cc:192.168.46.62  -p 8088:8080 my_tomcat:7.0

進入容器內部檢視是否生效
在這裡插入圖片描述

  • -a/–attach: 設定輸入輸出內容型別
引數 型別 可選引數
-a/--attach list stdin:STDIN, STDOUT or STDERR

說明:
stdin: 指定標準輸入輸出內容型別

  • block IO: 關於 IO 的限制
引數 型別 說明
--blkio-weight uint16 塊IO(相對權重),介於10和1000之間,或0為禁用(預設為0)
--blkio-weight-device list 塊IO(相對權重),介於10和1000之間,或0為禁用(預設為0)
  • cap-add/cap-drop: 新增/刪除Liunx的核心修改功能
引數 型別 說明
--cap-add list 新增Linux功能
--cap-drop list 刪除Linux功能

使用–cap-add和–cap-drop,配合–privileged,你可以更細緻的控制container。預設使用這兩個引數的情況下,container擁有一系列的核心修改許可權。這兩個引數都支援all值,如果你想讓某個container擁有除了MKNOD之外的所有核心許可權,那麼可以執行下面的命令:

 $ sudo docker run --cap-add=ALL --cap-drop=MKNOD ...
  • cgroup-parent

  • cidfile:

    .

引數 型別 說明
--cidfile string 將容器ID寫入檔案
$ sudo docker run -d  --cidfile ./hh.sh ...
  • CPU
引數 型別 說明
--cpu-period int 是用來指定容器對CPU的使用要在多長時間內做一次重新分配
--cpu-quota int 是用來指定在這個週期內,最多可以有多少時間用來跑這個容器
--cpu-rt-period int 是用來指定容器對CPU的使用要在多長時間內做一次重新分配(微秒限制CPU實時週期)
--cpu-rt-runtime int 是用來指定在這個週期內,最多可以有多少時間用來跑這個容器(微秒限制CPU實時執行時間)
--cpu-shares或-c int CPU份額(相對權重)
--cpus int CPU數量
--cpuset-cpus string 允許執行的CPU 根據實際情況配置
--cpuset-mems string 只應用於 NUMA 架構的 CPU 生效,關於這個選項這裡不過多介紹

cpu-period:

  • 預設的 CPU CFS「Completely Fair Scheduler」period 是 100ms。我們可以通過 --cpu-period 值限制容器的 CPU 使用。一般 --cpu-period 配合 --cpu-quota 一起使用。

  • 例如:比如說A容器配置的–cpu-period=100000 --cpu-quota=50000,那麼A容器就可以最多使用50%個CPU資源,如果配置的–cpu-quota=200000,那就可以使用200%個CPU資源。

$ sudo docker run -it --rm --cpu-period=100000 --cpu-quota=200000 ...

cpu-shares:

  • 預設情況下所有容器的share(簡單理解成是權重吧)是相同的,也就是所有容器有相同的權重,在所有容器一起競爭資源時,最終得到的資源是相同的。
  • 比如A和B兩個容器,A配置的是1024,B配置的是512,那麼A最大可以使用的CPU資源是B的兩倍。還有一點要注意的是這種配置是有彈性的,如果A容器一直閒著,那B容器是可以使用空閒資源的。
$ sudo docker run -d  --cpu-shares 100  ...

cpus:

  • 設定CPU數量,主要不可以超出核心數,不然會報錯
$ sudo docker run -d --cpus 1.21 ...

cpuset-cpus:

  • 允許執行的CPU 根據實際情況配置
  • 例如我有4核(0,1,2,3)我可以選擇0-1兩個CPU也可以分別選擇1和3
$ sudo docker run -d --cpuset-cpus 0-1 ...
$ sudo docker run -d --cpuset-cpus 1,3 ...