Docker 命令詳解-容器生命週期管理(RUN)
阿新 • • 發佈:2018-12-21
一、概況
- 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 ...