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

相关推荐
码农阿豪2 小时前
Jenkins自动化部署故障排查实战:从错误日志到解决方案
运维·自动化·jenkins
CodeCaptain2 小时前
dify需要使用rerank模型,docker安装xinference的解决方案
经验分享·docker·ai·容器
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.2 小时前
LVS DR模式实战部署指南
运维·服务器
hkNaruto2 小时前
【运维】低配服务器ClickHouse Docker部署故障复盘与优化配置指南
运维·服务器·clickhouse
头发还没掉光光3 小时前
Linux网络之IP协议
linux·运维·网络·c++·tcp/ip
shandianchengzi11 小时前
【记录】Tailscale|部署 Tailscale 到 linux 主机或 Docker 上
linux·运维·docker·tailscale
John Song11 小时前
Linux机器怎么查看进程内存占用情况
linux·运维·chrome
肉肉心很软13 小时前
使用onlyoffice实现文件预览编辑 + Docker一键部署流程
运维·docker·容器
-大头.13 小时前
Docker实战:构建高性能MySQL主从复制集群(读写分离)
mysql·docker·容器