根据镜像启动容器,并进入容器:
docker run -it --privileged --entrypoint bash 镜像名
特性 | Docker 镜像 | Docker 容器 |
---|---|---|
本质 | 只读的模板或快照。包含创建容器所需的文件和元数据。 | 镜像的运行实例。是一个可写的、隔离的进程环境。 |
状态 | 静态的、不可变的。一旦创建,内容就不会改变。 | 动态的、有状态的。可以被启动、停止、删除,其内部状态会改变。 |
存储 | 由一系列只读层组成,通过联合文件系统叠加。 | 在镜像的只读层之上,添加一个可写的容器层。 |
创建方式 | 通过 docker build 命令,根据 Dockerfile 构建。 |
通过 docker run 命令,从镜像启动。一个镜像可以创建多个容器。 |
持久性 | 镜像本身是持久的,删除容器不会影响镜像。 | 默认情况下,容器停止后,其可写层的数据会随容器删除而丢失(需用卷来持久化)。 |
类比 | 面向对象中的“类” 或 安装程序的 .iso 文件。 |
由类 new 出来的“对象” 或 安装好并正在运行的操作系统。 |
总结:
动作 | 影响对象 | 说明 |
---|---|---|
docker build -t my-image . |
镜像 | 根据当前目录的 Dockerfile 创建一个名为 my-image 的镜像。 |
docker run -d --name my-container my-image |
容器 | 从 my-image 镜像创建并启动一个名为 my-container 的容器。 |
docker rmi my-image |
镜像 | 删除名为 my-image 的镜像(如果已有容器基于它,需先删除容器)。 |
docker rm my-container |
容器 | 删除名为 my-container 的容器(其上的可写层数据会丢失)。 |