1. 程式人生 > >docker-1.12 run命令執行以及引數詳解

docker-1.12 run命令執行以及引數詳解

以上幾篇內容,我們基本瞭解了docker的image,container,dockerfile的一些資訊

這一篇開始,我們要進入正題了,也就是正式開始入門的我們docker,和使用它。

首先,我們要介紹的第一個命令,也是docker最核心的命令:docker run

我先把dockerrun會碰到的引數一一跟大家解釋一下,讓大家先了解自己需要的是什麼。(我會把常用的列出來)

首先看下命令格式:

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不能被代理  

以上都是比較常用到的一些run的引數。

那麼我們來舉一些常用例子。

假設我們用:

centos6.8(純淨的系統,啟動後沒有執行任何東西),

centos6.8-mysql(包含mysql資料庫),

centos6.8-httpd(包含php和apache伺服器),

三個映象。

案例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容器

[[email protected] ~]#docker run -d --name=server-http --link=server-db  centos6.8-httpd /usr/bin/httpd --DFOREGROUND 這時候,我們執行了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埠,暴露出去。

[[email protected] ~]#docker run -d --name=server-http --link=server-db  -p 8080:80centos6.8-httpd /usr/bin/httpd --DFOREGROUND

這時候我們指定了伺服器宿主機的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退出控制檯的時候,容器將被終止,同時自動刪除。 

以上的一些案例是我們常用的一些引數和使用方法。希望能幫到大家。 ---------------------  作者:lynk-coder  來源:CSDN  原文:https://blog.csdn.net/kunloz520/article/details/53839237?utm_source=copy  版權宣告:本文為博主原創文章,轉載請附上博文連結!