今日学习内容
今天学习了 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 是定义镜像构建流程的核心文件。今天重点学习了它的作用以及一些常见指令,例如:
FROMWORKDIRCOPYRUNCMDEXPOSE
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 不只是一个运行容器的工具,它更像是一套围绕应用打包、运行、分发和协作的完整方案。后续如果结合实际项目继续练习镜像构建和多服务编排,这部分知识会更容易真正掌握。