暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

10 个冷门但又非常实用的 Docker 使用技巧

编程那些烦心事 2020-09-18
193



文章来源 | Docker中文社区



在平时的工作中,docker 接触得很多,除了经常使用的 docker run ,docker stop 等命令,docker 还有很多十分有用但是却不经常使用的命令,下面就来总结一下:


docker top


这个命令是用来查看一个容器里面的进程信息的,比如你想查看一个 nginx 容器里面有几个 nginx 进程的时候,就可以这么做:

    ➜  ~ 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


    docker load && docker save


    我一般使用这两个命令去下载打包 Kubernetes 的镜像,因为你知道的国内的网速并不像国外那么快。

    docker save 可以把一个镜像保存到 tar 文件中,你可以这么做:

      ➜  ~ docker save registry:2.7.1 >registry-2.7.1.tar

      同时 docker load 可以把镜像从 tar 文件导入到 docker 中

        ➜  ~ docker load < registry-2.7.1.tar


        docker search


        这个命令可以帮助你在命令行中方便的搜索 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 of780 [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
          ......

          当然这个功能在国内可能不会特别好用,因为......你懂得。


          docker events


          这个命令可以帮助你实时获取 docker 的各种事件信息,比如创建了一个容器什么的。

            ➜  ~ docker events
            2020-07-28T21:28:46.000403018+08:00 image load sha256:432bf69f0427b52cad10897342eaf23521b7d973566354118e9a59c4d31b5fae (name=sha256:432bf69f0427b52cad10897342eaf23521b7d973566354118e9a59c4d31b5fae)


            docker update


            当你 docker run 了之后却发现里面有一些参数并不是你想要的状态比如你设置的 nginx容器 cpu 或者内存太小,这个时候你就可以使用 docker update 去修改这些参数。

              ➜  ~ docker update nginx --cpus 2


              docker history


              当你修改了一个镜像,但是忘记了每一层的修改命令,或者你想查看一个镜像是怎么构建的时候就可以使用这个命令,比如:

                ➜  ~ docker history  traefik:v2.1.6
                IMAGE CREATED CREATED BY SIZE COMMENT
                5212a87ddaba 5 months ago bin/sh -c #(nop) LABEL org.opencontainers.… 0B
                <missing> 5 months ago bin/sh -c #(nop) CMD ["traefik"] 0B
                <missing> 5 months ago bin/sh -c #(nop) ENTRYPOINT ["/entrypoint.… 0B
                <missing> 5 months ago bin/sh -c #(nop) EXPOSE 80 0B
                <missing> 5 months ago bin/sh -c #(nop) COPY file:59a219a1fb7a9dc8… 419B
                <missing> 5 months ago bin/sh -c set -ex; apkArch="$(apk --print-… 52.9MB
                <missing> 5 months ago bin/sh -c apk --no-cache add ca-certificate… 1.85MB
                <missing> 6 months ago bin/sh -c #(nop) CMD ["/bin/sh"] 0B
                <missing> 6 months ago bin/sh -c #(nop) ADD file:a1906f14a4e217a49… 4.81MB


                docker wait


                这个命令可以查看容器的退出状态,比如:

                  ➜  ~ docker wait 7f7f0522a7d0
                  0

                  这样你就可以知道这个容器是正常退出的还是异常退出的了。


                  docker pause && docker unpause


                  当你运行了一个容器但是想要暂停它运行的时候,你就可以使用这个命令。

                    ➜  ~ docker pause 7f7f0522a7d0


                    docker diff


                    当你运行了一个容器,但是你不知道容器里修改了哪一些文件的时候可以使用这个命令,比如:

                        ~ docker diff 38c59255bf6e
                      C /etc
                      A /etc/localtime
                      C /var
                      C /var/lib
                      A /var/lib/registry


                      docker stats


                      这个是 docker 内置的监控命令,当你想要查看当前主机下所有容器占用内存和 cpu 的情况的时候就可以使用这个命令。

                          ~ 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
                        ......


                        文章转载自编程那些烦心事,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                        评论