Docker命令最詳介紹,你值得擁有搀突!

一刀闷、Docker鏡像管理

1.搜索鏡像

格式:
docker search [選項] <倉庫名|倉庫名:標簽>
選項:
-f, --filter filter:
--format string:
--limit int:
--no-trunc:顯示完整的鏡像描述;
例如:
docker search --no-trunc java

2.獲取鏡像

格式:
docker pull [選項] [Docker Registry 地址[:端口號]/]倉庫名[:標簽]
選項:
-a:拉取所有tag鏡像;
--disable-content-trust :忽略鏡像的校驗,默認開啟甸昏;
例如:
docker pull java:8

3.鏡像信息

3.1.查看鏡像列表

docker images
docker image ls
docker image ls --digests #查看鏡像摘要顽分;
docker image ls java
docker image ls java:8
docker image ls -f since= java:8 #列出java:8鏡像之前的所有鏡像;
docker image ls -f before=java:8 #列出java:8鏡像之后的所有鏡像施蜜;
docker image ls -f label=Label=0.1 #根據(jù)標簽內(nèi)容過濾出鏡像卒蘸;

3.2.查看鏡像體積

docker system df

3.3.查看虛懸鏡像

docker image ls -f dangling=true
解釋:什么屬于虛懸鏡像?倉庫名翻默、標簽均為<none>的鏡像缸沃;

3.4.查看中間層鏡像

docker image ls -a

3.5.特定格式顯示

docker image ls -q
docker image ls --format "{{.ID}}: {{.Repository}}"
docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

4.刪除鏡像

格式:
docker image rm [選項] <鏡像1> [<鏡像2> ...]
選項:
-f :表示強行刪除鏡像;
docker image rm [-f] < 鏡像名|鏡像ID|倉庫名:標簽|鏡像摘要 >
docker image rm [-f] < 鏡像名|鏡像ID|倉庫名:標簽|鏡像摘要 >
注意:Untagged 和 Deleted;
因為一個鏡像可能對應不同的標簽修械,根據(jù)倉庫名:標簽刪除鏡像趾牧,顯示“Untagged”實際是上刪除標簽;

5.鏡像導出/導入

5.1.壓縮包導入鏡像(與export一對)

格式:
docker import [選項] <文件>|<URL>|- [<倉庫名>[:<標簽>]]
例如:
docker import \ download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz \ openvz/ubuntu:14.04

5.2.保存鏡像(遷移備份)

docker save <repository>:<tag> -o <repository>.tar 導入時才有repository:tag
docker save -o xxx.tar 鏡像ID #生成在當前目錄下
docker save -i xx.tar
docker save > xxx.tar

5.3.導入鏡像

docker load --input xxx.tar
docker load < xx.tar
docker load -i xx.tar

6.構(gòu)建鏡像

6.1.commit(將容器構(gòu)建成鏡像)

格式:
docker commit [選項] <容器ID或容器名> [<倉庫名>[:<標簽>]]
選項:
-a, --author string:指定修改作者肯污;
-c, --change list:使用Dockerfile指令來創(chuàng)建鏡像翘单;
-m, --message string:定義修改內(nèi)容;
-p, --pause:提交時將容器暫停仇箱;
例如:
docker commit \ --author "Zhang San <zangs@163..com>" \ --message "修改Nginx配置" \ NginxServer \ nginx:v3 解釋:
NginxServer:指定使用哪個容器县恕,也可以指定容器ID;
nginx:v3:指定構(gòu)建鏡像的倉庫名:標簽剂桥;

6.2.Dockerfile

格式:
docker build [選項] <上下文路徑/URL/->
--build-arg=[] :設置鏡像創(chuàng)建時的變量忠烛;
--cpu-shares :設置 cpu 使用權(quán)重;
--cpu-period :限制 CPU CFS周期权逗;
--cpu-quota :限制 CPU CFS配額美尸;
--cpuset-cpus :指定使用的CPU id;
--cpuset-mems :指定使用的內(nèi)存 id斟薇;
--disable-content-trust :忽略校驗师坎,默認開啟;
-f :指定要使用的Dockerfile路徑堪滨;
--force-rm :設置鏡像過程中刪除中間容器胯陋;
--isolation :使用容器隔離技術(shù);
--label=[] :設置鏡像使用的元數(shù)據(jù)袱箱;
-m :設置內(nèi)存最大值遏乔;
--memory-swap :設置Swap的最大值為內(nèi)存+swap,"-1"表示不限swap发笔;
--no-cache :創(chuàng)建鏡像的過程不使用緩存盟萨;
--pull :嘗試去更新鏡像的新版本;
-q :安靜模式了讨,成功后只輸出鏡像ID捻激;
--rm :設置鏡像成功后刪除中間容器制轰;
--shm-size :設置/dev/shm的大小,默認值是64M胞谭;
--ulimit :Ulimit配置垃杖。
例如:
docker build Dokcerfile .
docker build - < Dockerfile #從標準輸入讀取Dockerfile構(gòu)建;
cat Dockerfile | docker build -
docker build context.tar.gz #tar壓縮包構(gòu)建
docker build - < context.tar.gz #從標準輸入中讀取tar壓縮包構(gòu)建
docker build twang2218/gitlab-ce-zh.git#:8.14 #基于Git Repo構(gòu)建
注意:
如果標準輸入傳入的是文件丈屹,將被視為Dockerfile缩滨,并開始構(gòu)建,但是由于這種方式是直接從標準輸入中讀取Dockerfile文件內(nèi)容泉瞻,它沒有上下文,因此不可以像其他方法那樣將本地方文件COPY進鏡像之類的事情苞冯;
如果標準輸入傳入的是壓縮文件袖牙,文件格式是gzip、bzip2舅锄、xz鞭达,將會自動解壓,視里面內(nèi)容為上下文皇忿,并且開始構(gòu)建畴蹭;

查看鏡像創(chuàng)建歷史

docker history [選項]
選項:
-H, --human:可讀的格式打印鏡像大小和日期;
--no-trunc:顯示完整的提交記錄鳍烁;
-q, --quiet:僅列出提交ID叨襟;

登錄/退出docker鏡像倉庫

格式:
docker login [倉庫地址:端口] [選項]
選項:
-u:指定用戶;
-p:指定密碼幔荒;
例如:
docker login docker.kry.cn -u admin
注意:如果不指定倉庫地址糊闽,默認登陸Hub倉庫;

標記鏡像

格式:
docker tag <倉庫名:標簽|鏡像ID> <新倉庫名:標簽>
例如:
docker tag f32a97de94e1 docker.kry.cn/registry:v1.2
docker tag registry:latest docker.kry.cn/registry:v1.3

上傳鏡像到鏡像倉庫

格式:
docker push [選項] <倉庫名:標簽>
--disable-content-trust :忽略鏡像的校驗,默認開啟爹梁;
例如:
docker push registry:v1.3

二右犹、Docker容器管理

1.容器操作命令

docker container [選項] [參數(shù)]
選項:
attach:將標準輸入輸出及錯誤附加入容器,當退出時容器也跟隨退出姚垃;
commit:從容器構(gòu)建一個新鏡像念链;
cp:容器與本地之間相互復制文件或文件夾;
create:創(chuàng)建一個新容器积糯;
diff:檢查容器文件系統(tǒng)的改變掂墓;
exec:進入正在運行的容器中;
export:導出容器的文件系統(tǒng)作為tar文件絮宁;
inspect:將tar文件導入成鏡像梆暮;
kill:殺死一個或多個正在運行的容器;
logs:獲取容器日志绍昂;
ls:列出容器啦粹;
pause:暫停一個或多個運行的容器的所有進程偿荷;
port:列出容器映射端口;
prune:刪除所有已停止的容器唠椭;
rename:修改容器名稱跳纳;
restart:重啟一個或多個容器;
rm:刪除一個或多個容器贪嫂;
run:運行容器寺庄;
start:啟動一個或多個容器;
stats:查看容器狀態(tài)力崇;
stop:停止一個或多個容器斗塘;
top:查看容器內(nèi)部運行進程;
unpause:恢復一個或多個容器中暫停的所有進程亮靴;
update:更新一個或多個容器配置馍盟;
wait:等待阻塞,直到一個或多個容器停止茧吊,輸出退出代碼贞岭;

2.創(chuàng)建容器

格式:
docker create [選項] <鏡像名:標簽|鏡像ID>
格式:
--name:指定容器名稱;
--network:指定容器連接網(wǎng)絡搓侄;
-h,--hostname:指定主機名稱瞄桨,例如:-h web 或 --hostname=web;
--dns:指定容器DNS讶踪,例如:--dns=61.139.2.69
--dns-search:設置容器搜索域芯侥;
--restart string:指定重啟策略,默認為no乳讥,on-failure表示容器狀態(tài)非0重啟筹麸,always表示只要退出就重啟;

3.啟動容器

docker container start 容器ID #啟動一個沒有運行的容器雏婶;
docker run -itd centos /bin/bash #創(chuàng)建容器并運行物赶,并進入容器中;
-a stdin: 指定標準輸入輸出內(nèi)容類型留晚,可選 STDIN/STDOUT/STDERR 三項酵紫;
-d: 后臺運行容器;
-i: 以交互模式運行容器错维;
-t: 分配一個偽輸入終端奖地;
-v:將本地目錄加載到容器,實例 -v /data:/data/www
--name="nginx-lb": 指定容器名稱赋焕;
--dns 8.8.8.8: 指定容器使用的DNS服務器参歹;
--dns-search example.com: 指定容器DNS搜索域名;
-h "mars": 指定容器的hostname隆判;
-e username="ritchie": 設置環(huán)境變量犬庇;
--env-file=[]: 從指定文件讀入環(huán)境變量僧界;
--cpuset="0-2" or --cpuset="0,1,2": 綁定容器到指定CPU運行;
-m :設置容器使用內(nèi)存最大值臭挽;
--net="bridge": 指定容器的網(wǎng)絡類型捂襟,支持 bridge/host/none/container;
--link=[]: 添加鏈接到另一個容器欢峰;
--expose=[]: 開放一個端口或一組端口葬荷;
--restart string:指定重啟策略,默認為no纽帖,on-failure表示容器狀態(tài)非0重啟宠漩,always表示只要退出就重啟;

4.查看容器

格式:
docker ps [選項]
docker container ls [選項]
選項:
-a, --all:查看所用容器(停止與運行)懊直;
-f, --filter filter:
--format string:使用Go模板打印容器信息哄孤;
-n, --last int:顯示最后創(chuàng)建的容器,默認-1吹截;
-l, --latest:顯示最新創(chuàng)建容器;
--no-trunc:
-q, --quiet:只顯示容器ID凝危;
-s, --size:顯示容器總文件大小
例如:
docker ps -a
docker container ls -a

5.停止容器

docker container stop 容器ID
例如:
docker container stop $(docker ps -aq)
a:列出所有容器波俄;
q:返回容器ID;

6.進入容器

格式:
docker exec [選項] <容器ID|容器名> /bin/bash
-d, --detach:在后臺運行蛾默;
--detach-keys string:覆蓋容器的運行參數(shù)懦铺;
-e, --env list:設置環(huán)境變量;
-i, --interactive:即使沒有附加也保持STDIN 打開支鸡;
--privileged:賦予命令擴展權(quán)限冬念;
-t, --tty:分配一個偽終端;
-u, --user string:設置用戶名牧挣,格式: <name|uid>[:<group|gid>]急前;
-w, --workdir string:指定容器內(nèi)的目錄;
例如:
docker exec -it 31e61e /bin/bash

7.復制

格式:
從容器復制到本地:
docker cp [選項] 容器ID|容器名:源文件路徑 目標路徑

從本地復制到容器:

docker cp [選項] 本地源文件路徑 容器ID|容器名:目標路徑
選項:
-a, --archive:復制所有屬性(uid/gid)瀑构;
-L, --follow-link:保持源目標中的鏈接裆针;
例如:
docker cp /data/user.txt ad586a31e61e:/userlist.txt
docker cp ss_java.plmpacv2n775:/web.jar /data/jar/web.jar

8.導出導入(export/import )

export

格式:
docker export [選項] 容器ID > tar文件名
選項:
-o, --output string:指定寫入文件;
例如:
docker export ad586a31e61e > registry:v0.1.tar
docker export -o /data/bak/registry:v0.1.date +%Y%m%d.tar ad586a31e61e

import

格式:
cat tar文件名 | docker import - 倉庫名:標簽
例如:
cat registry:v0.1.tar | docker import - egistry:v0.1
docker import exampleimage.tgz example/imagerepo

9.刪除容器

格式:
docker container rm [選項] <容器ID|容器名>
選項:
-f :通過SIGKILL信號強制刪除一個運行中的容器;
-l :移除容器間的網(wǎng)絡連接寺晌,而非容器本身;
-v :-刪除與容器關(guān)聯(lián)的卷;
例如:
docker container rm -f ad586a31
docker container rm suspicious_curie
docker container prune #清理所有終止狀態(tài)的容器世吨;

10.殺掉容器

格式:
docker kill [選項] <容器ID|容器名>
選項:
-s, --signal string:向容器發(fā)送一個信號;
例如:
docker kill vsp7hp632exeh3d2e

11.暫蜕胝鳎恢復容器

docker pause <容器ID|容器名>
docker unpause <容器ID|容器名>

12.修改容器名稱

格式:
docker rename 容器名 新容器名
例如:
docker rename ss_registry.1.pjm registry

13.查看容器日志

格式:
docker container logs [選項] <容器ID|容器名>
選項:
--details:
-f, --follow:跟蹤日志輸出耘婚;
--since string:顯示某個開始時間的所有日志;
--tail string:僅列出最新N條容器日志陆赋;
-t, --timestamps:顯示時間戳沐祷;
--until string:顯示某個日期之前的日志內(nèi)容嚷闭;
例如:
docker container logs -f 1b819fb9e71c #追蹤日志內(nèi)容;
docker container logs -t --tail 2 1b819fb9e71c #顯示最新2條日志內(nèi)容戈轿;
docker container logs -t --until 2019-08-02 1b819fb9e71c #顯示8月2日之前所有日志內(nèi)容凌受;

14.查看容器詳細信息

格式:
docker inspect [選項] <容器ID|容器名>
選項:
-s, --size:顯示總的文件大小思杯;
--type string:為指定類型返回JSON胜蛉;
例如:
docker inspect 1b819fb9e71c

15.查看容器內(nèi)部進程

例如:
docker top 1b819fb9e71c

16.阻塞運行直到容器停止

例如:docker wait 1b819fb9e71c

17.查看容器端口映射

格式:
docker port <容器ID|容器名> <PRIVATE_PORT[/PROTO]>
例如:
docker port 1b819fb9e71c

18.檢查容器文件結(jié)構(gòu)更改

格式:
docker diff <容器ID>
例如:
docker diff 1b819fb9e71c

三、Docker數(shù)據(jù)管理

容器中數(shù)據(jù)管理分為兩種方式:
數(shù)據(jù)卷(Volumes)
掛載主機目錄 (Bind mounts)

1.創(chuàng)建數(shù)據(jù)卷

格式:
docker volume create [選項] <數(shù)據(jù)卷名稱>
選項:
-d, --driver string:
--label list:
-o, --opt map:
例如:
docker volume create web-vol

2.查看數(shù)據(jù)卷

格式:
docker volume ls [選項]
選項:
-f, --filter filter:
--format string:
-q, --quiet:只顯示數(shù)據(jù)卷名稱(volume names)色乾;
例如:
docker volume ls
docker inspect web-vol #查看數(shù)據(jù)卷詳細信息誊册;

3.掛載數(shù)據(jù)卷

格式:
-v <source:target>
--help <source:target>
--mount [type],<source|src>,<destination|dst|target>,[readonly],[volume-opt]
參數(shù):
readonly:掛載為只讀;
例如:
docker run -d --name web --mount source=web-vol,target=/web nginx:v1.2
docker run -d --name web --mount source=/data/web,target=/web nginx:v1.2
docker run -d --name web - v web-vol:/web nginx:v1.2

4.刪除數(shù)據(jù)卷

格式:
docker volume rm <volumes names>
例如:
docker volume rm web-vol
docker volume prune #清理無主的數(shù)據(jù)卷暖璧;

四案怯、Docker網(wǎng)絡

提示:更多網(wǎng)絡配置查看網(wǎng)絡文檔;

1.網(wǎng)絡相關(guān)設置

-b BRIDGE或--bridge=BRIDGE:指定容器掛載的網(wǎng)橋澎办;
--bip=CIDR:定制 docker0 的掩碼
-H SOCKET...或--host=SOCKET...:Docker服務端接收命令的通道嘲碱;
--icc=true|false:是否支持容器之間進行通信
--ip-forward=true|false:請看下文容器之間的通信
--iptables=true|false:是否允許 Docker 添加 iptables 規(guī)則
--mtu=BYTES:容器網(wǎng)絡中的 MTU

運行時配置:

--dns=IP_ADDRESS:使用指定的DNS服務器;
--dns-search=DOMAIN:指定DNS搜索域局蚀;
-h HOSTNAME或--hostname=HOSTNAME:配置容器主機名麦锯;
--link=CONTAINER_NAME:ALIAS:添加到另一個容器的連接;
--net=bridge|none|container:NAME_or_ID|host:配置容器的橋接模式琅绅;
-p SPEC或--publish=SPEC:映射容器端口到宿主主機扶欣;
-P or --publish-all=true|false:映射容器所有端口到宿主主機;

2.端口映射

-p:指定映射端口,格式:-p [IP:]hostPort:containerPort千扶;
-P:隨機映射一個端口料祠;
例如:
docker run -d -P registry:latest
docker run -d -p 5000:5000 registry:latest
docker run -d -p 192.168.88.100::5000 registry:latest

3.查看端口映射

docker port bdf12f

4.容器互聯(lián)

創(chuàng)建網(wǎng)絡
格式:
docker network create [選項] <NetworkName>
選項:
-d, --driver:指定網(wǎng)絡類型;
例如:
docker network create -d bridge app
創(chuàng)建容器指定app網(wǎng)絡
docker run -d --name nginx --network app nginx:v1.2
docker run -d --name tomcat --network app tomcat:v0.2

5.DNS配置

vim /etc/docker/daemon.json

{
  "dns" : [
    "61.139.2.69",
    "8.8.8.8"
  ]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末澎羞,一起剝皮案震驚了整個濱河市髓绽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌妆绞,老刑警劉巖梧宫,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異摆碉,居然都是意外死亡塘匣,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門巷帝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忌卤,“玉大人,你說我怎么就攤上這事楞泼〕刍玻” “怎么了笤闯?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長棍厂。 經(jīng)常有香客問我颗味,道長,這世上最難降的妖魔是什么牺弹? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任浦马,我火速辦了婚禮,結(jié)果婚禮上张漂,老公的妹妹穿的比我還像新娘晶默。我一直安慰自己,他們只是感情好航攒,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布磺陡。 她就那樣靜靜地躺著,像睡著了一般漠畜。 火紅的嫁衣襯著肌膚如雪币他。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天憔狞,我揣著相機與錄音蝴悉,去河邊找鬼。 笑死躯喇,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的硝枉。 我是一名探鬼主播廉丽,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼妻味!你這毒婦竟也來了正压?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤匿刮,失蹤者是張志新(化名)和其女友劉穎瞬测,沒想到半個月后配乓,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡嘉裤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了栖博。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屑宠。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖仇让,靈堂內(nèi)的尸體忽然破棺而出典奉,到底是詐尸還是另有隱情躺翻,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布卫玖,位于F島的核電站公你,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏假瞬。R本人自食惡果不足惜陕靠,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望笨触。 院中可真熱鬧懦傍,春花似錦、人聲如沸芦劣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虚吟。三九已至寸认,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間串慰,已是汗流浹背偏塞。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留邦鲫,地道東北人灸叼。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像庆捺,于是被迫代替她去往敵國和親古今。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容