Docker 入门笔记(后端开发必学)
现在后端开发:
几乎都会接触:
Docker尤其:
Go + Gin + MySQL + Redis项目里。
很多新人第一次学 Docker:
会感觉:
镜像? 容器? 虚拟化?非常抽象。
其实:
Docker 的核心思想:
并不复杂。
一、Docker 到底是什么
一句话:
Docker = 轻量级应用运行环境你可以理解成:
应用打包器 + 运行器二、为什么需要 Docker
以前开发:
经常出现:
我电脑能运行 你电脑运行不了因为:
每个人:
- 环境不同
- 软件版本不同
- 配置不同
例如:
MySQL版本不同 Redis版本不同 Go版本不同于是:
项目经常崩。
三、Docker 解决了什么问题
Docker 的核心思想:
把: 程序 + 环境 + 配置 全部打包这样:
无论在哪台电脑:
都能一样运行四、最经典一句话
Docker 最经典的一句话:
Build once, run anywhere意思:
一次构建,到处运行五、Docker 和虚拟机区别
很多新人:
会把 Docker 和虚拟机搞混。
虚拟机
例如:
VMware VirtualBox特点:
模拟整个操作系统非常重。
Docker
Docker:
共享宿主机内核只隔离环境。
所以:
非常轻量 启动极快六、Docker 核心概念(必须掌握)
Docker 最核心:
只有三个东西:
镜像(Image) 容器(Container) 仓库(Repository)七、什么是镜像(Image)
镜像:
你可以理解成:
安装包模板例如:
MySQL镜像 Redis镜像 Go镜像 Ubuntu镜像类比
镜像像:
游戏安装包它本身:
不能运行只能:
拿来创建容器八、什么是容器(Container)
容器:
是:
真正运行起来的东西例如:
运行中的 MySQL 运行中的 Redis类比
镜像 = 类 容器 = 对象或者:
镜像 = 安装包 容器 = 安装后的程序九、什么是仓库(Repository)
仓库:
用于:
存放镜像最著名:
Docker Hub类似:
GitHub但:
GitHub 存代码。
Docker Hub:
存镜像十、Docker 工作流程(重点)
Docker Hub 下载镜像 ↓ 通过镜像创建容器 ↓ 容器运行程序十一、安装 Docker 后第一件事
测试:
docker-v输出:
Docker version xxx说明安装成功。
十二、运行第一个容器
例如:
运行 Redis。
下载并运行 Redis
dockerrun redisDocker 会:
第一步
发现:
本地没有 redis 镜像第二步
自动去 Docker Hub 下载。
第三步
创建 Redis 容器。
第四步
启动 Redis。
十三、docker run 到底干了什么
这一句:
dockerrun redis其实:
包含:
下载镜像 创建容器 启动容器三个步骤。
十四、查看运行中的容器
dockerps十五、停止容器
dockerstop 容器ID十六、删除容器
dockerrm容器ID十七、查看镜像
dockerimages十八、为什么后端开发离不开 Docker
因为:
现在项目:
不只是:
一个 Go 程序而是:
Go MySQL Redis Nginx RabbitMQ MinIO一大堆服务。
Docker 可以:
快速部署所有环境十九、最经典开发场景
以前:
安装 MySQL:
官网下载 手动安装 配置环境变量 改配置文件非常痛苦。
现在:
dockerrun mysql直接启动。
二十、端口映射(重点)
例如:
dockerrun-p6379:6379 redis含义:
宿主机端口 : 容器端口6379:6379
表示:
你电脑的6379 映射到 Redis容器6379这样:
Go 程序:
localhost:6379才能连接到 Redis。
二十一、后台运行(重点)
dockerrun-dredis-d
表示:
后台运行否则:
容器会占着终端。
二十二、容器名字
dockerrun--namemyredis redis表示:
给容器取名: myredis否则:
Docker 会随机名字。
二十三、Docker 最常见命令
| 命令 | 作用 |
|---|---|
| docker images | 查看镜像 |
| docker ps | 查看容器 |
| docker run | 创建运行容器 |
| docker stop | 停止容器 |
| docker rm | 删除容器 |
| docker pull | 下载镜像 |
二十四、Go 为什么特别适合 Docker
因为:
Go:
静态编译 单二进制文件特别容易:
容器化所以:
现在:
Go + Docker非常流行。
二十五、真实开发部署流程
例如:
Gin 项目 ↓ 打包 Go 程序 ↓ 写 Dockerfile ↓ 构建镜像 ↓ 运行容器 ↓ 部署服务器二十六、什么是 Dockerfile
Dockerfile:
本质:
镜像构建脚本例如:
FROM golang:1.24 WORKDIR /app COPY . . RUN go build -o main . CMD ["./main"]二十七、Docker 真正核心思想
你一定要理解:
Docker:
不是:
虚拟机而是:
应用隔离运行环境它真正解决的是:
环境一致性二十八、后端学习 Docker 第一阶段学什么
先掌握:
1. Image 2. Container 3. docker run 4. docker ps 5. 端口映射 6. Dockerfile就够了。
别一开始:
就研究:
K8s Swarm Compose容易崩。
二十九、最后总结
Docker 本质:
轻量级容器技术核心作用:
打包环境 隔离运行 快速部署核心概念:
镜像 Image 容器 Container 仓库 Repository核心流程:
下载镜像 ↓ 创建容器 ↓ 运行程序现在后端开发:
Gin + MySQL + Redis + Docker已经属于基础技能组合。
