Docker中常用的镜像命令和容器命令
目录
前提
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 查看容器日志
注意:查看容器日志,观察容器具体是什么问题
了解日志命令详细参数
-tf:显示日志 , --tail number :要显示日志条数
docker logs --help
docker logs 容器id[CONTAINER ID]
这条命令不带任何的参数,它会输出该容器从启动以来所有的日志内容,一次性全部打印出来。
特点
一次性输出:不会实时跟踪新日志,只是把当前已有的所有日志显示出来就结束了。
默认无时间戳:日志里不会显示每条日志的具体时间,除非你加上 -t 参数。
适合快速回顾:适合你想一次性查看容器启动后的完整日志历史,而不是实时监控。
示例:我使用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
- 精细化日志查询
查询指定容器100行日志记录
docker logs 容器名 -f -t --tail 100
示例:docker logs mysql-test -f -t --tail 100

6 进入容器
这里我拿mysql 举例,从 docker 环境切换到mysql客户端
方法1:在 bash 终端中直接连接 MySQL(mysql的Linux环境,在切换到mysql客户端)
基础命令
docker exec -it容器id /bin/bash
实例1:切换到mysql的bash 终端

成功进入了 MySQL 容器的 Linux 系统终端(bash 环境),但还没进入 MySQL 数据库的命令行终端
输入命令:mysql -uroot -p123456

方法2:直接从宿主机进入 MySQL 终端(无需先进 bash)
实例:进入mysql容器测试(mysql举例)
-it :表示与某一个容器交互参数,可以进入指定容器的终端
- -i(--interactive):交互模式,保持容器的标准输入(STDIN)打开,让你能向容器输入命令;
- -t(--tty):伪终端模式,为容器分配一个虚拟的终端(TTY),让你能像操作本地终端一样操作容器。
输入命令后,回车 输入密码,切换 mysql 客户端
docker exec -it mysql01 mysql -uroot -p

注意:如果想从 mysql 客户端退出容器但不停止
容器的快捷键是 Ctrl + P + Q/Ctrl +P,Ctrl +Q 推出当前客户端
7查看容器的进程
-
docker inspcet [参数] 容器id - 基础用法-不添加任何信息,查询指定容器的详细进程信息
示例:docker inspect 26d6b5f2a657

- 查看容器进程的详细参数
docker inspect --help

核心参数

实例-查询当前容器的端口号
-
docker inspect -f '{{.NetworkSettings.Ports}}' mysql-test
如图所示:

更多推荐


所有评论(0)