docker基础篇-----02-----docker帮助命令、镜像命令、容器命令

2023-11-06

参考文章:【学习笔记】尚硅谷周阳老师的Docker教程学习笔记

一 Docker常用命令

1. docker帮助命令

  • (1) 查看docker版本:
    docker version
  • (2) 查看docker信息:
    docker info
  • (3) docker帮助命令:
    docker --help

2. docker镜像命令

2.1 列出所有镜像

  • docker images:列出本地主机上的镜像,镜像由镜像名:tag唯一标记,tag可认为是版本号。

    • docker images -a:列出本地所有的镜像(含中间映像层)。
    • docker images -q:只显示镜像的id。
    • docker images --digests:显示镜像的摘要信息。
    • docker images --no-trunc:显示完整的镜像信息。
      在这里插入图片描述
      选项说明:
  • REPOSITORY:表示镜像的仓库源。

  • TAG:镜像的标签。

  • IMAGE ID:镜像ID。

  • CREATED:镜像创建时间。

  • SIZE:镜像大小。

2.2 在github搜索镜像

  • docker search 镜像名:在docker hub上搜索某个镜像。
    选项:
    • –automated:弃用,只列出自动构建类型的镜像。
    • –filter , -f:基于给定条件过滤输出。
    • –format:使用模板格式化显示输出。
    • –limit:Max number of search results ,默认值25。
    • –no-trunc:禁止截断输出。
    • –stars , -s:弃用,只显示收藏数不小于几颗星的镜像,移到–filter中使用。

部分例子:

# 1. 只列出automated build类型的镜像。
docker search --automated tomcat					# 低版本
docker search --filter is-automated=true tomcat		# 高版本

# 2. 限制搜索输出个数
docker search redis --limit 5

# 3. 显示完整的镜像描述,即不截断。
docker search --no-trunc tomcat

# 4. 列出starts数不小于30的镜像。
docker search -s 30 tomcat							# 低版本
docker search --filter=stars=30 tomcat				# 高版本,例如我的是20.10.7,执行上面的-s会报错。

2.3 下载镜像

  • docker pull 镜像名:TAG:下载指定TAG的镜像,不加TAG默认为latest。
    例如 docker pull tomcat。

2.4 删除未在使用的镜像

  • docker rmi 镜像名:删除未在使用镜像,若在使用则不能删除,默认删除latest的。
    • docker rmi -f 镜像名:强制删除,即使在使用也可以删除。
    • docker rmi -f 镜像名1:TAG 镜像名2:TAG:删除多个。
    • docker rmi -f $(docker images -qa):删除全部。

3. docker容器命令

docker pull ubuntu

3.1 新建并启动容器

docker run [options] 镜像名|镜像ID [command] [arg...]:新建并启动容器

常用optins:
--name:为容器指定一个名称。
-i:以交互模式运行容器,通常与-t同时使用。
-t:为容器重新分配一个伪输入终端,通常与-i同时使用。
-d:后台运行容,即启动守护式容器。
-P: 随机端口映射,端口由系统自行随机分配。
-p: 指定端口映射,有以下四种格式:
	1)ip:hostPort:containerPort
	2)ip::containerPort
	3)hostPort:containerPort
	4)containerPort
例如,/bin/bash代表command:
docker run -it --name=myubuntu0311 ubuntu /bin/bash

在这里插入图片描述

3.2 列出正在运行的容器

此时新开一个终端输入以下命令,可以看到上面的容器正在运行。

docker ps

在这里插入图片描述
其它选项:

docker ps -a:列出当前所有正在运行的容器+历史上运行过的容器。
docker ps -l:显示最近创建的容器。
docker ps -n 数字:显示最近创建的n个容器。
docker ps -q:静默模式,只显示容器编号。
docker ps --no-trunc:不截断输出。

3.3 退出容器

exit:容器停止退出。
Ctrl+P+Q:容器不停止退出。

注意,进入容器后,Ctrl+C不会退出容器,可以认为没有影响,Ctrl+C只是中断某个操作而已。

演示exit,首先docker ps看到容器正在运行,然后第2步使用exit退出,在使用docker ps看到,容器已经停止退出。
在这里插入图片描述

演示Ctrl+P+Q。

# 1. 首先把原来停止的容器重新启动。
docker start myubuntu0311

# 2. 查看是否启动。
docker ps

# 3. 进入容器。f36b4f7e7614是容器ID,由docker ps获取。
docker exec -it  f36b4f7e7614 /bin/bash

# 4. 按下Ctrl+P+Q。xshell也是可以的,我的环境就是在xshell测试的。

# 5. 再次查看容器,可以看到容器并未退出。
docker ps

如下图:
在这里插入图片描述

但是需要注意,如果创建容器的时候是以守护进程即-d选项创建的话,那么即使你使用exit退出,容器也不会停止的,此时docker ps还是能看到该容器正在运行。
在这里插入图片描述

3.4 启动/重启/停止容器

# 1. 启动容器。
docker start 容器ID或者容器名

# 2. 重启容器。
docker restart 容器ID或者容器名

# 3. 停止容器,类似于电脑关机。
docker stop 容器ID或者容器名

# 4. 强制停止,类似于电脑拔电源关机。
docker kill 容器ID或者容器名

3.5 删除容器

# 1. 删除已停止的容器,若未停止则不删除。
docker rm 容器名

# 2. 强制停止并删除容器。
docker rm -f 容器名

# 3. 删除所有容器。
docker rm -f $(docker ps -aq)

3.6 后台运行容器

# 启动守护式容器,运行在后台,用docker ps查看看不到,因为docker容器想在后台运行,就必须要有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(例如top、tail、或者自己的程序一直在前台运行),那么容器就会自动退出,这种是docker的机制问题。
docker run -d 容器名

# 例如:
# 1. 只加-d参数或者加上--name参数创建容器,docker ps都不会看到这些创建的容器,因为会自动停止了。
docker run -d ubuntu
docker ps
# 不过可以通过-a选项查看以前运行过的容器,证明这些容器确实是有启动过的。
docker ps -a

# 2. 但是注意,如果加上-it,那么表示程序前台运行交互,并启动后台运行。
docker run -it -d --name=myubuntu2 ubuntu
# 此时ps可以看到myubuntu2这个容器是有在运行的。
docker ps

例子的第一点截图:
在这里插入图片描述

例子的第二点截图:
在这里插入图片描述

上面说到,如果只加-d启动容器,如果没有前台进程,那么这个容器会停止运行。
解决方法我一般会使用以下两种:

  • 1)就是在启动容器时,额外添加-it参数,而不能只使用-d参数。这也是比较常用的方法。
例如:docker run -it -d --name=myubuntu2 ubuntu
  • 2)将你要运行的程序以前台的形式运行即可。不过这种比较取巧,一般很少这样用。
例如:docker run -d ubuntu /bin/bash -c "while true;do echo hello world;sleep 2;done"

在这里插入图片描述

3.7 容器日志相关

docker logs [options] 容器ID|容器名:查看容器日志
选项:
-t:加入时间戳。
-f:跟随最新的日志打印(动态打印)。
--tail 数字 容器名:显示最后多少条。
# 如果这个容器继续运行即docker run -d ubuntu /bin/bash -c "while true;do echo hello world;sleep 2;done"
# 1. 那么我们可以查看它的日志。
docker logs 55126741aefc

# 2. 假设时间戳
docker logs -t 55126741aefc

# 3. 动态打印
docker logs -t -f 55126741aefc

# 4. 显示最后多少条。
docker logs -t -f --tail 5 55126741aefc

在这里插入图片描述
加上时间戳后:
在这里插入图片描述
动态打印:
在这里插入图片描述
显示多少条,不过这个只针对一开始显示5条,后续依然会显示多条打印。
在这里插入图片描述

3.8 查看容器内的进程

相当于在容器里面运行了top。

docker top 容器ID|容器名

在这里插入图片描述

3.9 查看容器内部细节

# 查看容器内部细节,返回是json串
docker inspect 容器ID|容器名

由于后面很多内容,所以只截图一小部分。
在这里插入图片描述

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

进入正在运行的容器有两种方法。

  • 1)docker attach 容器ID|容器名。 直接进入容器启动命令的终端,不会启动新的进程,表示有什么操作进去容器再说。
  • 2)docker exec -it 容器ID|容器名 bash命令。 在容器中打开新的终端,并可以启动新的进程。

例如我们使用attach想要在容器执行某个命令,需要进入以后才能操作。而exec可以不用进入容器就可以操作。
在这里插入图片描述
下面直接在容器外就可以看到结果。
在这里插入图片描述

但是注意,如果使用attach进入容器时,如果使用exit退出,则会导致容器停止运行,不管该容器是否以-d后台运行。而使用Ctrl+P+Q则不会。

下面测试看到,不管是否以后台运行,只要attach进入容器后,exit退出后,ps看到容器都停止了。而使用Ctrl+P+Q则不会,这里就不测试这个了,本人已经测试过。
在这里插入图片描述

而使用exec进入容器:
如果非后台运行,那么exit退出会导致容器停止,Ctrl+P+Q则不会。
如果后台运行,那么exit退出不会导致容器停止,Ctrl+P+Q同样不会。
这一点在停止容器时已经测试,这里不再测试。

总结:
attach、exec进入正在运行的容器,exit、Ctrl+P+Q的退出方式 以及 容器是否后台启动 这三者对容器是否会造成退出的影响:

  • 1)若以attach方式进入容器,以exit退出容器,不管是否后台启动,容器都会停止。
  • 2)若以exec方式进入容器,以exit退出容器,若是后台启动,则容器不会停止。若不是后台启动,则容器会停止。
  • 3)不管以attach还是exec进入容器,然后不管是否是后台启动,只要使用Ctrl+P+Q退出容器,都不会停止容器。

3.11 容器与本机的内容相互拷贝

  • 1)本机内容拷贝到容器:docker cp 本机路径 容器ID|容器名:容器中文件的路径。
  • 2)容器拷贝内容到本机,只需要将参数调换一下即可:docker cp 容器ID|容器名:容器中文件的路径 本机路径。

例如把容器下/lib/os-release文件拷贝到宿主机下。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker基础篇-----02-----docker帮助命令、镜像命令、容器命令 的相关文章

随机推荐

  • C++对于const重铸,在结构体中的const引用通过const_cast转换值

    include
  • 在VS中安装Qt插件(配置Qt环境)

    1 下载Qt的插件 Qt插件的网址 http download qt io archive 2 将Qt插件安装到vs上 下载完毕后会得到后缀名为 vsix 的工具 直接运行这个插件 前提是你电脑上已经安装了vs 安装过程等待 安装成功 3
  • 2019南科大计算机系夏令营笔试&面试

    2019南科大计算机系夏令营笔试 面试 笔试 笔试时间2个小时 卷面总分200分 其中操作系统50分 数据结构50分 离散数学50分 计算机网络50分 操作系统为中文题目 其余均为英文题目 操作系统考察进程相关知识占比很大 如进程执行时间
  • oauth2.0的配置信息AuthorizationServerConfigurerAdapter

    继承AuthorizationServerConfigurerAdapter方法的配置 Configuration EnableAuthorizationServer public class Oauth2ServerConfig exte
  • 求解矩阵最小路径和(详细分析)

    求解矩阵最小路径和 给定一个m行n列的矩阵 从左上角开始每次只能向右或者向下移动 最后到达右下角的位置 路径上的所有数字累加起来作为这条路径的路径和 如下面一个4行4列的矩阵 1 3 5 9 8 1 3 4 5 0 6 1 8 8 4 0
  • Flutter插件开发集成aar包出现:Could not determine the dependencies of task ':flutter_vpn:compileDebugAidl'.问题

    概述 最近在做一个Flutter的插件开发 需要在android及ios原生中集成sdk 然后Flutter通过插件调用sdk的方法 这其中涉及到aar包的集成 虽然是Flutter的插件开发 但是关于android原生的aar包集成还是差
  • 网络--tcp协议中控制位

    网络层中的tcp协议 首先看一下tcp的报头信息 其中其余的好理解 但是它是拥有了6个控制位的 说明了此次报文段的性质 紧急URG URGent 当URG等于1时 表明紧急指针字段有效 它告诉系统此报文段中有紧急数据 应尽快传送 相当于高优
  • MySQL 索引 详解(保姆级教程)

    一 索引概述 索引是帮助 MySQL 高效获取数据的数据结构 有序 在数据之外 数据库系统还维护着满足特定查找算法的数据结构 这些数据结构以某种方式引用 指向 数据 这样就可以在这些数据结构上实现高级查询算法 这种数据结构就是索引 二 索引
  • STM32学习日记--Day3--PWM驱动LED灯

    PWM基本结构 主函数 include stm32f10x h Device header include Delay h include OLED h include PWM h uint8 t i int main void OLED
  • Java --- JVM堆的概述与内存细分

    目录 一 堆 二 堆的内存细分 一 堆 1 一个JVM实例只存在一个堆内存 堆也是Java内存管理的核心区域 2 Java堆区在JVM启动的时候即被创建 其空间大小也就确定了 是JVM管理的最大一块内存空间 堆内存的大小是可以调节的 参考代
  • 典型MOSFET制造工艺流程示意图

    复旦大学姜玉龙的课程 半导体器件 截图 图中有的红点是鼠标 下面将阐述这个工艺过程 硅片基底 假设厚度800um 实际上只有上表层有用大概10um厚度左右 然后填充氧化物 用来隔离 然后进行阱注入 可以选择两边分别注入N阱或者P阱 从而隔开
  • 刷题网站

    力扣 这个网站中题解真的是非常丰富 适合新手刷题 不会的可以看看题解 而且适合于练习各种常见的算法 面试求职 英文网址 https leetcode com 中文网址 https leetcode cn com 最近在备战蓝桥杯的时候发现一
  • Python的递归深度问题

    1 Python默认的递归深度是有限制的 当递归深度超过默认值的时候 就会引发RuntimeError 理论在997 2 解决方法 最大递归层次的重新调整 解决方式是手工设置递归调用深度 import sys sys setrecursio
  • 可动态增加、删除的全局蒙灰弹层

    import React Component from react import PropTypes from prop types import assign from object assign import from lodash i
  • 如何编写 Kubernetes 的 YAML 文件?

    声明 本文出自 CNCF 帖子最初发表于 ARMO 由研发副总裁兼联合创始人 Ben Hirschberg 撰写 已获得授权 感谢 山河已无恙 整理 西狩xs 校对 以下为翻译全文 分享给大家 尽管 Kubernetes 越来越受欢迎 但它
  • 如何使用OpenCV保存.mp4格式文件

    fourcc cv2 VideoWriter fourcc mp4v out cat cv2 VideoWriter save mp4 fourcc 24 640 360 True 保存位置 格式 out cat write image 保
  • ElementUI 之el-table-column 格式化属性(日期格式化)

    如果想对表格某一列的内容格式化 性别 日期显示 可用 formatter 属性 实战 日期显示 在method 定义formatDate 方法 formatDate row column 获取单元格数据 let data row colum
  • 数组和指针笔试题解析之【指针】

    目录 笔试题1 笔试题2 笔试题3 笔试题4 笔试题5 笔试题6 笔试题7 笔试题8 笔试题1 int main int a 5 1 2 3 4 5 int ptr int a 1 printf d d a 1 ptr 1 return 0
  • 微信小程序项目源码-50套微信小程序毕业设计的项目实战(附源码+论文+演示视频)

    大家好 我是职场程序猿 感谢您阅读本文 欢迎一键三连哦 今天给大家分享50 基于微信小程序的毕业设计 这些项目都经过精心挑选 涵盖了不同的实战主题和用例 可做毕业设计和课程设计参考 除了源码 对于大部分项目实现的功能都有相应的介绍 并且配有
  • docker基础篇-----02-----docker帮助命令、镜像命令、容器命令

    参考文章 学习笔记 尚硅谷周阳老师的Docker教程学习笔记 一 Docker常用命令 1 docker帮助命令 1 查看docker版本 docker version 2 查看docker信息 docker info 3 docker帮助