美文网首页
Docker命令详解

Docker命令详解

作者: 我可能是个假开发 | 来源:发表于2023-06-05 22:36 被阅读0次

    一、帮助启动命令

    启动docker : systemctl start docker

    停止dockersystemctl stop docker

    重启dockersystemctl restart docker

    查看docker状态systemctl status docker

    开机启动systemctl enable docker

    查看docker概要信息docker info

    查看docker总体帮助文档docker --help

    查看docker命令帮助文档docker 具体命令 --help

    [root@localhost ~]# docker cp --help
    
    Usage:  docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
            docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
    
    Copy files/folders between a container and the local filesystem
    
    Use '-' as the source to read a tar archive from stdin
    and extract it to a directory destination in a container.
    Use '-' as the destination to stream a tar archive of a
    container source to stdout.
    
    Options:
      -a, --archive       Archive mode (copy all uid/gid information)
      -L, --follow-link   Always follow symbol link in SRC_PATH
    

    二、镜像命令

    1.docker images

    列出本地主机上的镜像docker images

    OPTIONS:

    • -a :列出本地所有的镜像(含历史映像层)
    • -q :只显示镜像ID
    [root@localhost ~]# docker images
    REPOSITORY                                      TAG                     IMAGE ID       CREATED         SIZE
    minio/minio                                     latest                  1370947c8f2f   2 weeks ago     363MB
    lhstack/small-dns                               latest                  96cd34ad57b3   10 months ago   12.4MB
    agent                                           1.0.0                   918981bf63a2   11 months ago   574MB
    openjdk                                         8                       5bf086edab5e   12 months ago   526MB
    mongo                                           latest                  96c85f49715a   12 months ago   690MB
    redis                                           latest                  1ca2c2a1b554   12 months ago   117MB
    mariadb                                         latest                  6e0162b44a5f   14 months ago   414MB
    openresty/openresty                             1.19.9.1-4-alpine-fat   b9ec71f7ed51   18 months ago   340MB
    docker.elastic.co/elasticsearch/elasticsearch   7.2.0                   0efa6a3de177   3 years ago     861MB
    mobz/elasticsearch-head                         5-alpine                e2a76963bc18   6 years ago     78.9MB
    
    [root@localhost ~]# docker images -a
    REPOSITORY                                      TAG                     IMAGE ID       CREATED         SIZE
    minio/minio                                     latest                  1370947c8f2f   2 weeks ago     363MB
    lhstack/small-dns                               latest                  96cd34ad57b3   10 months ago   12.4MB
    agent                                           1.0.0                   918981bf63a2   11 months ago   574MB
    <none>                                          <none>                  3827347179f4   11 months ago   574MB
    <none>                                          <none>                  f3502886a517   11 months ago   574MB
    <none>                                          <none>                  94d28d355ddc   11 months ago   574MB
    <none>                                          <none>                  3d9be7f6987b   11 months ago   526MB
    <none>                                          <none>                  141fbfacaf04   11 months ago   526MB
    <none>                                          <none>                  d98daa7f14e1   11 months ago   526MB
    openjdk                                         8                       5bf086edab5e   12 months ago   526MB
    mongo                                           latest                  96c85f49715a   12 months ago   690MB
    redis                                           latest                  1ca2c2a1b554   12 months ago   117MB
    mariadb                                         latest                  6e0162b44a5f   14 months ago   414MB
    openresty/openresty                             1.19.9.1-4-alpine-fat   b9ec71f7ed51   18 months ago   340MB
    docker.elastic.co/elasticsearch/elasticsearch   7.2.0                   0efa6a3de177   3 years ago     861MB
    mobz/elasticsearch-head                         5-alpine                e2a76963bc18   6 years ago     78.9MB
    
    [root@localhost ~]# docker images -q
    1370947c8f2f
    96cd34ad57b3
    918981bf63a2
    5bf086edab5e
    96c85f49715a
    1ca2c2a1b554
    6e0162b44a5f
    b9ec71f7ed51
    0efa6a3de177
    e2a76963bc18
    
    • REPOSITORY:镜像的仓库源
    • TAG:镜像的标签版本号
    • IMAGE ID:镜像ID
    • CREATED:镜像创建时间
    • SIZE:镜像大小

    同一仓库源可以有多个TAG版本,代表这个仓库源的不同版本,使用REPOSITORY:TAG 来定义不同的镜像。如果不指定一个镜像的版本标签,例如只使用 ubuntu,docker 将默认使用ubuntu:latest 镜像

    虚悬镜像dangling image:上图中仓库名、标签都是<none>的镜像

    2.docker search

    docker search 镜像名字:从docker hub(https://hub.docker.com)上查找对应的镜像。

    [root@localhost ~]# docker search hello-world
    NAME                                       DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    hello-world                                Hello World! (an example of minimal Dockeriz…   2039      [OK]       
    kitematic/hello-world-nginx                A light-weight nginx container that demonstr…   152                  
    tutum/hello-world                          Image to test docker deployments. Has Apache…   90                   [OK]
    dockercloud/hello-world                    Hello World!                                    20                   [OK]
    crccheck/hello-world                       Hello World web server in under 2.5 MB          17                   [OK]
    vad1mo/hello-world-rest                    A simple REST Service that echoes back all t…   7                    [OK]
    rancher/hello-world                                                                        4                    
    ansibleplaybookbundle/hello-world-db-apb   An APB which deploys a sample Hello World! a…   2                    [OK]
    ppc64le/hello-world                        Hello World! (an example of minimal Dockeriz…   2                    
    thomaspoignant/hello-world-rest-json       This project is a REST hello-world API to bu…   2                    
    ansibleplaybookbundle/hello-world-apb      An APB which deploys a sample Hello World! a…   1                    [OK]
    businessgeeks00/hello-world-nodejs                                                         0                    
    okteto/hello-world                                                                         0                    
    strimzi/hello-world-consumer                                                               0                    
    strimzi/hello-world-producer                                                               0                    
    golift/hello-world                         Hello World Go-App built by Go Lift Applicat…   0                    
    koudaiii/hello-world                                                                       0                    
    freddiedevops/hello-world-spring-boot                                                      0                    
    strimzi/hello-world-streams                                                                0                    
    garystafford/hello-world                   Simple hello-world Spring Boot service for t…   0                    [OK]
    tacc/hello-world                                                                           0                    
    tsepotesting123/hello-world                                                                0                    
    kevindockercompany/hello-world                                                             0                    
    dandando/hello-world-dotnet                                                                0                    
    armswdev/c-hello-world                     Simple hello-world C program on Alpine Linux…   0                    
    
    • NAME:镜像名字
    • DESCRIPTION:镜像说明
    • STARS:点赞数
    • OFFICIAL:是否是官方
    • AUTOMATED:是否是自动构建

    docker search [OPTIONS] 镜像名字:条件查找镜像

    • --limit:只列出n个镜像,默认25个
    [root@localhost ~]# docker search --limit 3 hello-world
    NAME                  DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    hello-world           Hello World! (an example of minimal Dockeriz…   2039      [OK]       
    rancher/hello-world                                                   4                    
    okteto/hello-world                                                    0                    
    

    3.docker pull

    • docker pull 镜像名字:拉取最新版本(相当于docker pull 镜像名字 latest
    • docker pull 镜像名字 [:tag]:拉取指定版本
    [root@localhost ~]# docker pull hello-world
    Using default tag: latest
    latest: Pulling from library/hello-world
    719385e32844: Pull complete 
    Digest: sha256:fc6cf906cbfa013e80938cdf0bb199fbdbb86d6e3e013783e5a766f50f5dbce0
    Status: Downloaded newer image for hello-world:latest
    docker.io/library/hello-world:latest
    
    [root@localhost ~]# docker pull redis:6.2.4
    6.2.4: Pulling from library/redis
    33847f680f63: Pull complete 
    26a746039521: Pull complete 
    18d87da94363: Pull complete 
    78e9d65cb9ae: Pull complete 
    985fcd1202ac: Pull complete 
    ffbec49e5b6a: Pull complete 
    Digest: sha256:6bc98f513258e0c17bd150a7a26f38a8ce3e7d584f0c451cf31df70d461a200a
    Status: Downloaded newer image for redis:6.2.4
    docker.io/library/redis:6.2.4
    

    4.docker system df

    查看镜像/容器/数据卷所占空间

    [root@localhost ~]# docker system df
    TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
    Images          12        9         3.556GB   631.5MB (17%)
    Containers      10        3         318.4kB   318.4kB (99%)
    Local Volumes   19        6         1.205GB   119.9MB (9%)
    Build Cache     0         0         0B        0B
    

    5.docker rmi

    docker rmi 镜像名字/ID

    • 删除单个:docker rmi -f 镜像ID
    • 删除多个:docker rmi -f 镜像名1:TAG 镜像名2:TAG
    • 删除全部:docker rmi -f $(docker images -qa)
    [root@localhost ~]# docker images
    REPOSITORY                                      TAG                     IMAGE ID       CREATED         SIZE
    minio/minio                                     latest                  1370947c8f2f   2 weeks ago     363MB
    hello-world                                     latest                  9c7a54a9a43c   4 weeks ago     13.3kB
    lhstack/small-dns                               latest                  96cd34ad57b3   10 months ago   12.4MB
    agent                                           1.0.0                   918981bf63a2   11 months ago   574MB
    openjdk                                         8                       5bf086edab5e   12 months ago   526MB
    mongo                                           latest                  96c85f49715a   12 months ago   690MB
    redis                                           latest                  1ca2c2a1b554   12 months ago   117MB
    mariadb                                         latest                  6e0162b44a5f   14 months ago   414MB
    openresty/openresty                             1.19.9.1-4-alpine-fat   b9ec71f7ed51   18 months ago   340MB
    redis                                           6.2.4                   9dae5b22eb39   22 months ago   105MB
    docker.elastic.co/elasticsearch/elasticsearch   7.2.0                   0efa6a3de177   3 years ago     861MB
    mobz/elasticsearch-head                         5-alpine                e2a76963bc18   6 years ago     78.9MB
    [root@localhost ~]# docker rmi 9dae5b22eb39
    Untagged: redis:6.2.4
    Untagged: redis@sha256:6bc98f513258e0c17bd150a7a26f38a8ce3e7d584f0c451cf31df70d461a200a
    Deleted: sha256:9dae5b22eb39cce1b58967d6425a2617b51338a2fdab3a05a66d2fa12f11f094
    Deleted: sha256:38887028d023f832c8af04be98c6794e22f6ccf77f523d364fe37888970f56db
    Deleted: sha256:8d159ba2313ce920e80fbc1cc5f5c3c5e99d36f601531720f2ccbb966b79376c
    Deleted: sha256:64cee1d06a6acc67a7125d52976f840b0aa9e52719d1dbf631420f32482d4ccd
    Deleted: sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d
    Deleted: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68
    Deleted: sha256:814bff7343242acfd20a2c841e041dd57c50f0cf844d4abd2329f78b992197f4
    

    三、容器命令

    1.新建+启动容器

    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

    • --name="容器新名字" 为容器指定一个名称;
    • -d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);
    • -i:以交互模式运行容器,通常与 -t 同时使用;
    • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;也即启动交互式容器(前台有伪终端,等待交互);
    • -P: 随机端口映射
    • -p: 指定端口映射
    -p hostPort:containerPort:端口映射 -p 8080:80
    -p ip:hostPort:containerPort:配置监听地址 -p 10.0.0.0:8080:80
    -p ip::containerPort:随机分配端口 -p 10.0.0.0::80
    -p hostPort:containerPort:udp:指定协议 -p 8080:80:tcp
    -p 80:80 -p 443:443:指定多个
    
    hongcaixia@hongcaixiadeMacBook-Pro ~ % docker run -it centos bash
    [root@83c857543d80 /]# ps -ef
    UID        PID  PPID  C STIME TTY          TIME CMD
    root         1     0  0 13:19 pts/0    00:00:00 bash
    root        16     1  0 13:20 pts/0    00:00:00 ps -ef
    [root@83c857543d80 /]# ls -lf
    home  media  etc  sbin  mnt  .  bin  tmp  lib  dev  opt  root  run  proc  sys  usr  srv  ..  lib64  var  lost+found  .dockerenv
    [root@83c857543d80 /]# exit
    exit
    hongcaixia@hongcaixiadeMacBook-Pro ~ % docker run --name=mycentos centos
    hongcaixia@hongcaixiadeMacBook-Pro ~ % docker ps -a
    CONTAINER ID   IMAGE                                                 COMMAND                  CREATED          STATUS                      PORTS                                                 NAMES
    4e548998672e   centos                                                "/bin/bash"              5 seconds ago    Exited (0) 3 seconds ago                                                          mycentos
    83c857543d80   centos                                                "bash"                   10 minutes ago   Exited (0) 7 minutes ago                                                          naughty_lehmann
    7355d7e19de5   centos                                                "bash"                   10 minutes ago   Exited (0) 10 minutes ago                                                         heuristic_edison
    

    2.查看当前所有正在运行的容器

    docker ps [OPTIONS]

    • -a :列出当前所有正在运行的容器+历史上运行过的
    • -l :显示最近创建的容器。
    • -n:显示最近n个创建的容器。
    • -q :静默模式,只显示容器编号。
    hongcaixia@hongcaixiadeMacBook-Pro ~ % docker ps -a
    CONTAINER ID   IMAGE                                                 COMMAND                  CREATED          STATUS                      PORTS                                                 NAMES
    4e548998672e   centos                                                "/bin/bash"              5 seconds ago    Exited (0) 3 seconds ago                                                          mycentos
    83c857543d80   centos                                                "bash"                   10 minutes ago   Exited (0) 7 minutes ago                                                          naughty_lehmann
    7355d7e19de5   centos                                                "bash"                   10 minutes ago   Exited (0) 10 minutes ago                                                         heuristic_edison
    e7e2b18fadf0   apacherocketmq/rocketmq-dashboard:latest              "sh -c 'java $JAVA_O…"   7 weeks ago      Exited (255) 4 days ago     0.0.0.0:8080->8080/tcp, :::8080->8080/tcp             rocketmq-dashboard
    e13b2badcf88   xuxueli/xxl-job-admin:2.3.1                           "sh -c 'java -jar $J…"   2 months ago     Up 13 hours                 0.0.0.0:8787->8081/tcp, :::8787->8081/tcp             xxl-job
    da73c24a7fda   nginx                                                 "/docker-entrypoint.…"   2 months ago     Exited (0) 2 months ago                                                           nginx
    06d84894f6ca   centos:latest                                         "/bin/bash"              2 months ago     Up 12 hours                                                                       elated_matsumoto
    5c2845b99941   docker.elastic.co/elasticsearch/elasticsearch:7.1.0   "/usr/local/bin/dock…"   4 months ago     Exited (255) 2 months ago   0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 9300/tcp   es7_01
    a14873b0bdec   docker.elastic.co/kibana/kibana:7.1.0                 "/usr/local/bin/kiba…"   4 months ago     Exited (255) 2 months ago   0.0.0.0:5601->5601/tcp, :::5601->5601/tcp             kibana7
    c089a67feb25   docker.elastic.co/elasticsearch/elasticsearch:7.1.0   "/usr/local/bin/dock…"   4 months ago     Exited (137) 4 months ago                                                         es7_02
    5047a993af2a   lmenezes/cerebro:0.8.3                                "/opt/cerebro/bin/ce…"   4 months ago     Exited (255) 2 months ago   0.0.0.0:9000->9000/tcp, :::9000->9000/tcp             cerebro
    0f12d73328e5   hello-world                                           "/hello"                 4 months ago     Exited (0) 4 months ago                                                           tender_jackson
    4716629faa58   bitnami/kafka                                         "/opt/bitnami/script…"   4 months ago     Exited (255) 4 months ago   9092/tcp                                              sad_booth
    21a958642038   zookeeper                                             "/docker-entrypoint.…"   4 months ago     Exited (255) 4 months ago   2181/tcp, 2888/tcp, 3888/tcp, 8080/tcp                elegant_antonelli
    
    hongcaixia@hongcaixiadeMacBook-Pro ~ % docker ps -q
    e13b2badcf88
    06d84894f6ca
    
    hongcaixia@hongcaixiadeMacBook-Pro ~ % docker ps -n 1
    CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                     PORTS     NAMES
    4e548998672e   centos    "/bin/bash"   4 minutes ago   Exited (0) 4 minutes ago             mycentos
    hongcaixia@hongcaixiadeMacBook-Pro ~ % 
    

    3.退出容器

    • exit:容器停止
    • ctrl+p+q:容器不停止

    4.启动已停止的容器

    docker start 容器ID/容器名

    hongcaixia@hongcaixiadeMacBook-Pro ~ % docker ps -n2
    CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                      PORTS     NAMES
    4e548998672e   centos    "/bin/bash"   11 minutes ago   Exited (0) 11 minutes ago             mycentos
    83c857543d80   centos    "bash"        22 minutes ago   Exited (0) 19 minutes ago             naughty_lehmann
    hongcaixia@hongcaixiadeMacBook-Pro ~ % docker start 4e548998672e
    4e548998672e
    hongcaixia@hongcaixiadeMacBook-Pro ~ % 
    

    5.重启容器

    docker restart 容器ID/容器名

    6.停止容器

    docker stop 容器ID/容器名

    7.强制停止容器

    docker kill 容器id/容器名

    8.删除已经停止的容器

    docker rm 容器id

    一次性删除多个容器实例:

    • docker rm -f $(docker ps -a -q)
    • docker ps -a -q | xargs docker rm
    hongcaixia@hongcaixiadeMacBook-Pro ~ % docker ps -n2            
    CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                      PORTS     NAMES
    4e548998672e   centos    "/bin/bash"   13 minutes ago   Exited (0) 2 seconds ago              mycentos
    83c857543d80   centos    "bash"        23 minutes ago   Exited (0) 20 minutes ago             naughty_lehmann
    hongcaixia@hongcaixiadeMacBook-Pro ~ % docker rm 4e548998672e
    4e548998672e
    
    hongcaixia@hongcaixiadeMacBook-Pro ~ % docker ps
    CONTAINER ID   IMAGE                         COMMAND                  CREATED        STATUS        PORTS                                       NAMES
    e13b2badcf88   xuxueli/xxl-job-admin:2.3.1   "sh -c 'java -jar $J…"   2 months ago   Up 13 hours   0.0.0.0:8787->8081/tcp, :::8787->8081/tcp   xxl-job
    06d84894f6ca   centos:latest                 "/bin/bash"              2 months ago   Up 13 hours                                               elated_matsumoto
    hongcaixia@hongcaixiadeMacBook-Pro ~ % docker rm e13b2badcf88
    Error response from daemon: You cannot remove a running container e13b2badcf884fc97d7ccfe85a066c7b61ae8642715ce08a64f9c00f64c7e955. Stop the container before attempting removal or force remove
    hongcaixia@hongcaixiadeMacBook-Pro ~ % docker rm -f e13b2badcf88
    e13b2badcf88
    

    9.后台运行容器

    run命令执行过程:
    1.Docker在本地寻找镜像
    2.本机存在镜像,以该镜像为模板生产容器实例运行
    3.本机不存在镜像,去docker hub上查找镜像
    4.docker hub找不到,返回错误,查不到该镜像
    5.docker hub找到,下载该镜像到本地,以该镜像为模板生产容器实例运行

    Docker容器后台运行,就必须有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。

    hongcaixia@hongcaixiadeMacBook-Pro ~ % docker run --name=mycentos centos
    hongcaixia@hongcaixiadeMacBook-Pro ~ % docker ps
    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
    

    docker 的服务是在后台运行的, 可以过 -d 指定容器的后台运行模式。
    docker run -d 容器名

    hongcaixia@hongcaixiadeMacBook-Pro ~ % docker run -d redis
    417d29580fad28a8c64b16d52b86c50249f90645a9df68d86db3cee0645b6467
    hongcaixia@hongcaixiadeMacBook-Pro ~ % docker ps
    CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS      NAMES
    417d29580fad   redis     "docker-entrypoint.s…"   3 seconds ago   Up 2 seconds   6379/tcp   hopeful_pascal
    hongcaixia@hongcaixiadeMacBook-Pro ~ % 
    

    10.进入正在运行的容器并以命令行交互

    重新进入已经退出了交互界面的正在运行的容器的交互界面:

    • docker exec -it 容器ID /bin/bash:在容器中打开新的终端,可以启动新的进程;用exit退出,不会导致容器的停止。(推荐)
    • docker attach 容器ID:直接进入容器启动命令的终端,不会启动新的进程;用exit退出,会导致容器的停止。

    11.查看容器日志

    docker logs 容器ID

    12.查看容器内运行的进程

    docker top 容器ID

    root@hmd-jenkins:~# docker top a3d02a8c6f13
    UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
    root                751240              751218              0                   13:33               ?                   00:00:01            tini java -javaagent:./jacocoagent.jar=includes=com.*,output=tcpserver,port=17297,address=0.0.0.0,append=true -jar api.jar --spring.profiles.active=dev
    root                751269              751240              1                   13:33               ?                   00:06:26            java -javaagent:./jacocoagent.jar=includes=com.*,output=tcpserver,port=17297,address=0.0.0.0,append=true -jar api.jar --spring.profiles.active=dev
    root@hmd-jenkins:~#
    

    13.查看容器内部细节

    docker inspect 容器ID

    14.从容器内拷贝文件到主机上

    docker cp 容器ID:容器内路径 目的主机路径

    15.导入和导出容器

    • export: 导出容器的内容留作为一个tar归档文件,对应import命令

    • import: 从tar包中的内容创建一个新的文件系统再导入为镜像,对应export

    • 把镜像导出成文件:docker export 容器ID > 文件名.tar

    • 把文件导入到容器中:cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号

    四、总结

    image.png

    相关文章

      网友评论

          本文标题:Docker命令详解

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