docker run 常用命令解析

2022-06-30 23:15:12 字數 4324 閱讀 8112

usage: docker run [options] image [command] [arg...]  

-d, --detach=false

指定容器執行於前台還是後台,預設為false

-i, --interactive=false

開啟stdin,用於控制台互動

-t, --tty=false

分配tty裝置,該可以支援終端登入,預設為false

-u, --user=""

指定容器的使用者

-a, --attach= 登入容器(必須是以docker run -d啟動的容器)

-w, --workdir=""

指定容器的工作目錄

-c, --cpu-shares=0

設定容器cpu權重,在cpu共享場景使用

-e, --env= 指定環境變數,容器中可以使用該環境變數

-m, --memory=""

指定容器的記憶體上限

-p, --publish-all=false

指定容器暴露的埠

-p, --publish= 指定容器暴露的埠

-h, --hostname=""

指定容器的主機名

-v, --volume= 給容器掛載儲存卷,掛載到容器的某個目錄

--volumes-from= 給容器掛載其他容器上的卷,掛載到容器的某個目錄

--cap-add= 新增許可權,許可權清單詳見:http://

linux.die.net/man/7/capabilities

--cap-drop= 刪除許可權,許可權清單詳見:http://

linux.die.net/man/7/capabilities

--cidfile=""

執行容器後,在指定檔案中寫入容器pid值,一種典型的監控系統用法

--cpuset=""

設定容器可以使用哪些cpu,此引數可以用來容器獨佔cpu

--device= 新增主機裝置給容器,相當於裝置直通

--dns= 指定容器的dns伺服器

--dns-search= 指定容器的dns搜尋網域名稱,寫入到容器的/etc/resolv.conf檔案

--entrypoint=""

覆蓋image的入口點

--env-file= 指定環境變數檔案,檔案格式為每行乙個環境變數

--expose= 指定容器暴露的埠,即修改映象的暴露埠

--link= 指定容器間的關聯,使用其他容器的ip、env等資訊

--lxc-conf= 指定容器的配置檔案,只有在指定--exec-driver=lxc時使用

--name=""

指定容器名字,後續可以通過名字進行容器管理,links特性需要使用名字

--net="

bridge

"容器網路設定:

bridge 使用docker daemon指定的網橋

host

//容器使用主機的網路

container:name_or_id >//

使用其他容器的網路,共享ip和port等網路資源

none 容器使用自己的網路(類似--net=bridge),但是不進行配置

--privileged=false

指定容器是否為特權容器,特權容器擁有所有的capabilities

--restart="no"

指定容器停止後的重啟策略:

no:容器退出時不重啟

on-failure:容器故障退出(返回值非零)時重啟

always:容器退出時總是重啟

--rm=false 指定容器停止後自動刪除容器(不支援以docker run -d啟動的容器)

--sig-proxy=true 設定由**接受並處理訊號,但是sigchld、sigstop和sigkill不能被**

使用案例:

案例1、執行乙個簡單的容器,其中需要包含控制台管理

[[email protected] ~]#docker run -i -t centos6.8

這個容器一執行就會進入到預設的執行緒」/bin/bash」,直接進入控制台操作。當退出控制後後,容器會被終止。

案例2、執行乙個在後台執行的容器,同時,還能用控制台管理

[[email protected] ~]#docker run -i -t -d centos6.8

這個容器一執行,會自動執行預設的執行緒」/bin/bash」,但是不會讓你馬上進入控制台操作。將會在後台執行,用docker ps 可以看到當前執行的控制台。進入容器可是使用docker attach「container name or id」。

案例3、執行乙個帶命令在後台不斷執行的容器,不直接展示容器內部資訊

[[email protected] ~]#docker run -d centos6.8 ping www.docker.com

這個容器將永久在後台執行,因為ping這個執行緒不會停止。除非你停止了ping的執行緒。

案例4、執行乙個在後台不斷執行的容器,同時帶有命令,程式被終止後還能重啟繼續跑,還能用控制台管理

[[email protected] ~]#docker run -d --restart=always centos6.8 ping www.docker.com

這個容器將永久在後台執行,因為ping這個執行緒不會停止。如果你把ping這個執行緒終止了,那麼容器會重啟繼續執行ping功能

案例5、我們需要為容器指定乙個名稱

[[email protected] ~]#docker run -d --name=server-dbcentos6.8-mysql /usr/bin/mysql_safe -d

這時候我們這個容器的名稱為server-db,同時啟用了資料庫mysql的後台執行緒,讓它不斷的跑,這時候我們的容器也不會被關閉。

案例6、我們需要讓server-http容器連線server-db容器

這時候,我們執行了apache的伺服器讓它不斷的在後台執行,同時,在php裡配置mysql的伺服器名稱為」server-db」,直接用server-db命名就可以了。不需要輸入ip位址之類的。我們的server-http指定連線了server-db。server-db在server-http裡會被當做乙個dns解析來獲取相應的連線ip。

案例7、我們要將server-db,server-http的埠暴露出去,讓大家訪問

[[email protected] ~]#docker run -d --name=server-db -p 3306:3306 centos6.8-mysql /usr/bin/mysql_safe –d

這時候我們指定了伺服器宿主機的3306埠對映到容器的3306埠,暴露出去。

這時候我們指定了伺服器宿主機的8080埠對映到容器80埠,暴露出去。

案例8、我們要將宿主機的資料庫目錄/server/mysql-data掛載到server-db上

[[email protected] ~]#docker run -d --name=server-db -p 3306:3306 -v /server/mysql-data:/mysql-data centos6.8-mysql /usr/bin/mysql_safe –d

這時候,你會發現,在server-db根目錄下你會發現有乙個新的資料夾mysql-data,同時裡面的檔案內容和宿主機下/server/mysql-data一樣。

案例9、我們希望乙個容器在它的程序結束後,立馬自動刪除。

[[email protected] ~]#docker run -it --rm centos6.8

這時候我們進入了容器的控制台,當我們在容器內部exit退出控制台的時候,容器將被終止,同時自動刪除。

docker run常用命令

docker run 建立乙個新的容器並執行乙個命令 語法 docker run options image command arg.t 為容器重新分配乙個偽輸入終端,通常與 i 同時使用 i 以互動模式執行容器,通常與 t 同時使用 d 後台執行容器,並返回容器id name 為容器指定乙個名稱 ...

docker run 指定配置常用命令記錄

docker啟動新增時區 dockerfile編譯映象docker build t dockerfile 這個名字就是映象名docker網路 bridge模式bridge 橋接網路預設情況下啟動的docker容器,都是使用 bridge,docker安裝時建立的橋接網路,每次docker容器重啟時,...

gdb常用命令解析

1 使用gdb的前提是gcc裡加入 g選項 2 啟動gdb有兩種方法 gdb 程式名 或 gdb file 程式名 3 gdb常用命令 break b 函式名 在指定函式入口處打斷點 break b 行號 在檔案指定行加入斷點 break b 檔名 行號 在指定檔案的指定行號處加入斷點 break ...