docker run :創(chuàng)建一個新的容器并運行一個命令
語法
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS說明:
-a stdin:指定標準輸入輸出內(nèi)容類型,可選 STDIN/STDOUT/STDERR 三項搔预;
-d:后臺運行容器问顷,并返回容器ID;
-i:以交互模式運行容器,通常與 -t 同時使用巩掺;
-P:隨機端口映射醇锚,容器內(nèi)部端口隨機映射到主機的端口
-p:指定端口映射,格式為:主機(宿主)端口:容器端口
-t:為容器重新分配一個偽輸入終端题山,通常與 -i 同時使用兰粉;
--name="nginx-lb":為容器指定一個名稱;
--dns 8.8.8.8:指定容器使用的DNS服務(wù)器顶瞳,默認和宿主一致玖姑;
--dns-search example.com:指定容器DNS搜索域名愕秫,默認和宿主一致;
-h "mars":指定容器的hostname焰络;
-e username="ritchie":設(shè)置環(huán)境變量戴甩;
--env-file=[]:從指定文件讀入環(huán)境變量;
--cpuset="0-2" or --cpuset="0,1,2":綁定容器到指定CPU運行舔琅;
-m :設(shè)置容器使用內(nèi)存最大值等恐;
--net="bridge":指定容器的網(wǎng)絡(luò)連接類型,支持 bridge/host/none/container: 四種類型备蚓;
--link=[]:添加鏈接到另一個容器课蔬;
--expose=[]:開放一個端口或一組端口;
--volume , -v: 綁定一個卷
實例
使用docker鏡像nginx:latest以后臺模式啟動一個容器,并將容器命名為mynginx郊尝。
docker run --name mynginx -d nginx:latest
使用鏡像nginx:latest以后臺模式啟動一個容器,并將容器的80端口映射到主機隨機端口二跋。
docker run -P -d nginx:latest
使用鏡像 nginx:latest,以后臺模式啟動一個容器,將容器的 80 端口映射到主機的 80 端口,主機的目錄 /data 映射到容器的 /data流昏。
docker run -p 80:80 -v /data:/data -d nginx:latest
綁定容器的 8080 端口扎即,并將其映射到本地主機 127.0.0.1 的 80 端口上。
$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
使用鏡像nginx:latest以交互模式啟動一個容器,在容器內(nèi)執(zhí)行/bin/bash命令况凉。
runoob@runoob:~$ docker run -it nginx:latest /bin/bash
root@b8573233d675:/#?
在 Docker 容器退出時谚鄙,默認容器內(nèi)部的文件系統(tǒng)仍然被保留,以方便調(diào)試并保留用戶數(shù)據(jù)刁绒。
但是闷营,對于 foreground 容器,由于其只是在開發(fā)調(diào)試過程中短期運行知市,其用戶數(shù)據(jù)并無保留的必要傻盟,因而可以在容器啟動時設(shè)置--rm選項,這樣在容器退出時就能夠自動清理容器內(nèi)部的文件系統(tǒng)嫂丙。
示例如下:
docker run --rm ba-208
等價于:
docker run --rm=true ba-208
顯然娘赴,--rm選項不能與-d同時使用(或者說同時使用沒有意義),即只能自動清理 foreground 容器跟啤,不能自動清理detached容器诽表。
注意,--rm選項也會清理容器的匿名data volumes隅肥。
所以关顷,執(zhí)行docker run命令帶--rm命令選項,等價于在容器退出后武福,執(zhí)行docker rm -v。