docker run命令不清楚的可以 docker run --help |grep 引數
1、建立容器常用選項
建立容器命令格式:
usage: docker create [options] image [command]
[arg...]
usage: docker run [options] image [command]
[arg...]
2、options(常用選項) 以docker run為例
-i 即stdin(標準輸入流)
-t:開啟乙個偽終端
-d:放到後台執行
–add-host list :動態新增乙個host記錄
例如:建立乙個容器並檢視容器中的hosts:
docker run -itd --name hello --add-host abc:192.168.0.2 ubuntu
docker exec hello cat /etc/hosts
-a:如果在執行run命令時沒有指定-a引數,那麼docker缺省會掛載所有標準資料流,包括輸入輸出和錯誤,可以單獨指定掛載哪個標準流
docker run -a stdin -a stdout -i -t ubuntu /bin/bash
–cap-add list:給容器賦予更細粒度的許可權,例如ntp服務,需要修改核心可以正常工作
–cap-drop list:給容器刪除更細粒度的許可權
–cidfile string:把容器id寫到乙個檔案中
例如:把容器id寫到/tmp/dockerid.pid檔案並檢視:
docker run -itd --name duan --cidfile /tmp/dockerid.pid ubuntu
cat /tmp/dockerid.pid
–device list :新增物理機上裝置到容器,比如磁碟掛在到容器
–dns list:指定容器dns
例如:指定dns並檢視預設dns:
docker run -itd--name dnstest --dns 8.8.8.8 ubuntu
docker exec dnstest cat /etc/resolv.conf
-e :傳入變數。
例如:建立容器並傳入變數並檢視變數:
docker run -itd --name bianliang -e test=123456 ubuntu
docker exec bianliang echo
$test
-env-file -list:通過檔案傳入變數 和-e引數類似
–expose list :指定容器開放的埠。
例如:建立容器指定容器開放埠並檢視最新建立的容器:
docker run -itd --name porttest --expose 80 ubuntu
docker ps -l
-h:指定容器主機名,預設容器id截斷部分
例如:建立指定容器主機名並檢視容器主機名:
docker run -itd --name hostnametest -h duanshuaixing ubuntu
docker exec hostnametest hostname
–net:指定乙個網路
–ip:指定乙個ip(劃分網段進行隔離,只針對自定義網路)
例如:檢視當前網路並建立乙個子網,再在新建立的容器中指定網路和ip,然後檢視容器資訊
docker network ls
docker network create --subnet=10.0.0.0/16 network_10
docker network ls
docker run -itd --name networktest --net=network_10 --ip 10.0.0.122 ubuntu
docker inspect networktest
–link: 連線已有容器。獲取指定容器ip 並且與abc對應,host的作用是通過網域名稱或者主機名的方式進行訪問對應的ip,當ip發生變化時仍可以通過主機名或者網域名稱進行連線不需要修改程式。
例如:檢視已有容器ip,建立乙個容器並且連線指定容器,檢視hosts
docekr exec networktest cat /etc/hosts
docker run -itd --name linktest --link networktest:abc ubuntu
docker exec linktest cat /etc/hosts
–log-driver:【none(不開啟日誌)、json-file(預設)、syslog、fluentd、splunk等】。設定日誌預設日誌路徑:/var/lib/docker/containers/容器id/*.json.log檔案
例如:建立容器並指定使用syslog方式,檢視syslog檔案
docker run -itd --name logtest --log-driver ubuntu
tail /var/log/syslog -f
–log-opt:日誌的選項
–mount:把本地檔案系統掛載到容器
–net :指定容器為哪個網路
–oom-kill-disable:預設在linux下系統物理資源不足會kill一些記憶體開銷比較大的程序,此選項可以避免被kill
–pid string:使用pid的命名空間
-p:將容器埠**到埠
例如:將容器80埠**到宿主機8888埠並檢視**情況:
docker run -itd --name porttest -p 8888:80 ubuntu
docker ps -l
-p:將expose標識的埠對映到宿主機隨機埠
–restart:容器掛了之後嘗試重啟
例如:容器掛了之後一直嘗試重啟和容器掛了之後重啟3次失敗就放棄:
docker run -itd --name restarttest01 --restart alway
docker run -itd --name restarttest02 --restart on-failure:3 ubuntu
–ulimit:開啟最大檔案限制
例如:設定使用者開啟最大程序數和開啟最大檔案數,並檢視ulimit值:
docker run -itd --name ulimittest --ulimit nproc=10240 --ulimit nofile=10240 ubuntu
docker exec ulimittest ulimit -n
ulimit -a |
grep 10240
-v:將宿主機的某個目錄掛載到容器的某個目錄
-volumes-from:容器資料卷。容器為共享目錄共享到多個容器
-w:進入容器後到工作目錄
關於cpu的限制
--cpu-period init:cpu週期設定
--cpu-quota init :cpu配額限制
-c,--cpu-shares init: cpu共享(相對權重)
--cpuset-cpus string:cpus in
which to allow execution (0-3, 0,1)
--device-read-bps list:限制磁碟讀取速率
--device-write-bps list:限制磁碟寫的速率
--device-read-iops list:限制磁碟讀取的iops
--device-write-iops list:限制磁碟寫的iops
-m,--memory bytes 限制容器記憶體(硬限制,不可突破硬限制,可軟硬限制結合)
例如:建立乙個容器,限制記憶體為10m,進入容器檢視限制
docker run --name memorytest -m 10240000 ubuntu
docker exec -it memorytest /bin/bash
cd /sys/fs/cgroup/memory/ &&
grep 10240000 *
--memory-reservation bytes(軟限制,可以突破軟限制,可軟硬限制結合)
--memory-swap bytes:交換分割槽限制等於記憶體加交換分割槽:「- 1」 是不限制容器能使用的 swap 分割槽大小。
docker run的 rm選項詳解
在docker容器退出時,預設容器內部的檔案系統仍然被保留,以方便除錯並保留使用者資料。但是,對於foreground容器,由於其只是在開發除錯過程中短期執行,其使用者資料並無保留的必要,因而可以在容器啟動時設定 rm選項,這樣在容器退出時就能夠自動清理容器內部的檔案系統。示例如下 docker r...
docker run 建立容器
docker run 建立乙個新的容器並執行乙個命令 語法 docker run options image command arg.t 為容器重新分配乙個偽輸入終端,通常與 i 同時使用 i 以互動模式執行容器,通常與 t 同時使用 d 後台執行容器,並返回容器id name 為容器指定乙個名稱 ...
docker 建立容器常見選項
1.docker run建立容器常見選項 1.1 建立容器 選項描述 i,interactive 互動式 t,tty 分配乙個偽終端 d,detach 執行容器到後台 e,env 設定環境變數 p 小寫 publish list 發布容器埠到主機 p 大寫 publish all 發布容器所有exp...