镜像命令

docker images [options]

查看本地主机的所有镜像

  1. kpsmile@kpsmile-PC:~/Desktop$ docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. hello-world latest feb5d9fea6a5 10 months ago 13.3kB

参数描述:

  1. # 解释:
  2. 1.REPOSITORY 镜像的仓库源
  3. 2.TAG 镜像的标签
  4. 3.IMAGE ID 镜像的id
  5. 4.CREATED 镜像的创建时间
  6. 5.SIZE 镜像的大小
  7. # OPTIONS可选参数
  8. -a/--all 列出所有镜像
  9. -q/--quiet 只显示镜像的id

docker search [options] 镜像名

搜索镜像

docker命令 - 图1参数描述:

  1. #可选参数
  2. Search the Docker Hub for images
  3. Options:
  4. -f, --filter filter Filter output based on conditions provided
  5. --format string Pretty-print search using a Go template
  6. --limit int Max number of search results (default 25)
  7. --no-trunc Don\'t truncate output
  8. #搜索收藏数大于3000的镜像
  9. $ docker search mysql --filter=STARS=3000
  10. #搜索前5个镜像
  11. $ docker search mysql --limit 5 redis

docker pull 镜像名[:tag]

下载镜像

docker命令 - 图2

参数描述

  1. #没有tag就是获取最新版本
  2. $ docker pull redis
  3. #等价于
  4. $ docker pull redis:latest

docker rmi [options]

删除镜像

docker命令 - 图3

docker命令 - 图4

docker命令 - 图5

docker命令 - 图6

参数描述

  1. #1.删除指定的镜像id
  2. $ docker rmi -f 镜像id
  3. #2.删除多个镜像id
  4. $ docker rmi -f 镜像id 镜像id 镜像id
  5. #3.删除全部的镜像id
  6. $ docker rmi -f $(docker images -aq)
  7. #4.删除指定的镜像名
  8. $ docker rmi -f 镜像名
  9. #5.删除指定版本号的镜像名
  10. $ docker rmi -f 镜像名:tag

docker system df

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

docker命令 - 图7

容器命令

运行容器 docker run

docker run [options] image [command] [args]

options参数

  • —name=”continerName” 指定容器名字
  • -d 后台运行容器,并返回容器id
  • -i 以交互模式运行容器,通常与 -t 同时使用
  • -t 为容器重新分配一个伪终端,通常与 -i 同时使用
  • -p 指定容器的端口
    • -p ip:主机端口:容器端口 配置主机端口映射到容器端口
    • -p 主机端口:容器端口
    • -p 容器端口
  • -P 随机指定端口(大写的P)

docker run —name=”redis02” -p 6381:6379 -d 7614ae9453d1

docker命令 - 图8

docker run -it —name=”ubuntu01” ba6acccedd29 /bin/bash

docker命令 - 图9

退出容器 Ctrl+P+Q

  1. #exit 停止并退出容器(后台方式运行则仅退出)
  2. #Ctrl+P+Q 不停止容器退出

列出容器 docker ps

  1. #docker ps
  2. # 列出当前正在运行的容器
  3. -a # 列出所有容器的运行记录
  4. -n=? # 显示最近创建的n个容器 (default -1)
  5. -q # 只显示容器的编号
  6. -s # 显示总文件大小

删除容器 docker rm

  1. # 选项:
  2. -f # 移除正在运行的容器(使用SIGKILL)
  3. -l # 移除容器间的网络连接,而非容器本身
  4. -v # 删除与容器关联的卷
  5. docker rm 容器id # 删除指定的容器,不能删除正在运行的容器,强制删除使用 rm -f
  6. docker rm -f $(docker ps -aq) # 删除所有的容器
  7. 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 logs --help
  2. Usage: docker logs [OPTIONS] CONTAINER
  3. Fetch the logs of a container
  4. Options:
  5. -f # 跟踪日志输出 (相当于 tail -f XXXX)
  6. --since # 显示某个开始时间的所有日志
  7. -t # 显示时间戳
  8. -n # 仅列出最新N条容器日志(默认为“全部”)
  9. 常用:
  10. docker logs -tf 容器id
  11. docker logs --tail number 容器id #num为要显示的日志条数
  12. docker logs -n number 容器id #num为要显示的日志条数
  13. #docker容器后台运行,必须要有一个前台的进程,否则会自动停止
  14. #编写shell脚本循环执行,使得centos容器保持运行状态
  15. $ docker run -d ubuntu /bin/sh -c "while true;do echo hi;sleep 5;done"
  16. f51f3cbb27511b49d85c98fa62691a1a19397d4a272a8cc7d4769d3d6ec41f2a
  17. $ docker ps
  18. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  19. d57e2b89c979 ubuntu "/bin/sh -c 'while t…" 10 seconds ago Up 9 seconds busy_ride
  20. kpsmile@kpsmile-PC:~/Desktop$ docker logs -tf --tail 10 d57e2b89c979
  21. 2022-08-07T15:43:57.343609834Z hi
  22. 2022-08-07T15:44:02.345601162Z hi
  23. 2022-08-07T15:44:07.349546909Z hi
  24. 2022-08-07T15:44:12.352118827Z hi
  25. 2022-08-07T15:44:17.354935652Z hi
  26. 2022-08-07T15:44:22.357180030Z hi
  27. 2022-08-07T15:44:27.362205405Z hi
  28. 2022-08-07T15:44:32.367300518Z hi
  29. 2022-08-07T15:44:37.369158150Z hi
  30. 2022-08-07T15:44:42.373163230Z hi
  31. 2022-08-07T15:44:47.377194459Z hi
  32. 2022-08-07T15:44:52.379655128Z hi

查看容器中进程信息

  1. # 命令 docker top 容器id
  2. kpsmile@kpsmile-PC:~/Desktop$ docker top d57e2b89c979
  3. UID PID PPID C STIME TTY TIME CMD
  4. root 3987 3968 0 23:42 ? 00:00:00 /bin/sh -c while true;do echo hi;sleep 5;done
  5. root 4350 3987 0 23:46 ? 00:00:00 sleep 5

查看镜像的元数据

  1. $ docker inspect 容器id
  2. #docker inspect : 获取容器/镜像的元数据。
  3. #语法
  4. docker inspect [OPTIONS] NAME|ID [NAME|ID...]
  5. #OPTIONS说明:
  6. -f :指定返回值的模板文件。
  7. -s :显示总的文件大小。
  8. --type :为指定类型返回JSON

进入当前正在运行的容器

  1. # 方式一
  2. # 语法
  3. docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
  4. #OPTIONS说明:
  5. -d :分离模式: 在后台运行
  6. -i :即使没有附加也保持STDIN 打开
  7. -t :分配一个伪终端
  8. # 我们通常容器使用后台方式运行的, 需要进入容器,修改一些配置
  9. # 命令
  10. docker exec -it 容器id /bin/bash
  11. # 测试
  12. $ docker exec -it df358bc06b17 /bin/bash
  13. [root@df358bc06b17 /]# ls
  14. bin etc lib lost+found mnt proc run srv tmp var
  15. dev home lib64 media opt root sbin sys usr
  16. [root@df358bc06b17 /]# ps -ef
  17. UID PID PPID C STIME TTY TIME CMD
  18. root 1 0 0 Aug11 pts/0 00:00:00 /bin/bash
  19. root 29 0 0 01:06 pts/1 00:00:00 /bin/bash
  20. root 43 29 0 01:06 pts/1 00:00:00 ps -ef
  21. # 方式二
  22. docker attach 容器id
  23. # docker exec # 进入容器后开启一个新的终端,可以在里面操作
  24. # docker attach # 进入容器正在执行的终端,不会启动新的进程

拷贝容器文件到主机

  1. docker cp 容器id:容器内路径 目的主机路径
  2. #进入容器中
  3. $ docker cp 8b84603c410a:/home/test.java /home
  4. $ ls
  5. alex arod hello.java neos test.java
  6. #拷贝只是一个手动功能,未来我们使用 -v 卷的技术,可以实现自动同步

提交容器为镜像

docker commit -a=”作者” -m=“提交的描述信息” 容器id 要创作的目标镜像名:[标签名]

  1. kpsmile@kpsmile-PC:~$ docker commit -a="wm" -m="Ubuntu with net-tools" 2dc0cfc8ac74 wm/ubuntu:1.0
  2. sha256:40e576052d3f930498b858ba55c76a0386e29932fa306ffef81413005ac65b7c
  3. kpsmile@kpsmile-PC:~$ docker images
  4. REPOSITORY TAG IMAGE ID CREATED SIZE
  5. wm/ubuntu 1.0 40e576052d3f 4 seconds ago 111MB
  6. redis latest 7614ae9453d1 7 months ago 113MB
  7. registry latest b8604a3fe854 8 months ago 26.2MB
  8. ubuntu latest ba6acccedd29 9 months ago 72.8MB

导出容器 docker export

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

docker export 容器ID > 文件名.tar

  1. kpsmile@kpsmile-machine:~$ docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 96a2f98fd3d4 ubuntu "bash" About a minute ago Up About a minute ubuntu03
  4. b9e620363c0c redis "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:6382->6379/tcp, :::6382->6379/tcp redis02
  5. kpsmile@kpsmile-machine:~$ docker export 96a2f98fd3d4 > ubuntu03.tar.gz
  6. kpsmile@kpsmile-machine:~$ ls
  7. Desktop Documents Downloads Music myregistry Pictures Public snap Templates ubuntu03.tar.gz Videos

导入容器 docker import

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

cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号

  1. kpsmile@kpsmile-machine:~$ docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. 192.168.1.29:5000/wm/ubuntu 1.1 c0cad9d8bfb3 22 hours ago 111MB
  4. redis latest 7614ae9453d1 7 months ago 113MB
  5. mysql latest 3218b38490ce 7 months ago 516MB
  6. registry latest b8604a3fe854 8 months ago 26.2MB
  7. ubuntu latest ba6acccedd29 9 months ago 72.8MB
  8. hello-world latest feb5d9fea6a5 10 months ago 13.3kB
  9. centos latest 5d0da3dc9764 10 months ago 231MB
  10. kpsmile@kpsmile-machine:~$ cat ubuntu03.tar.gz | docker import - wm/ubuntu-ifconfig:1.0
  11. sha256:9e8154d445c37eb546037c8094ec8723e9d1c6fb5353b96e57aa88a9401ef64d
  12. kpsmile@kpsmile-machine:~$ docker images
  13. REPOSITORY TAG IMAGE ID CREATED SIZE
  14. wm/ubuntu-ifconfig 1.0 9e8154d445c3 6 seconds ago 111MB
  15. 192.168.1.29:5000/wm/ubuntu 1.1 c0cad9d8bfb3 22 hours ago 111MB
  16. redis latest 7614ae9453d1 7 months ago 113MB
  17. mysql latest 3218b38490ce 7 months ago 516MB
  18. registry latest b8604a3fe854 8 months ago 26.2MB
  19. ubuntu latest ba6acccedd29 9 months ago 72.8MB
  20. hello-world latest feb5d9fea6a5 10 months ago 13.3kB
  21. centos latest 5d0da3dc9764 10 months ago 231MB