type
status
date
slug
summary
category
tags
create_time
Aug 2, 2025 05:20 PM
icon
password
my_create_time

📝 前言

回顾下,在上一部分我们介绍了云原生的基础概念和演进过程
其中容器技术已成为现代软件开发的基础设施,而 Docker 作为其中最流行的实现,承担了非常重要的角色,为开发者和运维提供了极大的便利。
无论你是刚刚接触后端开发、系统部署,还是开始探索 DevOps 或云原生体系,Docker 都是你无法绕开的技能。

🧭 背景

笔者是在 2015 年开始接触 Docker 容器技术,当时作为一名 Android 系统级应用开发工程师,主要负责定制开发系统的 Launcher(手机端桌面)和应用商店两大应用。
这两个是属于系统级应用,跟普通的应用区别比较大,在这过程中涉及到 Android 系统编译构建的问题,在当时系统编译还是一个比较复杂的过程,因为需要安装非常多的依赖,稍不注意还会将服务器搞崩。
因此如何快速的准备一套干净的系统编译环境是当时比较困扰的问题,在一次偶然的机会中了解到了 Docker,号称将应用与其运行环境打包进统一的镜像中,让部署过程一致、快速、可迁移。
虽然都是虚拟化技术实现,但是相比传统虚拟机无疑要轻量便捷很多,通过 Docker 也快速解决了当时的环境问题。
经过此事之后笔者就对 Docker 产生了浓厚兴趣,后来转做 Web 应用开发,更是将 Docker 应用得更广。
本篇作为 Docker 的基础篇,主要介绍 Docker 的一些基础概念、常用命令以及如何快速入门。

🧠 本章知识卡片

后续每章节尽量同时带上知识卡片,以帮助读者快速了解本章的核心知识内容。
notion image

❓Docker 是什么

Docker 是一个开源平台,用于开发、打包和运行应用程序。
Docker 可以让你将应用程序与基础设施分离,从而快速交付软件。
使用 Docker,你可以像管理应用程序一样管理基础设施。
通过利用 Docker 的打包、测试和部署代码的方法论,你可以显著减少从编写代码到在生产环境中运行代码之间的延迟。

🆚 Docker 与传统虚拟机的区别

虽然 Docker 和传统虚拟机(简称 VM)都可以提供隔离的运行环境,但它们的架构和运行方式有本质区别,以下为两者的对比:

架构对比

notion image
PS:本图为原创设计

核心参数对比

notion image
总的来说 Docker 更轻、更快、更适合微服务和持续集成,而传统虚拟机则更重、更稳、更适合强隔离和完整操作系统模拟的场景。
各自都有优缺点,也没必要一味的全部都只上 Docker,可根据实际业务需要进行选择。

🧩 使用场景

Docker 主要在以下场景中使用的较多:
  • 开发人员希望快速构建和部署测试环境
  • 运维人员进行轻量级应用封装与交付
  • DevOps 自动化流程中的 CI/CD 环节
  • 构建多平台一致的运行环境(Mac、Windows、Linux)
当然现在实际远不止这些了,Docker 也已拓展到了 AI 领域。

🖼️ 组成架构

Docker 使用客户端-服务器架构。
Docker 客户端与 Docker 服务器端通信,后者负责构建、运行和分发 Docker 容器。
Docker 客户端和服务器端可以运行在同一系统上,或者您可以将 Docker 客户端连接到远程的 Docker 服务器端。
Docker 客户端和服务器端通过 REST API 进行通信,基于 UNIX 套接字或网络接口。
notion image
PS:本图为原创设计
通过以上的这张图我们可以发现,Docker 核心组成部分包括:客户端(Client)、服务器端(Daemon)、镜像(Images)、容器(Containers)和仓库(Registry)。
各组成大概说明:
  • 客户端:这就是我们最常使用的 Docker 命令,在下面会介绍到有哪些常用命令。
  • 服务器端:用于接收客户端命令传递的请求,进行实际的业务运行,如启动容器、上传镜像等。
  • 镜像:一个只读的模板,用于创建 Docker 容器,需要注意的是一旦镜像构建完成即不可修改。
  • 容器:镜像的运行时实例,是一个轻量级、可移植、隔离的进程环境。
  • 仓库:用于存储和分发 Docker 镜像的中央服务,企业或个人也可以部署私有的 Registry(如 Harbor)。
这里就不详细展开了,不然每个部分都可以单开一章:(

🚀 文章小节

1️⃣ 快速安装 Docker

安装比较简单,可参考之前写的一篇文章:《Docker 与 Docker Compose 安装部署》

2️⃣ Docker 常用命令

容器管理相关命令
作用
docker run -it 镜像名
运行容器并进入交互模式
docker run -d 镜像名
后台运行容器
docker ps
查看正在运行的容器
docker ps -a
查看所有容器(包括已停止)
docker start 容器ID
启动已停止的容器
docker stop 容器ID
停止正在运行的容器
docker restart 容器ID
重启容器
docker rm 容器ID
删除容器
docker logs 容器ID
查看容器日志
docker exec -it 容器ID /bin/bash
进入容器的终端交互环境
镜像管理命令
作用
docker images
查看本地镜像
docker pull 镜像名
从远程仓库拉取镜像
docker rmi 镜像名
删除本地镜像
docker build -t 镜像名 .
使用当前目录下的 Dockerfile 构建镜像
docker tag 源镜像 新镜像名
给镜像打标签
docker save -o xxx.tar 镜像名
导出镜像为文件
docker load -i xxx.tar
从文件导入镜像
仓库相关命令
作用
docker login
登录 Docker 仓库,默认是登录官方仓库,可添加私有仓库地址,则登录私有仓库
docker logout
退出登录,默认是退出官方仓库,可添加私有仓库地址,则退出私有仓库
docker push 镜像名
推送镜像到远程仓库
docker pull 镜像名
从仓库拉取镜像

3️⃣ 运行第一个容器

使用以下命令快速运行第一个容器:
参数说明:
  • docker run:运行容器的命令
  • registry.cn-hangzhou.aliyuncs.com:私有(非官方)镜像仓库地址,默认不填则为官方地址:hub.docker.com
  • lusyoe:命名空间
  • hello-world:镜像名称
  • latest:镜像tag,又被称为镜像版本。

4️⃣ Dockerfile 基础

当我们需要自定义容器镜像时,就可以通过 Dockerfile 编写镜像构建规则。
创建一个简单的 Dockerfile
基于 Dockerfile 构建镜像:
参数说明:
  • docker build:构建镜像命令
  • . :当前上下文目录
运行自定义镜像容器:
参数说明:
  • docker run:启动容器
  • -dp:d参数表示容器在后台启动,p参数表示指定映射本地端口到容器内的端口
访问容器服务:

5️⃣ Docker 镜像仓库

在上一步我们已经构建出了自己的镜像,那么如何将该镜像部署到服务器上呢。
这里就需要用到镜像仓库进行分发,我们可以使用阿里云的免费个人版镜像仓库,也可以自己搭建Harbor 私有仓库。
使用以下命令上传镜像并在服务器运行容器:

✅ 总结

最后总结一下,本文首先介绍了 Docker 的基础概念,然后带领大家从 0 开始构建第一个 Docker 容器,涵盖安装、运行、构建、上传等关键步骤。
通过理解镜像与容器的关系,您应该可以在任何平台上快速复用环境、部署应用,提升开发效率与可维护性。
Docker 是走向现代 DevOps 与云原生架构的第一步,后续还有多篇关于 Docker 的实战介绍,感兴趣的同学可以持续关注~
💡
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
若文章对您有帮助,欢迎 请我喝杯咖啡~
 
上一篇
Nginx+ACME服务器搭建
下一篇
第一部分:云原生基础篇(理念与演变)

评论
Loading...