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 3b307a09d20dUID PID PPID C STIME TTY TIME CMDroot 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 < registry-2.7.1.tar
3. docker search
這個(gè)命令可以幫助你在命令行中方便的搜索 DockerHub 中的鏡像,比如:
➜ ~ docker search nginxNAME DESCRIPTION STARS OFFICIAL AUTOMATEDnginx 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… 123bitnami/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… 73alfg/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 events2020-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.6IMAGE CREATED CREATED BY SIZE COMMENT5212a87ddaba 5 months ago /bin/sh -c #(nop) LABEL org.opencontainers.… 0B
7. docker wait
這個(gè)命令可以查看容器的退出狀態(tài),比如:
➜ ~ docker wait 7f7f0522a7d00
這樣你就可以知道這個(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 38c59255bf6eC /etcA /etc/localtimeC /varC /var/libA /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
- ......