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

一、Docker鏡像管理

1.搜索鏡像

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

2.獲取鏡像

格式:
docker pull [選項] [Docker Registry 地址[:端口號]/]倉庫名[:標(biāo)簽]
選項:
-a:拉取所有tag鏡像;
--disable-content-trust :忽略鏡像的校驗,默認(rèn)開啟;
例如:
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ù)標(biāo)簽內(nèi)容過濾出鏡像;

3.2.查看鏡像體積

docker system df

3.3.查看虛懸鏡像

docker image ls -f dangling=true
解釋:什么屬于虛懸鏡像?倉庫名、標(biāo)簽均為<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|倉庫名:標(biāo)簽|鏡像摘要 >
docker image rm [-f] < 鏡像名|鏡像ID|倉庫名:標(biāo)簽|鏡像摘要 >
注意:Untagged 和 Deleted;
因為一個鏡像可能對應(yīng)不同的標(biāo)簽,根據(jù)倉庫名:標(biāo)簽刪除鏡像,顯示“Untagged”實際是上刪除標(biāo)簽;

5.鏡像導(dǎo)出/導(dǎo)入

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

格式:
docker import [選項] <文件>|<URL>|- [<倉庫名>[:<標(biāo)簽>]]
例如:
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 導(dǎo)入時才有repository:tag
docker save -o xxx.tar 鏡像ID #生成在當(dāng)前目錄下
docker save -i xx.tar
docker save > xxx.tar

5.3.導(dǎo)入鏡像

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或容器名> [<倉庫名>[:<標(biāo)簽>]]
選項:
-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)建鏡像的倉庫名:標(biāo)簽;

6.2.Dockerfile

格式:
docker build [選項] <上下文路徑/URL/->
--build-arg=[] :設(shè)置鏡像創(chuàng)建時的變量;
--cpu-shares :設(shè)置 cpu 使用權(quán)重;
--cpu-period :限制 CPU CFS周期;
--cpu-quota :限制 CPU CFS配額;
--cpuset-cpus :指定使用的CPU id;
--cpuset-mems :指定使用的內(nèi)存 id;
--disable-content-trust :忽略校驗,默認(rèn)開啟;
-f :指定要使用的Dockerfile路徑;
--force-rm :設(shè)置鏡像過程中刪除中間容器;
--isolation :使用容器隔離技術(shù);
--label=[] :設(shè)置鏡像使用的元數(shù)據(jù);
-m :設(shè)置內(nèi)存最大值;
--memory-swap :設(shè)置Swap的最大值為內(nèi)存+swap,"-1"表示不限swap;
--no-cache :創(chuàng)建鏡像的過程不使用緩存;
--pull :嘗試去更新鏡像的新版本;
-q :安靜模式,成功后只輸出鏡像ID;
--rm :設(shè)置鏡像成功后刪除中間容器;
--shm-size :設(shè)置/dev/shm的大小,默認(rèn)值是64M;
--ulimit :Ulimit配置。
例如:
docker build Dokcerfile .
docker build - < Dockerfile #從標(biāo)準(zhǔn)輸入讀取Dockerfile構(gòu)建;
cat Dockerfile | docker build -
docker build context.tar.gz #tar壓縮包構(gòu)建
docker build - < context.tar.gz #從標(biāo)準(zhǔn)輸入中讀取tar壓縮包構(gòu)建
docker build twang2218/gitlab-ce-zh.git#:8.14 #基于Git Repo構(gòu)建
注意:
如果標(biāo)準(zhǔn)輸入傳入的是文件,將被視為Dockerfile,并開始構(gòu)建,但是由于這種方式是直接從標(biāo)準(zhǔn)輸入中讀取Dockerfile文件內(nèi)容,它沒有上下文,因此不可以像其他方法那樣將本地方文件COPY進鏡像之類的事情;
如果標(biāo)準(zhǔn)輸入傳入的是壓縮文件,文件格式是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
注意:如果不指定倉庫地址,默認(rèn)登陸Hub倉庫;

標(biāo)記鏡像

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

上傳鏡像到鏡像倉庫

格式:
docker push [選項] <倉庫名:標(biāo)簽>
--disable-content-trust :忽略鏡像的校驗,默認(rèn)開啟;
例如:
docker push registry:v1.3

二、Docker容器管理

1.容器操作命令

docker container [選項] [參數(shù)]
選項:
attach:將標(biāo)準(zhǔn)輸入輸出及錯誤附加入容器,當(dāng)退出時容器也跟隨退出;
commit:從容器構(gòu)建一個新鏡像;
cp:容器與本地之間相互復(fù)制文件或文件夾;
create:創(chuàng)建一個新容器;
diff:檢查容器文件系統(tǒng)的改變;
exec:進入正在運行的容器中;
export:導(dǎo)出容器的文件系統(tǒng)作為tar文件;
inspect:將tar文件導(dǎo)入成鏡像;
kill:殺死一個或多個正在運行的容器;
logs:獲取容器日志;
ls:列出容器;
pause:暫停一個或多個運行的容器的所有進程;
port:列出容器映射端口;
prune:刪除所有已停止的容器;
rename:修改容器名稱;
restart:重啟一個或多個容器;
rm:刪除一個或多個容器;
run:運行容器;
start:啟動一個或多個容器;
stats:查看容器狀態(tài);
stop:停止一個或多個容器;
top:查看容器內(nèi)部運行進程;
unpause:恢復(fù)一個或多個容器中暫停的所有進程;
update:更新一個或多個容器配置;
wait:等待阻塞,直到一個或多個容器停止,輸出退出代碼;

2.創(chuàng)建容器

格式:
docker create [選項] <鏡像名:標(biāo)簽|鏡像ID>
格式:
--name:指定容器名稱;
--network:指定容器連接網(wǎng)絡(luò);
-h,--hostname:指定主機名稱,例如:-h web 或 --hostname=web;
--dns:指定容器DNS,例如:--dns=61.139.2.69
--dns-search:設(shè)置容器搜索域;
--restart string:指定重啟策略,默認(rèn)為no,on-failure表示容器狀態(tài)非0重啟,always表示只要退出就重啟;

3.啟動容器

docker container start 容器ID #啟動一個沒有運行的容器;
docker run -itd centos /bin/bash #創(chuàng)建容器并運行,并進入容器中;
-a stdin: 指定標(biāo)準(zhǔn)輸入輸出內(nèi)容類型,可選 STDIN/STDOUT/STDERR 三項;
-d: 后臺運行容器;
-i: 以交互模式運行容器;
-t: 分配一個偽輸入終端;
-v:將本地目錄加載到容器,實例 -v /data:/data/www
--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=[]: 開放一個端口或一組端口;
--restart string:指定重啟策略,默認(rèn)為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)建的容器,默認(rèn)-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:設(shè)置環(huán)境變量;
-i, --interactive:即使沒有附加也保持STDIN 打開;
--privileged:賦予命令擴展權(quán)限;
-t, --tty:分配一個偽終端;
-u, --user string:設(shè)置用戶名,格式: <name|uid>[:<group|gid>];
-w, --workdir string:指定容器內(nèi)的目錄;
例如:
docker exec -it 31e61e /bin/bash

7.復(fù)制

格式:
從容器復(fù)制到本地:
docker cp [選項] 容器ID|容器名:源文件路徑 目標(biāo)路徑

從本地復(fù)制到容器:

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

8.導(dǎo)出導(dǎo)入(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 - 倉庫名:標(biāo)簽
例如:
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)絡(luò)連接,而非容器本身;
-v :-刪除與容器關(guān)聯(lián)的卷;
例如:
docker container rm -f ad586a31
docker container rm suspicious_curie
docker container prune #清理所有終止?fàn)顟B(tài)的容器;

10.殺掉容器

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

11.暫?;謴?fù)容器

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)絡(luò)

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

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

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

運行時配置:

--dns=IP_ADDRESS:使用指定的DNS服務(wù)器;
--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)絡(luò)
格式:
docker network create [選項] <NetworkName>
選項:
-d, --driver:指定網(wǎng)絡(luò)類型;
例如:
docker network create -d bridge app
創(chuàng)建容器指定app網(wǎng)絡(luò)
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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容