Docker中常用的镜像命令和容器命令

目录

前提

镜像命令

[1 查看当前下载的镜像](#1 查看当前下载的镜像)

[2 删除 镜像](#2 删除 镜像)

[3 拉取docker 仓库镜像](#3 拉取docker 仓库镜像)

容器命令

[1 启动容器](#1 启动容器)

[2 查看当前 容器](#2 查看当前 容器)

[3 删除容器](#3 删除容器)

[4 停止容器](#4 停止容器)

[5 查看容器日志](#5 查看容器日志)

[​6 进入mysql容器测试(mysql举例)](#6 进入mysql容器测试(mysql举例))


前提

docker 已经集成好了wsl,接下来我将在wsl 环境中,操作

如果输入wsl,报错,重新点击 下载的docker 找到 resource 配置,看到集成wsl,重新打开【即使之前是打开的,为防止意外,建议重新操作一遍】


正文

镜像命令

1 查看当前下载的镜像
复制代码
docker images

输入命令后,可以观察到 一些专有名字比如:IMAGE,ID,DISK USAGE等

  • IMAGE:下载镜像的名字
  • ID: 下载镜像的唯一标识,后面启动容器,可以根据镜像名字或id启动
  • DISK USAGE :该镜像在本地磁盘上实际占用的存储空间。
  • 例如 mysql:latest 显示 1.29GB,就是它在你本地占用的磁盘空间。
  • CONTENT SIZE:镜像所有层的总大小(包括与其他镜像共享的层),代表镜像本身的完整内容大小。它反映了镜像的原始体积,而不是实际占用的磁盘空间(因为共享层不会重复计算)。
  • EXTRA:U 表示 未被使用的镜像
2 删除 镜像

删除镜像

前提:如果你要删除某一个镜像,那么该镜像没有被启动过/启动了,但是该容器被删除

复制代码
docker rmi  【镜像名】

示例: docker rmi quay.io/centos/centos:stream9

3 拉取docker 仓库镜像
复制代码
docker pull [镜像名/下载镜像地址]

从下面这个图片可知,centos镜像被删除了,我将从docker远程仓库 重新 拉取

前提: 配置好相关网络,保证网络畅通

示例:docker pull quay.io/centos/centos:stream9

如图所示,使用 docker pull命令 执行成功!


容器命令

1 启动容器

1.1 启动容器

复制代码
docker run

这里拿启动mysql 容器举例

复制代码
docker run -d -p 3306:3306  --name mysql -e MYSQL_ROOT_PASSWORD=你的密码 mysql:latest

示例:docker run -d -p 3307:3307 --name mysql01 -e MYSQL_ROOT_PASSWORD=123 mysql:latest

注意: 我之所以使用3307作为端口号是因为上一个mysql容器已经将3306端口号占有

1.2 启动容器

复制代码
docker start [可选参数] [容器ID/容器名称]

核心作用 :启动已存在的停止状态容器,容器的配置(端口、环境变量、数据卷等)都会保留创建时的设置。
区别于 docker run:docker run 是新建并启动容器,docker start 是启动已存在的容器。

如图所示:其中一个mysql 容器已经被我通过docker stop 命令 停止运行了。现在我想让容器id 为

a4f8608ef1ce 重新启动

输入:docker start a4f8608ef1ce

1.3 启动容器并打印日志

复制代码
docker start -a 【容器名字】

2 查看当前 容器
  • 查看当前 正在运行的容器

注意:docker ps 默认只显示正在运行的容器,但引用镜像的容器也可能是已停止或已退出的状态,这类容器用默认的 docker ps 是看不到的。

复制代码
docker ps
  • 所有创建的容器,不管它是否在运行。

    docker ps -a

  • 查看 基于某一个镜像创建的容器

    docker ps -a -f ancestor=【镜像名】

示例:docker ps -a -f ancestor=quay.io/centos/centos:stream9

  • 查看容器id

注意:这个命令的主要用途是生成一个纯容器 ID 的列表,方便作为参数传递给其他命令(比如 docker rm、docker stop),实现批量操作。

复制代码
docker ps -a -q

3 删除容器
  • 根据容器id 删除指定容器

    docker rm 容器id【CONTAINER ID】

示例:docker rm 19aaa566e6e2

  • 批量删除容器

批量删除某一个镜像下的容器

复制代码
docker rm -f $(docker ps -a -q -f ancestor=镜像名)

示例:docker rm -f $(docker ps -a -q -f ancestor=quay.io/centos/centos:stream9)

  • 删除所有容器

    docker rm -f $(docker ps -a -q)

4 停止容器
复制代码
docker stop 容器id

示例:docker stop a4f8608ef1ce

5 查看容器日志

注意:查看容器日志,观察容器具体是什么问题

复制代码
docker logs 容器id[CONTAINER ID]

示例:我使用docker start 容器id,启动容器,并且成功返回容器的id,但是我使用docker ps 发现么有正在运行的容器,于是使用 docker logs 容器id 查看该容器是什么情况

使用 docker logs 命令查看情况

解决办法:1 删除现有容器,重新创一个新的带有密码的mysql容器 2 对现有mysql容器添加密码

我选择 第一种:

复制代码
docker run -d -p 3306:3306 \
  --name mysql \
  -e MYSQL_ROOT_PASSWORD=你的密码 \
  mysql:latest

如图所示,这是新创建的mysql

6 进入mysql容器测试(mysql举例)

-it :表示与某一个容器交互参数,可以进入指定容器的终端

  • -i(--interactive):交互模式,保持容器的标准输入(STDIN)打开,让你能向容器输入命令;
  • -t(--tty):伪终端模式,为容器分配一个虚拟的终端(TTY),让你能像操作本地终端一样操作容器。

输入命令后,回车 输入密码,切换 mysql 客户端

复制代码
docker exec -it mysql01 mysql -uroot -p

注意:如果想从 mysql 客户端退出容器但不停止容器的快捷键是 Ctrl + P + Q

相关推荐
虎头金猫1 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS1 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
AI职业加油站1 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
此冬歌咏2 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
玉&心2 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing2 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
-梅2 天前
linux(8) 软硬链接
linux·运维·服务器
赵文宇(温玉)2 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang2 天前
上传本地镜像到harbor中
docker·容器·持续部署
张洛闻Eren2 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github