1. 鏡像倉庫
1.1 docker search [OPTIONS] TERM // 搜索鏡像
選項 | 說明 | 示例 |
---|---|---|
-f, --filter filter |
根據條件篩選 | --filter=is-automated=true // 只列出 automated build類型的鏡像 --filter=stars=10 // 列出收藏數不小於指定值的鏡像 |
--limit int |
設置搜索結果的記錄數量 | |
--no-trunc |
搜索結果完整顯示 |
1.2 docker pull [OPTIONS] NAME[:TAG|@DIGEST] // 從鏡像參數中拉取指定鏡像
選項 | 說明 | 示例 |
---|---|---|
-a |
拉取所有tagged鏡像 | |
--disable-content-trust |
忽略鏡像的校驗,默認為true |
1.3 docker push [OPTIONS] NAME[:TAG] // 上傳鏡像到倉庫(要先登錄倉庫)
選項 | 說明 | 示例 |
---|---|---|
--disable-content-trust |
忽略鏡像校驗 | docker login docker tag local-image:tagname sandea/spark:tagname docker push sandea/spark:tagname |
1.4docker login -u 用戶名 -p 密碼 //登錄
1.5 docker logout // 登出
2. 容器操作
2.1 docker ps [OPTIONS] //列出容器
選項 | 說明 | 示例 |
---|---|---|
-a |
顯示所有容器,默認只顯示正在運行的 | |
-f |
過濾 | docker ps -f name=hello |
-n 10 |
顯示最近創建的容器 | |
--no-trunc |
顯示全部描述 | |
-q |
只顯示簡略ID | |
-s |
顯示總的文件大小 |
2.2docker inspect [OPTIONS] NAME|ID //獲取容器或鏡像的元數據
選項 | 說明 | 示例 |
---|---|---|
-f filter |
篩選 | |
-s |
如果是一個容器的話返回其文件大小 | |
--type image/container |
返回指定類型的JSON |
2.3 docker top CONTAINER // 查看指定容器中運行的進程
2.4 docker attach [OPTIONS] CONTAINER //進入正在運行的容器
選項 | 說明 | 示例 |
---|---|---|
-detach-keys string |
||
--no-stdin |
||
--sig-proxy |
默認為true |
--sig-proxy=false |
2.5 docker events [OPTIONS] //從服務器獲取實時事件
選項 | 說明 | 示例 |
---|---|---|
-f filter |
過濾 | |
--since timestamp |
顯示在指定時間之后發生的事件 |
docker events --since=1467302400 |
--until timestamp |
顯示在指定時間之前所產生的事件 |
2.6 docker logs [OPTIONS] CONTAINER //獲取容器的日志
選項 | 說明 | 示例 |
---|---|---|
--details |
顯示詳細日志 |
|
-f |
日志實時輸出 |
|
--since timestamp |
||
--until timestamp |
||
--tail num |
輸出最后多少行日志 |
|
-t |
顯示日志時間 |
2.7 docker wait CONTAINER... //等待容器停止並輸出其退出代碼
2.8 docker export -o fileName.tar CONTAINER //將指定容器打包到tar文檔中,可以指定文件路徑
2.9 docker port CONTAINER [PORT] // 列出容器的端口映射(容器端口與主機端口對應關系)
3.容器rootfs命令
3.1 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] // 從一個容器創建一個新的鏡像
選項 | 說明 | 示例 |
---|---|---|
-a |
鏡像作者 |
|
-c |
使用Dockerfile指令創建鏡像 |
|
-m |
提交時的說明文字 |
|
-p |
在提交時,暫停容器 |
3.2 docker cp // 容器與主機之間的文件復制
docker cp [options] CONTAINER:SRC_PATH TAR_PATH |
docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt |
docker cp [options] SRC_PATH CONTAINER:TAR_PATH |
docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js |
選項 | 說明 | 示例 |
---|---|---|
-a |
復制所有的gid/uid信息 |
|
-L |
Always follow symbol link in SRC_PATH |
?? |
3.3 docker difff CONTAINER // 查看容器中被修改過的文件或目錄
說明:C - Change, D - Delete, A - Add
4. 容器生命周期管理
4.1 docker start [options] container... //啟動一個或多個容器
選項 | 說明 | 示例 |
---|---|---|
-a |
啟動后進入容器 |
|
--detach-keys string |
`` | |
-i |
Attach container's STDIN |
4.2 docker stop [options] container... //停止一個或多個容器
選項 | 說明 | 示例 |
---|---|---|
-t int |
多少秒后停止容器 |
4.3 docker restart [options] container... //重啟一個或多個容器
選項 | 說明 | 示例 |
---|---|---|
-t int |
多少秒后重啟容器 |
4.4 docker kill [options] container... // 殺死一個或多個容器
選項 | 說明 | 示例 |
---|---|---|
-s string |
給容器發送一個信號,默認為KILL |
4.5 docker rm [options] container... //刪除一個或多個容器
選項 | 說明 | 示例 |
---|---|---|
-f, -force |
強制移除容器 |
|
-l, -link |
刪除指定的連接 |
|
-v, -volumes |
刪除容器及其掛載的卷 |
4.6 docker pause container... // 暫停容器中所有的進程
4.7 docker unpause container... // 恢復容器中所有的進程
4.8 docker exec [options] container command [arg...] 在運行的容器中執行命令
選項 | 說明 | 示例 |
---|---|---|
-d, --detach |
分離模式, 在后台運行 |
|
--detach-keys str |
`` | |
-e, --env list |
設置環境變量 |
|
-i, --interactive |
保持STDIN打開 |
與-t結合使用打開一個終端 |
-t, --tty |
分配一個偽終端 |
與-i結合使用打開一個終端 |
--privileged |
Give extended privileges to the command |
|
-u, --user str |
指定用戶名或用戶ID |
|
-w, --workdir str |
在指定文件目錄下執行相應的命令 |
-w /home container ls |
-c |
執行docker容器命令 |
docker exec -it zeppelin bash -c 'echo $ZEPPELIN_HOME' |
4.9 docker run [optoins] image [command] [arg...] // 運行一個新容器中執行一個命令
選項 | 說明 | 示例 |
---|---|---|
--add-host list |
添加自定義的host-ip映射(host:ip) |
|
-a, --attach list |
將容器的stdin,stdout,stderr【標准輸入,標准輸出,錯誤輸出】關聯到本地shell中,在執行docker run時,將所有輸入輸出指定到本地shell中,若執行時攜帶此參數,可以指定將stdin,stdout,stderr的某一個或某幾個關聯到本地shell |
|
--blkio-weight uint16 |
限制容器讀寫權重,當宿主機有1個以上容器時,可以設置容器的讀寫優先權,權重值在10~1000之間,0為關閉權重(默認) |
|
--blkio-weight-device list |
設置針對指定設備的權重,權重值在10~1000之間,且優先級高於blkio.weight |
--blkio-weight-device "/dev/sda:100" ubuntu:latest |
--cap-add list |
增強linux能力,在docker容器內限制了大部分的linux能力,在之前,需要開啟這些功能需要結合--privileged開啟特權模式才能使用這些參數,考慮到安全性,可以通過該參數來開啟指定的linux功能【默認開啟的功能及全部定義詳見docker runc】,若參數為all則默認開啟所有linux能力 |
|
--cap-drop list |
移除linux能力 |
|
--cgroup-parent str |
配置容器的控制組,繼承該控制組的資源限制模式。 |
|
--cidfile str |
創建一個容器,並將該容器的id輸出到某一文件中,若該文件存在,則會返回一個錯誤 |
|
--cpu-period int |
與參數--cpu-quota配合使用,用於設定cpu從新分配資源的時間周期,時間周期結束后,會對cpu進行重新分配 |
|
--cpu-quota int |
與參數--cpu-period配合使用,用於設定該容器在資源分配周期內占用cpu的時間,若容器設定--cpu-quota=1000000 --cpu-period=500000,則該容器在這個時間周期內權重為50%,這兩個參數主要是提升宿主機內某一容器的權重比,可以用來解決宿主機內若干容器的資源搶占導致重要容器cpu性能不足的場景。該模式應用於Linux 的CFS模式 |
|
--cpu-rt-period int |
--cpu-period的微秒版 |
|
--cpu-rt-runtime int |
在一個cpu資源分配周期內,優先保證某容器的cpu使用的最大微秒數。例如,默認周期為 1000000 微秒(1秒),設置 --cpu-rt-runtime=950000 可確保使用實時調度程序的容器每 1000000 微秒可運行 950000 微秒,並保留至少 50000 微秒用於非實時任務 |
|
-c, --cpu-shares int |
CPU份額(相對權重),默認為0 |
|
--cpus decimal |
設置容器使用cpu的數量 |
--cpus=".5" ubuntu:latest |
--cpuset-cpus str |
設置容器允許在哪個cpu上執行該進程,譬如--cpuset-cpus="1,3"為指定在cpu 1 和cpu 3上執行,--cpuset-cpus="0-2"為指定在cpu0,cpu1,cpu2上執行 |
--cpuset-cpus="1,3" |
--cpuset-mems str |
同參數--cpuset-cpus,但該參數是作用於NUMA 架構的 CPU |
|
-d, --detach |
后台運行容器並返回容器ID |
|
--detach-keys str |
設置容器的鍵盤映射鍵位,在容器被鏈接到前台時,若宿主機的鍵盤鍵位與容器鍵位沖突,可以使用該指令對容器的鍵位進行重新映射 |
|
--device list |
向容器中添加主機設備 |
|
--device-cgroup-rule list |
將宿主機的設備添加到cgroup規則列表中 |
|
--device-read-bps list |
限制設備的讀取速率(每秒字節數) |
|
--device-read-iops list |
限制設備的讀取速率(每秒IO操作次數) |
|
--device-write-bps list |
限制設備的寫速率(每秒字節數) |
|
--device-write-iops list |
限制設備的寫速率(每秒IO操作次數) |
|
--disable-content-trust |
忽略鏡像的校驗(默認為true) |
|
--dns list |
指定容器使用的DNS服務器,默認與主機一致 |
|
--dns-option list |
設置DNS選項,同修改/etc/resolv.conf文件 |
|
--dns-search list |
指定容器DNS搜索域名,默認與主機一致 |
|
-entrypoint str |
覆蓋映像默認的entrypoint |
|
-e, --env list |
給容器設置環境變量 |
|
--env-file list |
從指定文件讀取環境變量 |
|
--expose list |
開放一個或多個端口 |
|
--group-add list |
為容器添加用戶組 |
|
--health-cmd str |
執行一個健康檢查命令 |
|
--health-interval duration |
配合--health-cmd參數,設置健康檢查的執行的間隔時間(ms /s / m / h) |
|
--health-retries int |
配合--health-cmd參數,設置健康檢查命令失敗重試的次數 |
|
--health-statr-period duration |
配合--health-cmd參數,設置健康檢查的啟動時間(ms /s / m / h) |
|
--health-timout |
配合--health-cmd參數,設置健康檢查命令超時時間(ms /s / m / h) |
|
-h, --hostname str |
指定容器的hostname |
|
--init |
在容器中新增一個守護進程,來預防該容器出現僵屍進程的可能性 |
|
-i, --interactive |
以交互模式運行容器,常與-t同時使用 |
|
--ip str |
設置容器的IPv4地址 |
|
--ip6 str |
設置容器的IPv6地址 |
|
--ipc str |
使用IPC模式 |
|
--isolation str |
使用容器隔離, 該參數擁有三個值<br>(1)default 即與使用dockerd --exec-opt的參數默認效果相同<br>(2)process 使用linux內核命名空間進行隔離,該參數不支持windows環境。<br>(3)使用微軟的Hyper-V虛擬技術進行隔離,該參數僅限windows環境 |
|
--kernel-memory bytes |
限制該容器內核的內存使用 |
|
-l, --label list |
設置該容器的元數據 |
|
--label-file list |
通過本地文件導入元數據至該容器 |
|
--link list |
指定容器間的關聯,使用其他容器的IP、env等信息 |
|
--link-local-ip list |
容器IPv4/IPv6鏈路本地地址 |
|
--log-driver str |
設置日志工具,用於動態收集日志 |
|
--log-opt list |
配合參數--log-driver使用,用於日志配置 |
|
--mac-address str |
設置該容器mac地址 |
|
-m, --memory bytes |
設置容器使用的最大內存 |
|
--memory-reservation bytes |
軟限制該容器的內存使用,當宿主機內存空閑時,該容器的內存使用可以一定比例超出限制,但當宿主機內存緊張時,會強制該容器內存使用限制在該參數之內 |
|
--memory-swap bytes |
內存交換分區大小限制。配合參數--memory使用,且最小內存交換限制應該大於內存限制。該參數有4種情況:<br> (1)不設置--memory與該參數:則該容器默認可以用完宿舍機的所有內存和 宿主機 swap 分區。<br> (2)設置--memory 50MB 不設置--memory-swap(默認為0):則--memory-swap值等於限制內存大小,即該容器能夠申請的最大內存為100MB。<br> (3)設置--memory 50MB --memory-swap為-1:則該容器最大可以申請的內存為50MB+宿主機swap分區大小 <br> (4)設置--memory 50MB --memory-swap 100MB:則該容器可以申請的最大內存為100MB-50MB=50MB |
|
--memory-swappiness int |
用於調整虛擬內存的控制行為,為0~100之間的整數。在linux內存管理中,將內存中不活躍的頁交換至硬盤中,以緩解內存緊張,該參數設置為0則認定該容器所有內存中的內容均不允許交換至硬盤,用以保障最大性能,若設置為100,則認為該容器所有內存中的數據均可以交換至硬盤。 |
|
--mount mount |
將文件系統掛載到容器 |
|
--name str |
為容器指定一個名稱 |
|
--network str |
將容器連接到網絡,支持bridge/host/none/container四種類型 |
|
--network-alias list |
設置該容器在網絡上的別名 |
|
--no-healthcheck |
禁止一切健康檢查行為 |
|
--oom-kill-disable |
設置是否禁止oom kill行為,若該容器因為需要大量請求內存,導致宿主機內存不足或觸發到內存限制,導致殺死該容器進程,若設置該參數為true則會關閉這個檢查 |
|
--oom-score-adj int |
調整主機的OOM首選項(從-1000到1000)此處需要注意的是,非專業人士docker官方是不建議用戶修改--oom-score-adj--oom-kill-disable這兩個參數的 |
|
--pid string |
設置該容器的pid |
|
--pids-limit int |
限制該容器所能創建的最大進程數。默認-1不限制 |
|
--privileged |
在該容器上開啟特權模式,讓該容器擁有所有的linux能力 |
|
-p, --publish list |
將容器的端口映射到宿主機上 |
docker run -p 8000:8000 ubuntu |
--publish-all |
將該容器的所有端口均隨機映射至宿主機 |
|
--read-only |
設置該容器只讀 |
|
--restart str |
在退出該容器時重啟該容器,默認為no |
|
--rm |
當容器退出時自動刪除它 |
|
--runtime str |
指定該容器關聯一個runtime的容器,在使用該參數時注意runtime specified必須在dockerd --add-runtime注冊過 |
|
--security-opt list |
設置安全屬性,在windows上使用CredentialSpec模塊來執行身份識別 |
|
--shm-size bytes |
設置/dev/shm/目錄的大小 |
|
--sig-proxy |
代理進程所接收的所有字符,當指定--sig-proxy=false時,ctrl+c和ctrl+d 不會傳遞信號給docker進程而關閉容器,默認為true |
|
--stop-signal str |
停止帶有信號的容器,在linux環境下輸入kill -l,就可以看到所有信號名稱,可以指定容器發出某種信號時停止該容器,譬如SIGKILL,默認為SIGTERM |
|
--stop-timeout int |
設置容器調用命令超時后自動退出。該參數可以設置容器在調用命令時導致超時后多少秒退出,0(默認)為永遠不退出,該參數單位為秒 |
|
--storage-opt list |
容器的存儲設置,可以分別指定dm.basesize、dm.loopdatasize、dm.loopmetadatasize等項 |
--storage-opt dm.basesize=20G |
--sysctl map |
內核參數,對應修改容器中的/etc/sysctl.conf文件 |
|
--tmpfs list |
指定掛載一個tmpfs目錄,tmpfs是一種虛擬內存文件系統。 |
|
-t, -tty |
打開一個偽終端,常與-i同時使用 |
|
--ulimit ulimit |
設置容器的ulimit選項 |
|
-u, --user str |
用戶名或UID |
|
--userns str |
`` | |
--uts str |
使用uts命名空間 |
|
-v, --volume list |
在該容器下掛載卷 |
|
--volume-driver str |
`` | |
--volumes-from list |
`` | |
-w, --workdir str |
指定容器的工作目錄 |
4.10 docker create [optoins] image [command] [arg...] // 創建一個新容器
參數 同run
5. 鏡像管理
5.1 docker images [options] [repository[:tag]] //列出鏡像
選項 | 說明 | 示例 |
---|---|---|
-a <br>--all |
列出所有鏡像 |
|
--digests |
顯示摘要信息(sha256) |
|
-f <br> --filter filter |
過濾 |
|
--format str |
`` | |
--no-trunc |
`` | |
-q <br>--quiet |
僅顯示ID |
5.2 docker rmi [options] image...//刪除鏡像
選項 | 說明 | 示例 |
---|---|---|
-f <br> --force |
強制刪除 |
|
--no-prune |
`` |
5.4 docker tag src_image[:tag] tar_image[:tag] // 創建某個鏡像的副本
5.5 docker history [options] image //查看指定鏡像的創建歷史。
選項 | 說明 | 示例 |
---|---|---|
--format str |
`` | |
-H <br> --human |
以可讀的形式打印日志和大小 |
|
--no-trunc |
`` | |
-q <br>--quiet |
`` |
5.6 docker save [options] image... //將指定鏡像保存為tar歸檔文件
選項 | 說明 | 示例 |
---|---|---|
-o <br> --output str |
輸出至指定的文件 |
5.6 docker import [options] file/url/- [repository[:tag]] //由tar文檔生成鏡像
選項 | 說明 | 示例 |
---|---|---|
-c ,<br> --change list |
用dockerfile指令創建鏡像 |
|
-m, <br> --message str |
為創建的鏡像設置描述信息 |
5.7 docker build [options] path / url / - //使用dockerfile創建鏡像
選項 | 說明 | 示例 |
---|---|---|
--add-host list |
`` | |
--build-arg list |
設置鏡像創建時的變量 |
|
--cache-from str |
`` | |
--cgroup-parent str |
`` | |
--compress |
使用zip壓縮構建上下文 |
|
--cpu-period int |
限制 CPU CFS周期 |
|
--cpu-quota int |
限制 CPU CFS配額 |
|
-c <br> --cpu-shars int |
設置 cpu 使用權重 |
|
--cpuset-cpus str |
指定使用的CPU id |
|
--cpuset-mems str |
指定使用的內存 id |
|
--disable-content-trust |
忽略校驗,默認開啟 |
|
-f <br> --file str |
指定要使用的Dockerfile路徑 |
|
--force-rm |
設置鏡像過程中刪除中間容器 |
|
--iidfile str |
指定保存鏡像id的文件 |
|
--isolation str |
使用容器隔離技術 |
|
--label list |
設置鏡像使用的元數據 |
|
-m <br> --memory bytes |
設置內存最大值 |
|
--memory-swap bytes |
設置Swap的最大值為內存+swap,"-1"表示不限swap |
|
--network str |
設置鏡像網絡模式 |
|
--no-cache |
創建鏡像的過程不使用緩存 |
|
--pull |
嘗試去更新鏡像的新版本 |
|
-q, <br> --quiet |
只輸出鏡像ID |
|
--rm |
設置鏡像成功后刪除中間容器 |
|
--security-opt str |
安全設置 |
|
--shm-size bytes |
設置/dev/shm的大小,默認值是64M |
|
-t, <br> --tag list |
`` | |
--target str |
`` | |
--ulimit ulimit |
Ulimit配置 |
6. 其他命令
6.1 docker info //顯示docker系統信息
6.2 docker version // 顯示docker相關的版本信息