当前位置:   article > 正文

docker镜像与容器基本的基本操作(三)_docker rm image

docker rm image

目录

一、docker基本命令

1.1、查看镜像——docker images

1.2、查看所有状态容器——docker ps -a

 1.3、docker —— run 指令

 工作流程简单解释:

1.4、查看docker版本命令(docker -v)

 1.5 、查看docker信息(docker info)

1.6、docker帮助命令文档(docker --help)

二、docker镜像操作

2.1、搜索镜像(公共仓库)(docker search)

2.2、下载镜像(docker pull)

2.3、查看镜像列表(docker images)

2.4、获取镜像信息(docker inspect)

2.5、添加镜像标签(docker tag 定位)

2.6、导出镜像(docker save)

2.7、删除镜像(docker rmi)

 2.8、批量删除镜像

​编辑

 2.9、导入镜像——docker load

2.10、批量打包镜像

三、容器操作

3.1、查询所有容器运行状态(docker ps -a)

3.2、创建容器(基于镜像)docker create

3.3、启动/停止容器(docker start/stop)

3.4、启动容器(一次性执行)—docker run

3.5、日志 端口  重命名

3.5.1查看容器运行日志

3.5.2查看容器端口信息

 3.5.3  容器重命名

3.6、查看容器ip地址—docker inspect

3.7、进入容器—docker exec

扩展:生产方式进入容器

3.8、容器导出/导入—docker export/import 

3.9、删除容器—docker rm -f

3.10、容器打包为镜像 

 查看docker消耗的资源状态

 四、总结

4.1、如果镜像优化?

4.2、怎么看当下有多大号容器,怎么看当下所有容器占用的I/O有多少,占用内存多少?

4.3、容器有哪些状态?

4.4、overlay2由哪几部分组成 ?

面试题:


docker的一些基本命令操作

一、docker基本命令

1.1、查看镜像——docker images

  1. #查看下载到本地的所有镜像
  2. docker images
  3. REPOSITORY TAG IMAGE ID CREATED SIZE
  4. --------------------------------------------------------------------------------
  5. REPOSITORY:镜像属于的仓库;
  6. TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
  7. IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像,经过md5方式加密过;
  8. CREATED:镜像创建时间;
  9. VIRTUAL SIZE:镜像大小;
  10. #选项
  11. -a //列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
  12. --digests //显示镜像的摘要信息;
  13. -f //显示满足条件的镜像;
  14. --format //指定返回值的模板文件;
  15. --no-trunc //显示完整的镜像信息;
  16. -q //只显示镜像ID

1.2、查看所有状态容器——docker ps -a

  1. docker ps -a #-a 选项可以显示所有的容器
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. ##字段说明
  4. CONTAINER ID:容器的ID号
  5. IMAGE:加载的镜像
  6. COMMAND :运行的程序
  7. CREATED :创建时间
  8. STATUS:当前的状态
  9. PORTS:端口映射
  10. NAMES:名称

 1.3、docker —— run 指令

docker run hello-world

run指令 运行

①**检测**本地有没有该镜像(没有的话直接到docker hub上下载)

②create(将镜像创建为容器)+ start 将创建好的容器运行起来

 

 工作流程简单解释:

(1)docker client客户端连接到了服务端(服务端是以一个守护进程的形式跑在操作系统里面的) restful api典型的c/s架构

(2)由docker服务端的守护进程从docker hub 上下载了镜像(Ps:服务端会先检查本地系统是否有这个镜像)
(3)服务端创建了一个新的容器,然后从拉去的这个镜像启动了一个容器,容器执行了脚本/可执行程序让我们可以查看/使用(client)
(4)docker 服务端把这些信息流(传递)返回到客户端并展示出来,(展示在终端上)
(5)docker client可以是多种形式,比如"docker"命令工具所在的终端

1.4、查看docker版本命令(docker -v)

  1. docker version
  2. docker -v

 1.5 、查看docker信息(docker info)

  1. docker info
  2. #可以用该命令统计每一个状态的容器有多少个
  3. Client:
  4. Context: default
  5. Debug Mode: false
  6. Plugins:
  7. app: Docker App (Docker Inc., v0.9.1-beta3)
  8. buildx: Docker Buildx (Docker Inc., v0.7.1-docker)
  9. scan: Docker Scan (Docker Inc., v0.12.0)
  10. Server:
  11. Containers: 1 #容器连接数量
  12. Running: 0 #正在运行的容器数量
  13. Paused: 0 #暂停的容器数量
  14. Stopped: 1 #停止的容器数量
  15. Images: 2 #统计的镜像数量
  16. Server Version: 20.10.12 #docker版本
  17. Storage Driver: overlay2 #存储引擎,早期有一段用的是aufa存储引擎,可以把多个目录叠在在一起后挂载到同一个目录一下
  18. Backing Filesystem: xfs #后端的文件系统
  19. Supports d_type: true
  20. Native Overlay Diff: true
  21. userxattr: false
  22. Logging Driver: json-file
  23. Cgroup Driver: cgroupfs #linux中资源控制,资源管理的驱动:cgroupfs
  24. Cgroup Version: 1
  25. Plugins: #插件
  26. Volume: local #镜像默认保存位置。可以不保存在本地,docker是以引擎的方式架设在linux之上的。
  27. Network: bridge host ipvlan macvlan null overlay #所支持的默认的网络类型。bridge(桥接)、host(主机)、ipvlan(三层模式划分vlan)、macvlan(二层模式划分vlan)、null(躺平:不与别人交互)、overlay(叠加网络)
  28. Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
  29. Swarm: inactive
  30. Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc #运行时
  31. Default Runtime: runc #默认运行时的版本
  32. Init Binary: docker-init
  33. containerd version: 7b11cfaabd73bb80907dd23182b9347b4245eb5d
  34. runc version: v1.0.2-0-g52b36a2
  35. init version: de40ad0
  36. Security Options:
  37. seccomp
  38. Profile: default
  39. Kernel Version: 3.10.0-693.el7.x86_64
  40. Operating System: CentOS Linux 7 (Core)
  41. OSType: linux
  42. Architecture: x86_64
  43. CPUs: 4 #总计cpu
  44. Total Memory: 1.718GiB #总计内存
  45. Name: docker
  46. ID: DT7Y:MDZR:NVOS:NQBJ:C2RV:L5IS:OSLD:E3DG:3PSN:EJDH:ZYMU:42HS
  47. Docker Root Dir: /var/lib/docker #docker家目录
  48. Debug Mode: false
  49. Registry: https://index.docker.io/v1/ #默认仓库
  50. Labels:
  51. Experimental: false
  52. Insecure Registries:
  53. 127.0.0.0/8
  54. Registry Mirrors:
  55. https://4abdkxlk.mirror.aliyuncs.com/
  56. Live Restore Enabled: false

1.6、docker帮助命令文档(docker --help)

docker --help

二、docker镜像操作

2.1、搜索镜像(公共仓库)(docker search)

默认是在公共仓库找,如果有私有仓库,会在私有仓库找

  1. #格式:docker search 关键字
  2. #示例:
  3. docker search hello-word
  4. docker search nginx
  5. docker search centos:7
  6. ——》同时我们也可以自己制作镜像推送到docker hub上
  7. Docker Hub(Docker埠,内有大量存储库或叫仓库)是Docker提供的一项服务,用于查找和与团队共享容器镜像。

2.2、下载镜像(docker pull)

  1. #格式:docker pull 仓库名称[:标签]
  2. #如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。
  3. docker pull centos:7
  4. docker pull nginx

2.3、查看镜像列表(docker images)

docker images

 

2.4、获取镜像信息(docker inspect

  1. #格式:docker inspect 镜像ID
  2. #示例:查看nginx镜像信息
  3. docker insect 605c77e624dd

 下面解释下镜象信息

 

2.5、添加镜像标签(docker tag 定位)

  1. #格式:docker tag 名称:[旧标签] 新名称:[新标签]
  2. #示例:
  3. docker tag nginx:latest nginx:lnmp #给nginx打上标签lnmp,原来的标签是latest

2.6、导出镜像(docker save)

  1. #导出镜像
  2. #格式:docker save -o 存储文件名 存储的镜像
  3. docker save -o nginx_docker nginx:latest #存出镜像命名为nginx存在当前目录下
  4. scp nginx_v1 @root:192.168.10.20:/opt #将导出的镜像以scp方式导到别的服务器上

2.7、删除镜像(docker rmi)

docker rmi是docker rm image的简写

  1. #格式:
  2. docker rmi 仓库名称:标签 #当一个镜像有多个标签时,只是删除其中指定的标签
  3. docker rmi 镜像ID号 #会彻底删除该镜像

 2.8、批量删除镜像

  1. #docker images -q 可以加载镜像id
  2. #批量删除所有镜像
  3. docker rmi `docker images -q`
  4. #批量删除nginx镜像
  5. docker rmi `docker images|grep "nginx"

 

 

 2.9、导入镜像——docker load

  1. #导入镜像,可以异地导入,但是必须要有docker引擎,并且版本不可以差太多
  2. #格式:docker load < 存出的文件
  3. docker load < nginx_lnmp

2.10、批量打包镜像

docker save -o 包名.tar 镜像1 镜像2 镜像3 

例:  批量打包方法

将机器上的所有镜像打包到xiao.tar文件里面

docker save $(docker images | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o zmk.tar

 迁移到其他主机,解压加载镜像: 

docker  load  -i     haha.tar

三、容器操作

3.1、查询所有容器运行状态(docker ps -a)

  1. docker ps -a
  2. #选项:
  3. -a : 显示所有的容器,包括未运行的。
  4. -f : 根据条件过滤显示的内容。
  5. --format : 指定返回值的模板文件。
  6. -l : 显示最近创建的容器。
  7. -n : 列出最近创建的n个容器。
  8. --no-trunc : 不截断输出。
  9. -q : 静默模式,只显示容器编号。
  10. -s : 显示总的文件大小。
  1. docker ps -a
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 容器的ID号 加载的镜像 运行的程序 创建时间 当前的状态 端口映射 名称

3.2、创建容器(基于镜像)docker create

  1. 新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。
  2. #格式:docker create [选项] 镜像
  3. #常用选项:
  4. -i:让容器的输入保持打开
  5. -t:让 Docker 分配一个伪终端
  6. -d:后台守护进程的方式运行
  7. #示例:
  8. docker create -it nginx:latest /bin/bash

 

3.3、启动/停止容器(docker start/stop)

  1. #格式:docker start 容器的ID/名称
  2. docker start b2a57b3ea48a
  3. docker ps -a
  4. 停止容器
  5. docker stop 容器ID

3.4、启动容器(一次性执行)—docker run

  1. #加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束。
  2. #示例1
  3. docker run -itd nginx:latest /bin/bash
  4. #示例2:执行后退出
  5. docker run centos:7 /usr/bin/bash -c ls /
  6. #示例3:执行后不退出,以守护进程方式执行持续性任务
  7. docker run -d centos:7 /bin/bash -c "while true;do echo hello;done"

 例2:

 

例3:

  1. watch -n 2 docker ps -a
  2. 每两秒执行一次docker ps -a

3.5、日志 端口  重命名

3.5.1查看容器运行日志

  1. #命令格式:
  2. docker logs [容器id]
  3. #命令效果:
  4. $ docker logs 7c5a24a68f96

3.5.2查看容器端口信息

  1. #命令格式:
  2. docker port [容器id]
  3. #命令效果:
  4. $ docker port 930f29ccdf8a
  5. #没有效果没有和宿主机关联

 3.5.3  容器重命名

  1. #作用:
  2. 修改容器的名称
  3. #命令格式:
  4. docker rename [容器id]或[容器名称] [容器新名称]
  5. #命令效果:
  6. $ docker rename 930f29ccdf8a u1

3.6、查看容器ip地址—docker inspect

  1. #格式:docker inspect 容器id
  2. docker ps -a #先查看运行时容器的id
  3. docker inspect e5f97c4ce37f

 先查看运行时容器的id

 

 查看容器ip地址

3.7、进入容器—docker exec

进入容器的容器状态必须是up状态

exec和shell 是两种运行模式

 

docker run -it会创建前台进程,但是会在输入exit后终止进程。

docker attach会通过连接stdin,连接到容器内输入输出流,会在输入exit后终止容器进程

docker exec -it 会连接到容器,可以像sSH一样进入容器内部,进行操作,可以通过exit退出容器,不影响容器运行。
 

  1. #需要进入容器进行命令操作时,可以使用 docker exec 命令进入运行着的容器。
  2. #格式:docker exec -it 容器ID/名称 /bin/bash
  3. -i 选项表示让容器的输入保持打开;
  4. -t 选项表示让 Docker 分配一个伪终端。
  5. #示例:进入(三种方式)
  6. docker run -itd centos:7 /bin/bash #先运行容器
  7. docker ps -a
  8. ①使用run进入,可以使用ctrl+d退出,直接退出终端
  9. docker run -it centos:7 /bin/bash
  10. ②想永久性进入,退出后还是运行状态,用docker exec
  11. docker ps -a
  12. docker exec -it b99e0771c4e1 /bin/bash
  13. ③docker attach,会通过连接stdin,连接到容器内输入输出流,公在输入exit后终止容器进程(临时性的,不推荐)

①使用run进入,是一次性进入

 

②永久性进入,用docker exec

扩展:生产方式进入容器

生产中常用的进入容器方法是使用脚本

  1. #!/bin/bash
  2. #定义进入仓库函数
  3. docker_in(){
  4. NAME_ID=$1
  5. PID=$(docker inspect --format {{.State.Pid}} $NAME_ID)
  6. nsenter --target $PID --mount --uts --ipc --net --pid
  7. }
  8. docker_in $1

3.8、容器导出/导入—docker export/import 

用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为文件,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。

  1. #导出格式:docker export 容器ID/名称 > 文件名
  2. docker export 4ca1bf9275c4 > nginx_latest
  3. #导入格式:cat 文件名 | docker import – 镜像名称:标签
  4. 法①
  5. docker import nginx_latest nginx_v1 #导入后会生成镜像,但不会创建容器
  6. 法②
  7. cat nginx_latest |docker import - nginx_v2

 导出:

 

导入:

方法一:

 方法二:

3.9、删除容器—docker rm -f

  1. #格式:docker rm [-f] 容器ID/名称
  2. 1.#不能删除运行状态的容器,只能-f强制删除,或者先停止再删除
  3. docker rm 3224eb044879
  4. 2.#已经退出的容器,可以直接删除
  5. docker rm 1270a6791069
  6. 3.#基于名称匹配的方式删除
  7. docker rm -f distracted_panini
  8. 4.#删除所有运行状态的容器
  9. docker rm -f `docker ps -q`
  10. 5.#删除所有容器
  11. docker rm -f `docker ps -aq`
  12. 6.#有选择性的批量删除 (正则匹配)
  13. docker ps -a l awk ' {print "docker rm "$1}'l bash
  14. 7.#删除退出状态的容器
  15. for i in `dockef ps -a l grep -i exit / awk '{print $1}' '; do docker rm -f $i;done

 

不能删除运行状态的容器,只能-f强制删除,或者先停止再删除

 已经退出的容器,可以直接删除

  扩展:自定义一个容器

  1. docker run -it --name nginx \
  2. -v /data_nginx/:/usr/local/nginx/conf \
  3. -v /log_nginx:/usr/local/nginx/logs \
  4. log-driver=json-file \
  5. log-opts max-size=500m \
  6. log-opts max-file=3 \
  7. -p 81:80 \
  8. -P 8443:443 \
  9. --network ky19 \
  10. --ip 172.18.0.10 \
  11. nginx:latest

3.10、容器打包为镜像 

  1. docker run -itd --name nginx.01 nginx:latest /bin/bash
  2. ###指定一个容器运行
  3. docker commit 8d0eb4fd2119 nginx-v1beta
  4. ### commit 直接提交

 

 查看docker消耗的资源状态

docker stats

 

 四、总结

4.1、如果镜像优化?

  • 有效减少镜像大小(dockerfile 优化方向-》对于部分企业而言,是一种升阶面试题)

4.2、怎么看当下有多大号容器,怎么看当下所有容器占用的I/O有多少,占用内存多少?

使用docker stats命令查看

4.3、容器有哪些状态?

Docker容器可以有四种状态:

  • 运行

  • 已暂停

  • 重新启动

  • 已退出

4.4、overlay2由哪几部分组成 ?

LowerDir

MergedDir

UpperDir

WorkDir

面试题:

容器状态有哪些,分别是什么场景?

up exsit(0 137)  created
0:是正常退出
137:是异常退出


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/80404?site
推荐阅读
相关标签
  

闽ICP备14008679号