底层视角

洞察事物的本质,启迪人生智慧

容器的启动、进入、查找、日志,删除

启动容器

docker start <容器名>

进入容器

docker exec -it <容器名> /bin/sh

查所有容器(含停止的):

docker ps -a

查找日志

docker logs -f —tail 100 <容器名>

强制进入镜像(查看镜像配置)

docker run --rm -it --entrypoint /bin/sh nacos/nacos-server:latest

停止并移除容器、查看、删除卷列表:

# 停止并移除相关容器
docker-compose down

# 查看卷列表
docker volume ls

# 删除 mysql-data 卷
docker volume rm your_project_mysql-data

# 验证卷是否删除成功
docker volume ls

查看特定卷的详细信息

使用 docker volume inspect 命令查看 mysql-data 卷的详细信息,以获取其实际的文件夹路径:

docker volume inspect your_project_mysql-data

该命令会输出一个 JSON 格式的信息,其中 Mountpoint 字段就代表了该卷在宿主机上的实际存储路径,示例如下:

json

[

{
    "CreatedAt": "2025-03-20T14:25:30Z",
    "Driver": "local",
    "Labels": {
        "com.docker.compose.project": "your_project",
        "com.docker.compose.version": "1.29.2",
        "com.docker.compose.volume": "mysql-data"
    },
    "Mountpoint": "/var/lib/docker/volumes/your_project_mysql-data/_data",
    "Name": "your_project_mysql-data",
    "Options": null,
    "Scope": "local"
}

]

从上述输出可知,mysql-data 卷对应的文件夹路径是 /var/lib/docker/volumes/your_project_mysql-data/_data

查看或者删除现有镜像

在删除镜像之前,你需要知道当前 Docker 环境中存在哪些镜像。可以使用以下命令查看:

docker images

该命令会列出所有本地镜像,输出内容包含仓库名(REPOSITORY)、标签(TAG)、镜像 ID(IMAGE ID)、创建时间(CREATED)以及大小(SIZE)等信息。

确保镜像未被使用

在删除镜像之前,要保证该镜像没有被任何容器使用。如果有容器基于该镜像创建并正在运行或者停止状态,需要先停止并删除这些容器。

  • 停止正在运行的容器

docker stop <容器 ID 或容器名称>

可以使用docker ps查看正在运行的容器,使用docker ps -a查看所有容器(包括已停止的)。

  • 删除停止的容器

docker rm <容器 ID 或容器名称>

你也可以使用一条命令直接停止并删除容器:

docker rm -f <容器 ID 或容器名称>

删除镜像

根据不同的情况,可使用以下几种方式删除镜像:

  • 根据镜像 ID 删除

docker rmi <镜像 ID>

可以只提供镜像 ID 的前几位,只要能唯一标识该镜像即可。例如:

docker rmi 123abc

  • 根据仓库名和标签删除

docker rmi <仓库名>:<标签>

例如删除名为nginx,标签为latest的镜像:

docker rmi nginx:latest

  • 强制删除镜像:如果在删除镜像时遇到一些依赖问题等导致无法正常删除,可以使用f参数进行强制删除:

docker rmi -f <镜像 ID 或 仓库名:标签>

  • 删除多个镜像:可以同时指定多个镜像 ID 或 仓库名:标签 来一次性删除多个镜像,用空格分隔它们。例如:

docker rmi image1 image2 image3

清理悬空镜像

悬空镜像(dangling images)是指没有任何标签的镜像,它们通常是在构建新镜像或者更新标签时产生的。可以使用以下命令清理这些悬空镜像:

docker image prune

执行该命令后,会提示你确认是否要删除悬空镜像,输入y并回车即可完成删除。如果要自动确认删除,不进行提示,可以使用-f参数:

docker image prune -f

假设我们要删除名为myapp,标签为v1的镜像,操作步骤如下:

`# 查看是否有基于该镜像的容器正在运行
docker ps

如果有,停止并删除容器

docker stop myapp-container
docker rm myapp-container

删除镜像

docker rmi myapp:v1`

通过以上步骤,你就可以在 Docker 中安全地卸载(删除)镜像。

本原创文章未经允许不得转载 | 当前页面:底层视角 » 容器的启动、进入、查找、日志,删除

评论