专业的编程技术博客社区

网站首页 > 博客文章 正文

Docker镜像与容器的区别

baijin 2025-04-27 12:20:54 博客文章 6 ℃ 0 评论

技术背景

在容器化技术的大背景下,Docker成为了一款广泛使用的容器化平台。它能够帮助开发者将应用及其依赖打包成一个独立的单元,实现快速部署和资源隔离。在Docker的生态中,镜像(Image)和容器(Container)是两个核心概念,理解它们的区别对于有效使用Docker至关重要。

实现步骤

镜像的创建与管理

  1. 编写Dockerfile:Dockerfile是创建镜像的基础,它包含了一系列的指令,用于定义镜像的内容和配置。例如:
FROM ubuntu:15.04
COPY . /app
RUN make /app
CMD python /app/app.py
  1. 构建镜像:使用docker build命令根据Dockerfile构建镜像。
docker build -t my_image dir_with_dockerfile
  1. 查看镜像:使用docker imagesdocker image ls命令查看本地的镜像列表。
docker images

容器的创建与运行

  1. 运行容器:使用docker run命令从镜像创建并启动一个容器。
docker run -it my_image bash
  1. 查看容器:使用docker ps命令查看正在运行的容器,使用docker ps -a命令查看所有容器(包括停止的容器)。
docker ps
  1. 停止和删除容器:使用docker stop命令停止运行中的容器,使用docker rm命令删除容器。
docker stop container_id
docker rm container_id

核心代码

创建镜像

# 使用基础镜像
FROM ubuntu:18.04

# 安装必要的软件包
RUN apt-get update && apt-get install -y python3 python3-pip

# 设置工作目录
WORKDIR /app

# 复制应用代码到容器中
COPY . /app

# 安装应用依赖
RUN pip3 install -r requirements.txt

# 暴露端口
EXPOSE 5000

# 定义启动命令
CMD ["python3", "app.py"]

构建镜像

docker build -t my-python-app .

运行容器

docker run -p 5000:5000 my-python-app

最佳实践

镜像管理

  • 使用轻量级基础镜像:选择体积小、更新频繁的基础镜像,如Alpine Linux,以减少镜像大小。
  • 分层构建:合理安排Dockerfile中的指令,将不常变化的部分放在前面,利用Docker的分层缓存机制,加快构建速度。

容器管理

  • 资源限制:使用docker run命令的--memory--cpus等参数为容器设置资源限制,避免容器占用过多资源。
  • 日志管理:使用docker logs命令查看容器的日志,也可以将日志挂载到宿主机或使用日志收集工具进行集中管理。

常见问题

镜像和停止的容器有什么区别?

镜像是一个只读的模板,用于创建容器;而停止的容器是曾经运行过的容器实例,它保留了运行时的状态和文件系统的更改,可以被重启。

如何避免镜像和容器的堆积?

可以使用以下命令清理无用的镜像和容器:

  • 清理悬空镜像
docker images -q --filter "dangling=true" | xargs docker rmi
  • 清理停止的容器
docker rm `docker ps --no-trunc -aq`

也可以使用docker system prune命令一次性清理所有未使用的镜像、容器和网络。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表