美文网首页DOCKERDocker
10 个冷门但又非常实用的 Docker 使用技巧

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

作者: 程序员白楠楠 | 来源:发表于2021-01-22 17:18 被阅读0次

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

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

    2. docker load && docker save

    我一般使用这两个命令去下载打包 Kubernetes 的镜像,因为你知道的国内的网速并不像国外那么快。整理了一份Java面试宝典完整版PDF

    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
    
    

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

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

    4. docker events

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

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

    5. docker update

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

    ~ docker update nginx --cpus 2
    
    

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

    7. docker wait

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

    ~ docker wait 7f7f0522a7d0
    0
    
    

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

    8. docker pause && docker unpause

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

    ~ docker pause 7f7f0522a7d0
    
    

    9. docker diff

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

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

    10. docker stats

    这个是 docker 内置的监控命令,当你想要查看当前主机下所有容器占用内存和 cpu 的情况的时候就可以使用这个命令。整理了一份Java面试宝典完整版PDF

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

    相关文章

      网友评论

        本文标题:10 个冷门但又非常实用的 Docker 使用技巧

        本文链接:https://www.haomeiwen.com/subject/fzelzktx.html