docker中 contriner 和 images 什么关系
目录
启动容器:
实际启动命令:
dcoker中 contriner 和 images 什么关系
🧱 镜像(Image)是什么?
📦 容器(Container)是什么?
它们的关系总结如下:
图示关系:
查看命令:
启动容器:
docker compose up -d | 当前项目(需在 docker-compose.yml 所在目录执行) | ✅ 是 | 启动项目所有服务(生产/开发环境) |
docker run -d | 单个容器(需指定镜像名) | ✅ 是 | 快速测试某个镜像 |
docker start <容器名> | 单个已存在的容器 | ✅ 是 | 重启之前停止的容器 |
实际启动命令:
// 使用GPU启动方式 // --gpus all 使用宿主机所有gpu加载到容器中 // -shm-size=800g 设置共享内存 如果大量使用 // --net=host 参数使容器共享宿主机的网络命名空间。这意味着容器将不会获得自己的IP地址,而是使用宿主机的网络堆栈。 // --ipc=host 参数使容器共享宿主机的进程间通信(IPC)命名空间。这允许容器内的进程和宿主机上的进程共享IPC资源。 // -v 参数挂载一个卷。这里将宿主机的 /mnt/pfs 目录挂载到容器的 /mnt/pfs 目录,使得容器可以访问宿主机上的文件。 // -i 参数保持容器的标准输入(STDIN)打开,即使没有附加到容器终端。 // -t 参数分配一个伪终端。这两个参数通常一起使用,以便你可以交互式地使用容器 docker run --gpus all --shm-size=800g --net=host --ipc=host --name [容器名称] -v /mnt/pfs:/mnt/pfs -v /shared_disk:/shared_disk -it [镜像地址] /bin/bash
docker ps # 查看运行中的容器
docker compose ps # 查看当前项目的容器状态
docker compose down | 停止并移除所有容器、网络(不会删除数据卷) |
docker compose restart | 重启容器(保持配置不变) |
docker compose logs -f | 实时查看容器日志(调试用) |
docker compose pull | 更新镜像(需配合 up -d 重新启动) |
dcoker中 contriner 和 images 什么关系
images 是制度模板,
在 Docker 中,container
(容器)和 image
(镜像)是两个核心概念,它们之间的关系可以类比为“类与实例”的关系:
🧱 镜像(Image)是什么?
-
是一个只读模板,包含了运行某个软件所需的所有内容:
-
应用程序代码
-
系统工具
-
系统库
-
依赖项
-
-
镜像就像一个快照或“蓝图”,是创建容器的基础。
示例:
bash
复制编辑
docker pull python:3.10
这条命令会下载一个包含 Python 3.10 的镜像。
📦 容器(Container)是什么?
-
是镜像运行后的实例,是一个真正“活着”的进程。
-
容器是隔离的运行环境,它从镜像启动,并在其上运行应用。
-
容器可以读写(虽然镜像本身是只读的)。
示例:
bash
复制编辑
docker run -it python:3.10
这条命令会:
-
用
python:3.10
镜像启动一个容器; -
给你一个交互式终端进入容器内部。
它们的关系总结如下:
概念 | 类比 | 说明 |
---|---|---|
Image | 类 / 模板 | 只读的运行环境模板,用来创建容器 |
Container | 实例 / 进程 | 镜像的运行时实例,是具体在执行的程序 |
镜像可以启动多个容器 | 类似于一个类可以创建多个对象 |
图示关系:
less
复制编辑
[Image: python:3.10] | ----------------- | | | [Container] [Container] [Container] (运行) (运行) (运行)
查看命令:
-
查看所有镜像:
bash
复制编辑
docker images
-
查看所有容器(包括停止的):
bash
复制编辑
docker ps -a
-
只看正在运行的容器:
bash
复制编辑
docker ps