Learning Record

2026年3月17日学习记录

记录于:2026-03-17

今日学习内容

今天学习了 Docker 指南,整体梳理了 Docker 的基础概念以及开发中最常见的核心模块,包括概述、容器操作、镜像管理、网络配置、仓库管理、Dockerfile 和 Docker Compose。

一、Docker 概述

Docker 是一个用于构建、运行和分发容器化应用的平台。它的核心作用是把应用和运行环境一起打包,从而提高环境一致性,降低部署和迁移成本。

学习这一部分时,重点理解了几个基本概念:

  • 镜像是应用运行所需内容的模板
  • 容器是镜像启动后的运行实例
  • 仓库是存储和分发镜像的地方

今天对 Docker 的理解可以先记成一句话:

Docker = 用镜像交付环境,用容器运行应用。

基本命令

docker version
docker info
docker --help

二、容器操作

今天学习了容器在实际使用中的常见操作,包括:

  • 创建容器
  • 启动容器
  • 停止容器
  • 重启容器
  • 删除容器
  • 查看容器状态和日志

这一部分让我更清楚地认识到,容器不仅仅是“运行起来”就结束了,更重要的是掌握它的完整生命周期管理。

基本命令

docker ps
docker ps -a
docker run nginx
docker run -d -p 8080:80 --name my-nginx nginx
docker start my-nginx
docker stop my-nginx
docker restart my-nginx
docker rm my-nginx
docker logs my-nginx
docker exec -it my-nginx /bin/sh

我的理解

  • docker run 用来基于镜像创建并启动容器
  • docker ps 用来查看当前运行中的容器
  • docker exec -it 常用来进入容器内部排查问题

三、镜像管理

镜像管理是 Docker 使用中的基础能力,今天主要学习了:

  • 拉取镜像
  • 查看本地镜像
  • 删除镜像
  • 给镜像打标签
  • 基于已有配置构建新镜像

同时也初步理解了镜像分层的概念。镜像并不是一个单独的大文件,而是由多层构建结果组成,这种机制有利于复用和缓存。

基本命令

docker images
docker pull nginx
docker rmi nginx
docker tag nginx my-nginx:1.0
docker build -t my-app:1.0 .
docker history nginx

我的理解

  • docker pull 是从仓库拉取镜像
  • docker build 是根据 Dockerfile 构建镜像
  • docker tag 常用于发布前给镜像打版本标签

四、网络配置

网络配置是容器之间能够通信的关键。今天主要了解了:

  • 端口映射
  • 容器与宿主机之间的访问关系
  • 容器之间的网络通信
  • 自定义网络的作用

这一部分帮助我建立了一个更清晰的认识:容器默认是相互隔离的,而网络配置决定了服务之间如何连接、如何暴露给外部使用。

基本命令

docker port my-nginx
docker network ls
docker network create my-network
docker network inspect my-network
docker run -d --name app1 --network my-network nginx
docker run -d --name app2 --network my-network nginx
docker network rm my-network

我的理解

  • -p 8080:80 表示把宿主机 8080 端口映射到容器 80 端口
  • 自定义网络后,容器之间可以通过容器名直接通信
  • 网络隔离和端口暴露是 Docker 使用中非常关键的一部分

五、仓库管理

仓库管理主要围绕镜像的分发和共享。今天学习了:

  • 公共仓库和私有仓库的区别
  • 登录镜像仓库
  • 推送镜像
  • 拉取镜像
  • 通过标签管理不同版本的镜像

这部分让我理解到,镜像只有进入仓库之后,才真正具备团队协作和部署交付的价值。

基本命令

docker login
docker logout
docker tag my-app:1.0 username/my-app:1.0
docker push username/my-app:1.0
docker pull username/my-app:1.0

我的理解

  • 推送镜像前通常要先打上仓库要求的完整标签
  • 仓库可以作为团队共享镜像和部署拉取镜像的中间站

六、Dockerfile

Dockerfile 是定义镜像构建流程的核心文件。今天重点学习了它的作用以及一些常见指令,例如:

  • FROM
  • WORKDIR
  • COPY
  • RUN
  • CMD
  • EXPOSE

Dockerfile 的意义在于,它能够把手动配置环境的过程转化成可重复执行的脚本,从而让镜像构建过程更标准化、更稳定。

Dockerfile 示例

FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "run", "dev"]

我的理解

  • FROM 指定基础镜像
  • WORKDIR 指定工作目录
  • COPY 复制项目文件
  • RUN 在构建阶段执行命令
  • CMD 指定容器启动后的默认命令

七、Docker Compose

Docker Compose 主要用于管理多容器应用。今天学习了它在项目中的基本用途,包括:

  • 使用配置文件统一定义多个服务
  • 一次性启动和停止一组服务
  • 配置端口、环境变量、数据卷和网络
  • 简化本地开发环境的搭建

这部分内容很实用,因为实际项目中往往不只有一个服务,Compose 能够把多个容器组织起来,降低手动操作的复杂度。

docker-compose.yml 示例

services:
  web:
    image: nginx
    ports:
      - "8080:80"
  redis:
    image: redis

基本命令

docker compose up
docker compose up -d
docker compose down
docker compose ps
docker compose logs

我的理解

  • Compose 适合管理多个相互依赖的服务
  • docker compose up -d 很适合本地一键启动开发环境
  • docker compose down 可以把这一组服务整体关闭并清理

今日总结

今天的学习内容基本覆盖了 Docker 入门最核心的一组知识点:

  • Docker 概述
  • 容器操作
  • 镜像管理
  • 网络配置
  • 仓库管理
  • Dockerfile
  • Docker Compose

整体来看,Docker 不只是一个运行容器的工具,它更像是一套围绕应用打包、运行、分发和协作的完整方案。后续如果结合实际项目继续练习镜像构建和多服务编排,这部分知识会更容易真正掌握。