10個(gè)冷門卻實(shí)用的Docker使用技巧
在平時(shí)的工作中,docker 接觸得很多,除了經(jīng)常使用的 docker run ,docker stop 等命令,docker 還有很多十分有用但是卻不經(jīng)常使用的命令,下面就來總結(jié)一下:
1. docker top
這個(gè)命令是用來查看一個(gè)容器里面的進(jìn)程信息的,比如你想查看一個(gè) nginx 容器里面有幾個(gè) nginx 進(jìn)程的時(shí)候,就可以這么做:
docker?top?3b307a09d20d
UID??????PID????PPID????C????STIME??TTY????TIME???????CMD
root?????805????787?????0????Jul13???????00:00:00??nginx:?master?process?nginx?-g?daemon?off;
systemd+?941?????805?????0???Jul13????????00:03:18??nginx:?worker?process
2. docker load && docker save
我一般使用這兩個(gè)命令去下載打包 Kubernetes 的鏡像,因?yàn)槟阒赖膰?guó)內(nèi)的網(wǎng)速并不像國(guó)外那么快。
docker save 可以把一個(gè)鏡像保存到 tar 文件中,你可以這么做:
~?docker?save?registry:2.7.1?>registry-2.7.1.tar
#同時(shí)?docker?load?可以把鏡像從?tar?文件導(dǎo)入到?docker?中
~?docker?load?
3. docker search
這個(gè)命令可以幫助你在命令行中方便的搜索 DockerHub 中的鏡像,比如:
~?docker?search?nginx
NAME???????????????????????????????DESCRIPTION?????????????????????????????????????STARS???????????????OFFICIAL????????????AUTOMATED
nginx??????????????????????????????Official?build?of?Nginx.????????????????????????13519???????????????[OK]
jwilder/nginx-proxy????????????????Automated?Nginx?reverse?proxy?for?docker?con…???1846????????????????????????????????????[OK]
richarvey/nginx-php-fpm????????????Container?running?Nginx?+?PHP-FPM?capable?of…???780?????????????????????????????????????[OK]
linuxserver/nginx??????????????????An?Nginx?container,?brought?to?you?by?LinuxS…???123
bitnami/nginx??????????????????????Bitnami?nginx?Docker?Image??????????????????????87??????????????????????????????????????[OK]
tiangolo/nginx-rtmp????????????????Docker?image?with?Nginx?using?the?nginx-rtmp…???85??????????????????????????????????????[OK]
jc21/nginx-proxy-manager???????????Docker?container?for?managing?Nginx?proxy?ho…???73
alfg/nginx-rtmp????????????????????NGINX,?nginx-rtmp-module?and?FFmpeg?from?sou…???71??????????????????????????????????????[OK]
nginxdemos/hello???????????????????NGINX?webserver?that?serves?a?simple?page?co…???57??????????????????????????????????????[OK]
jlesage/nginx-proxy-manager????????Docker?container?for?Nginx?Proxy?Manager????????53??????????????????????????????????????[OK]
nginx/nginx-ingress????????????????NGINX?Ingress?Controller?for?Kubernetes?????????37
......
當(dāng)然這個(gè)功能在國(guó)內(nèi)可能不會(huì)特別好用,因?yàn)?.....
4. docker events
這個(gè)命令可以幫助你實(shí)時(shí)獲取 docker 的各種事件信息,比如創(chuàng)建了一個(gè)容器什么的。
~?docker?events
2020-07-28T21:28:46.000403018+08:00?image?load?sha256:432bf69f0427b52cad10897342eaf23521b7d973566354118e9a59c4d31b5fae?(name=sha256:432bf69f0427b52cad10897342eaf23521b7d973566354118e9a59c4d31b5fae)
5. docker update
當(dāng)你 docker run 了之后卻發(fā)現(xiàn)里面有一些參數(shù)并不是你想要的狀態(tài)比如你設(shè)置的 nginx 容器 cpu 或者內(nèi)存太小,這個(gè)時(shí)候你就可以使用 docker update 去修改這些參數(shù)。
~?docker?update?nginx?--cpus?2
6. docker history
當(dāng)你修改了一個(gè)鏡像,但是忘記了每一層的修改命令,或者你想查看一個(gè)鏡像是怎么構(gòu)建的時(shí)候就可以使用這個(gè)命令,比如:
~?docker?history??traefik:v2.1.6
IMAGE???????????????CREATED?????????????CREATED?BY??????????????????????????????????????SIZE????????????????COMMENT
5212a87ddaba????????5?months?ago????????/bin/sh?-c?#(nop)??LABEL?org.opencontainers.…???0B
???????????5?months?ago????????/bin/sh?-c?#(nop)??CMD?["traefik"]??????????????0B
???????????5?months?ago????????/bin/sh?-c?#(nop)??ENTRYPOINT?["/entrypoint.…???0B
???????????5?months?ago????????/bin/sh?-c?#(nop)??EXPOSE?80????????????????????0B
???????????5?months?ago????????/bin/sh?-c?#(nop)?COPY?file:59a219a1fb7a9dc8…???419B
???????????5?months?ago????????/bin/sh?-c?set?-ex;??apkArch="$(apk?--print-…???52.9MB
???????????5?months?ago????????/bin/sh?-c?apk?--no-cache?add?ca-certificate…???1.85MB
???????????6?months?ago????????/bin/sh?-c?#(nop) ??CMD?["/bin/sh"]??????????????0B
???????????6?months?ago????????/bin/sh?-c?#(nop)?ADD?file:a1906f14a4e217a49…???4.81MB
7. docker wait
這個(gè)命令可以查看容器的退出狀態(tài),比如:
~?docker?wait?7f7f0522a7d0
0
這樣你就可以知道這個(gè)容器是正常退出的還是異常退出的了。
8. docker pause && docker unpause
當(dāng)你運(yùn)行了一個(gè)容器但是想要暫停它運(yùn)行的時(shí)候,你就可以使用這個(gè)命令。
~?docker?pause?7f7f0522a7d0
9. docker diff
當(dāng)你運(yùn)行了一個(gè)容器,但是你不知道容器里修改了哪一些文件的時(shí)候可以使用這個(gè)命令,比如:
~?docker?diff?38c59255bf6e
C?/etc
A?/etc/localtime
C?/var
C?/var/lib
A?/var/lib/registry
10. docker stats
這個(gè)是 docker 內(nèi)置的監(jiān)控命令,當(dāng)你想要查看當(dāng)前主機(jī)下所有容器占用內(nèi)存和 cpu 的情況的時(shí)候就可以使用這個(gè)命令。
~?docker?stats
CONTAINER?ID????????NAME????????????????????????CPU?%???????????????MEM?USAGE?/?LIMIT?????MEM?%???????????????NET?I/O?????????????BLOCK?I/O???????????PIDS
1c5ade04e7f9????????redis????????????????????????0.08%???????????????17.53MiB?/?47.01GiB???0.04%???????????????10.9GB?/?37GB???????0B?/?0B?????????????4
afe6d4ebe409????????kafka-exporter????????????????0.09%???????????????16.91MiB?/?47.01GiB???0.04%???????????????1.97GB?/?1.53GB?????752MB?/?0B??????????23
f0c7c01a9c34????????kafka-docker_zookeeper?????????0.01%???????????????308.8MiB?/?47.01GiB???0.64%???????????????20.2MB?/?12.2MB?????971MB?/?3.29MB??????28
da8c5008955f????????kafka-docker_kafka-manager?????0.08%???????????????393.2MiB?/?47.01GiB???0.82%???????????????1.56MB?/?2.61MB?????1.14GB?/?0B?????????60
c8d51c583c49????????kafka-docker_kafka????????????1.63%???????????????1.256GiB?/?47.01GiB???2.67%???????????????30.4GB?/?48.9GB?????22.3GB?/?5.77GB?????85
......
原文:http://suo.im/6n2lLa
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!