IT评测·应用市场-qidao123.com

标题: Docker篇——Docker常用命令大全!史上最全面的Docker命令,涵盖通例命令、 [打印本页]

作者: 惊雷无声    时间: 2024-7-27 21:19
标题: Docker篇——Docker常用命令大全!史上最全面的Docker命令,涵盖通例命令、
通例命令

通例命令汇总

  1. docker version #查看Docker版本信息
  2. docker info #显示Docker的系统信息,包括镜像和容器的数量
  3. docker 命令 --help #查看所有的命令
  4. systemctl status docker  #查看docker运行状态
复制代码
镜像根本命令

检察全部镜像

检察全部镜像
  1. docker images #查看所有的镜像
复制代码
测试
  1. [root@test docker]# docker images
  2. REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
  3. docker.io/hello-world   latest              feb5d9fea6a5        19 months ago       13.3 kB
  4. docker.io/centos        latest              5d0da3dc9764        19 months ago       231 MB
  5. 解释:
  6. repository 镜像的仓库源
  7. tag        镜像的标签
  8. image id   镜像的id
  9. created    镜像创建时间
  10. size       镜像大小
复制代码
可选项
  1. -a, --all  #列出所有的镜像
  2. -q,--quiet #只显示镜像的id
复制代码
搜刮镜像

搜刮镜像
  1. docker search 镜像
复制代码
测试
  1. [root@test docker]# docker search mysql
  2. INDEX       NAME                                      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
  3. docker.io   docker.io/mysql                           MySQL is a widely used, open-source relati...   14061     [OK]       
  4. docker.io   docker.io/mariadb                         MariaDB Server is a high performing open s...   5369      [OK]       
复制代码
可选项
  1. -f,--filter #根据提供的条件过滤输出
  2. [root@test docker]#  docker search mysql -f stars=1000 #搜索mysql下载量大于1000的结果!
  3. INDEX       NAME                DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
  4. docker.io   docker.io/mysql     MySQL is a widely used, open-source relati...   14061     [OK]       
  5. docker.io   docker.io/mariadb   MariaDB Server is a high performing open s...   5369      [OK] 
  6. --limit     #最大搜索结果数
复制代码
下载镜像

1、通例下载
  1. docker pull 镜像名
复制代码
测试
  1. [root@test ~]# docker pull mysql
  2. Using default tag: latest #如果不写tag,默认就是最新的
  3. Trying to pull repository docker.io/library/mysql ... 
  4. latest: Pulling from docker.io/library/mysql
  5. 328ba678bf27: Pull complete  #分层下载,Docker image的核心 联合文件系统
  6. f3f5ff008d73: Pull complete 
  7. dd7054d6d0c7: Pull complete 
  8. 70b5d4e8750e: Pull complete 
  9. cdc4a7b43bdd: Pull complete 
  10. a0608f8959e0: Pull complete 
  11. 5823e721608f: Pull complete 
  12. a564ada930a9: Pull complete 
  13. 539565d00e89: Pull complete 
  14. a11a06843fd5: Pull complete 
  15. 92f6d4aa041d: Pull complete 
  16. Digest: sha256:a43f6e7e7f3a5e5b90f857fbed4e3103ece771b19f0f75880f767cf66bbb6577  #签名
  17. Status: Downloaded newer image for docker.io/mysql:latest #真实地址
复制代码
2、指定版本下载
  1. docker pull 镜像名:版本号
复制代码
测试
  1. [root@test ~]# docker pull mysql:5.7
  2. Trying to pull repository docker.io/library/mysql ... 
  3. 5.7: Pulling from docker.io/library/mysql
  4. e83e8f2e82cc: Pull complete  #这里涉及到一个细节,就是如果我们之前下载的镜像和某个版本的镜像有相同的文件,就不需要下载直接就能使用
  5. 0f23deb01b84: Pull complete 
  6. f5bda3b184ea: Pull complete 
  7. ed17edbc6604: Pull complete 
  8. 33a94a6acfa7: Pull complete 
  9. f153bd2953e4: Pull complete 
  10. ab532edfb813: Pull complete 
  11. c76bdfe4f3d0: Pull complete 
  12. 8a7ffe2f2551: Pull complete 
  13. 857ada4fbbcc: Pull complete 
  14. b7c508404c3c: Pull complete 
  15. Digest: sha256:f57eef421000aaf8332a91ab0b6c96b3c83ed2a981c29e6528b21ce10197cd16
  16. Status: Downloaded newer image for docker.io/mysql:5.7 #最后下载的就是5.7版本的镜像
复制代码
删除镜像

1、根据镜像ID删除对应的镜像
  1. docker rmi -f 镜像ID
复制代码
测试
  1. [root@test ~]# docker images
  2. REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
  3. docker.io/mysql         5.7                 dd6675b5cfea        5 days ago          569 MB
  4. docker.io/mysql         latest              8189e588b0e8        5 days ago          564 MB
  5. docker.io/hello-world   latest              feb5d9fea6a5        19 months ago       13.3 kB
  6. docker.io/centos        latest              5d0da3dc9764        19 months ago       231 MB
  7. [root@test ~]# docker rmi -f dd6675b5cfea #删除mysql5.7版本
  8. Untagged: docker.io/mysql:5.7
  9. Untagged: docker.io/mysql@sha256:f57eef421000aaf8332a91ab0b6c96b3c83ed2a981c29e6528b21ce10197cd16
  10. Deleted: sha256:dd6675b5cfea17abb655ea8229cbcfa5db9d0b041f839db0c24228c2e18a4bdf
  11. Deleted: sha256:ce931a23976217d9a54389e972eb3fc823ec4c2ef51ff712f6330437bd7a373a
  12. Deleted: sha256:64eb3560e160f706ef4994cb38a97d1ce32a219e547ead81fd51766d46c5e1c2
  13. Deleted: sha256:9e009673657831f462ffdacbf099a070f0bb03cbb105483c69470a25ab87efe0
  14. Deleted: sha256:a37428431f1f5ebda54ff32a40299e87a2e5e9b867bfb9c1e6199f9d04850a9a
  15. Deleted: sha256:b5463af91376b3d4772113805dbce79805129326c301a80947cbfd43c8069898
  16. Deleted: sha256:c0a975af561fdd0b68965ca9c572d91244b6dff6124b6a4d66b3188c0cb72d9f
  17. Deleted: sha256:38700ee823d5d82b695bb7d553973c0106384a6984b553e2af6d6fb9545d9636
  18. Deleted: sha256:7cfca860605c4f16b1f255ebd51e2c801e00ac16997c7840428f88a2246cfebb
  19. Deleted: sha256:0d8a62cb129e3cebaaef51f977b670282775d48a9cdaa021a0cb5ed73243a446
  20. Deleted: sha256:66e6e199acb7395ac9a10b125841eafdfa3f80a1a3f710e0a0a9519da228bce2
  21. Deleted: sha256:e74a57638021cebbbe0dda98a27675f9b53258050ee2c29c3e5fb7fb1f3ab533
  22. [root@test ~]# docker images
  23. REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
  24. docker.io/mysql         latest              8189e588b0e8        5 days ago          564 MB
  25. docker.io/hello-world   latest              feb5d9fea6a5        19 months ago       13.3 kB
  26. docker.io/centos        latest              5d0da3dc9764        19 months ago       231 MB
复制代码
2、删除多个的镜像
  1. docker rmi -f 镜像ID 镜像ID 镜像ID ......
复制代码
3、删除全部的镜像
  1. docker rmi -f $(docker images -aq) 
复制代码
构建镜像

  1. docker build -f dockerfile文件 -t 镜像名:版本号 .  
  2. #-f file的意思,后面加要执行的dockerfile文件
  3. #-t tagged的意思,后面加镜像的名称
复制代码
检察镜像的构建过程

  1. docker history 镜像ID
复制代码
通过这个命令,我们可以检察到某个镜像暴露的端口号,以及追溯他们的构建过程,便于我们学习!
容器根本命令

新建容器并启动以及退出容器

首先先在服务器上下载一个centos
  1. docker pull centos
复制代码
1、run 新建容器并启动
留意:如果Docker中没有这个镜像,那么这个run命令会先下载镜像,再创建容器并启动!!!
  1. docker run [可选参数] image(镜像名):版本号(默认是最新版本,想要指定版本需要加上版本号!)
  2. 可选参数:
  3. --name="name" 容器名字,通过一个镜像可以创建多个容器实例,命名可以区分不同的容器
  4. -d  以后台的方式运行 (使用-d命令常见的坑:
  5. 比如我们想启动以下Nginx服务,只让他在后台运行,但是没有前台的服务可以交互,那么系统就会默认把这个服务关掉!不提供服务!)
  6. -it 使用交互方式运行,进入容器查看内容
  7. -p  指定容器的端口
  8.     有四种方式
  9.         -p ip:主机端口:容器端口
  10.         -p 主机端口:容器内部端口(常用,主机端口映射某个容器内部的端口号,访问主机的端口,即可访问容器)
  11.         -p 容器端口
  12.         容器端口
  13. -P(大写)  随机指定端口
  14. --rm  容器关闭后就被删除掉,一般用于测试!
复制代码
端口暴露原理

测试,启动并进入容器
  1. [root@test ~]# docker images
  2. REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
  3. docker.io/centos    latest              5d0da3dc9764        19 months ago       231 MB
  4. [root@test ~]# docker run -it centos /bin/bash
  5. [root@4bb33b21e9b3 /]# ls #查看容器内的centos
  6. bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
复制代码
2、退出容器,退出到主机
(1)退出并停止容器
  1. exit
复制代码
(2)退出但是不绝止
  1. Ctrl + P + Q
复制代码
测试(留意最左边的实例的区别,通过exit命令,退出了刚刚进入的容器)
  1. [root@f72dfcd7674c /]# ls
  2. bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
  3. [root@f72dfcd7674c /]# exit
  4. exit
  5. [root@test /]# ls
  6. bin  boot  data  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
复制代码
测试退出但是不绝止容器(现在检察运行的容器是2个)
  1. [root@test /]# docker run -it centos /bin/bash
  2. [root@dfad547fa530 /]# [root@test /]# docker ps
  3. CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
  4. dfad547fa530        centos              "/bin/bash"         16 seconds ago      Up 16 seconds                           zen_shannon
  5. fa54decee308        centos              "/bin/bash"         12 months ago       Up 12 months                            mydocker
复制代码
列出所有正在运行的容器

  1. docker ps #列出当前正在执行的容器
  2. 可选参数:
  3. -a       #列出当前正在运行的加上历史上运行过和没有运行的容器
  4. -n=?    #显示最近运行的容器的个数
  5. -p       #只显示容器的编号(和docker image -aq相同!!!!!!)
复制代码
测试
  1. [root@test /]# docker ps
  2. CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
  3. fa54decee308        centos              "/bin/bash"         12 months ago       Up 12 months                            mydocker
  4. [root@test /]# docker ps -a
  5. CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
  6. 5a0f80b0a263        centos              "/bin/bash"              55 seconds ago      Exited (127) 37 seconds ago                       stupefied_allen
  7. f72dfcd7674c        centos              "/bin/bash"              3 minutes ago       Exited (0) 3 minutes ago                          musing_mahavira
  8. 4bb33b21e9b3        centos              "/bin/bash"              10 minutes ago      Exited (0) 3 minutes ago                          stupefied_shockley
  9. cf30a58f6bbe        feb5d9fea6a5        "/hello"                 59 minutes ago      Exited (0) 59 minutes ago                         happy_noether
  10. 04bcc4fb5397        feb5d9fea6a5        "/hello"                 5 hours ago         Exited (0) 5 hours ago                            fervent_cray
  11. fa54decee308        centos              "/bin/bash"              12 months ago       Up 12 months                                      mydocker
  12. 71bf5591e4d2        centos              "/bin/echo 'Hello ..."   12 months ago       Exited (0) 12 months ago                          pensive_wozniak
  13. d9428a50b4d4        centos              "/bin/echo 'hello ..."   12 months ago       Exited (0) 12 months ago                          awesome_poitras
  14. 2032da65f464        feb5d9fea6a5        "/hello"                 12 months ago       Exited (0) 12 months ago                          dazzling_bardeen
  15. 466f5bcb945f        feb5d9fea6a5        "/hello"                 12 months ago       Exited (0) 12 months ago                          laughing_hopper
  16. bd54718a0c74        feb5d9fea6a5        "/hello"                 12 months ago       Exited (0) 12 months ago                          hopeful_einstein
  17. [root@test /]# docker ps -aq
  18. 5a0f80b0a263
  19. f72dfcd7674c
  20. 4bb33b21e9b3
  21. cf30a58f6bbe
  22. 04bcc4fb5397
  23. fa54decee308
  24. 71bf5591e4d2
  25. d9428a50b4d4
  26. 2032da65f464
  27. 466f5bcb945f
  28. bd54718a0c74
  29. [root@test /]# docker ps -a -n=1
  30. CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                       PORTS               NAMES
  31. 5a0f80b0a263        centos              "/bin/bash"         5 minutes ago       Exited (127) 4 minutes ago   
复制代码
删除容器

  1. docker rm 容器ID                 #删除指定的容器,不能删除正在运行的容器,如果想强制删除 rm -f
  2. docker rm -f $(docker ps -aq)    #删除所有的容器
  3. docker ps -a -q|xargs docker rm  #删除所有的容器
复制代码
启动和停止容器

  1. docker start 容器ID     #启动容器
  2. docker restart 容器ID   #重启容器
  3. docker stop 容器ID      #停止当前正在运行的容器
  4. docker kill 容器ID      #强制停止正在运行的容器
复制代码
检察容器内部进程信息

  1. docker top 容器ID
复制代码
测试
  1. [root@test /]# docker top dfad547fa530
  2. UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
  3. root                23200               23186               0                   16:09               pts/4               00:00:00            /bin/bash
复制代码
检察容器的元数据

  1. docker inspect 容器id
复制代码
测试(只截取了部分的数据信息,详细的需要实战读取)
 
  1. [root@test /]# docker inspect dfad547fa530 
  2. [
  3.     {
  4.         "Id": "dfad547fa5308f33964c676d6747092943a012f0b9a3223a392918f9be2b9202",
  5.         "Created": "2023-04-23T07:33:11.700487525Z",
  6.         "Path": "/bin/bash",
  7.         "Args": [],
  8.         "State": {
  9.             "Status": "running",
  10.             "Running": true,
  11.             "Paused": false,
  12.             "Restarting": false,
  13.             "OOMKilled": false,
  14.             "Dead": false,
  15.             "Pid": 23200,
  16.             "ExitCode": 0,
  17.             "Error": "",
  18.             "StartedAt": "2023-04-23T08:09:46.402995242Z",
复制代码
进入当前正在运行的容器

1、方式一
命令
  1. docker exec -it(可交互) 容器ID /bin/bash
复制代码
测试
  1. [root@test /]# docker exec -it dfad547fa530 /bin/bash
  2. [root@dfad547fa530 /]# ls
  3. bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
复制代码
2、方式二
命令
  1. docker attach 容器ID 
复制代码
两种方式的区别:
  1. docker exec   #进入容器后开启一个新的终端,可以在里面做一些操作(常用!)
  2. docker attach #进入容器正在执行的终端,不会开启新的进程!
复制代码
从容器中手动拷贝文件到主机

由于容器和宿主机是互相隔离的,容器中的文件和主机是不共享的,但是我们可以通过拷贝来实现文件的共用!
  1. docker cp 容器ID:容器内文件路径 目的主机路径
复制代码
测试
  1. [root@test ~]# docker exec -it dfad547fa530 /bin/bash #进入正在运行的Docker容器
  2. [root@dfad547fa530 /]# ls
  3. bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
  4. [root@dfad547fa530 /]# cd /home/
  5. [root@dfad547fa530 home]# ls
  6. [root@dfad547fa530 home]# touch gh.java #在home下新建文件
  7. [root@dfad547fa530 home]# ls
  8. gh.java
  9. [root@dfad547fa530 home]# exit #退出并关闭容器
  10. exit
  11. [root@test ~]# docker ps
  12. CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
  13. dfad547fa530        centos              "/bin/bash"         19 hours ago        Up 9 minutes                            zen_shannon
  14. fa54decee308        centos              "/bin/bash"         12 months ago       Up 12 months                            mydocker
  15. [root@test ~]# docker cp dfad547fa530:/home/gh.java /home #拷贝命令!拷贝到主机上!
  16. [root@test ~]# cd /home
  17. [root@test home]# ls
  18.  gh.java             
复制代码
常用其他命令

检察日志

  1. docker logs
  2. 可选参数:
  3. -t            #打印时间戳
  4. -f            #实时追踪日志
  5. --tail number #显示指定的日志条数
复制代码
命令总结



至此,关于Docker常见的命令先容完毕,涉及到的命令比较繁杂,渴望大家可以收藏并坚持学习。后续还会连续更新相干技术点,敬请等待~~~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4