type
status
date
slug
summary
tags
category
icon
password
背景
没有 docker 遇到的痛点
- 本地开发的环境版本和服务器不一致,需要运维安装对应的版本,繁琐。
- 流量高峰期的时候,需要扩容机器,安装环境需要较长时间,不能立刻扩容。
Docker如何解决
- 开发的时候不只是只把源码打成包,把源码+配置+环境+版本等等打包成一个镜像,拿到服务器直接可以运行,和开发的环境是一样的。
- 这个镜像就是 docker 镜像文件
- 解决了环境迁移,移植版本的问题
比如搬家,原来是把东西全部搬过去,这其中肯定有一些损耗。现在是把整座楼都挖过去

image-20230923171548103
docker 理念
- 一次镜像,处处运行
- docker和虚拟机的相似之处
- docker 的逻辑和虚拟机很像,用一个软件(Vmvare),安装一个 linux 的系统镜像,就可以安装多个系统,系统间和外面的主系统是不相关的。docker只需要一个镜像文件,在 docker 里运行,就可以形成一个一个的服务。
- 不同之处
- 在传统虚拟机,如果创建多个系统,每个iso都是一整套完整的系统,导致非常占用资源,启动慢。
- docker本身有一套最基础的资源,只会给每个镜像分配最基础的运行环境资源。就和他的图标一样,一个鲸鱼上面放着各种集装箱。

image-20230923173313898
下载&&安装
https://www.docker.com
https://hub.docker.com
docker 基本组成
- 镜像
- 是一个只读的模板,可以用来创建多个容器
- docker 镜像文件类似于 java 的类模板,而 docker 容器实例类似于 java new 出来的实例对象
- 容器
- 可以看作是一个简易版的 linux 环境(运行所需要的最小环境)和运行在其中的应用环境。类似于java 的实例。
- 为什么简易,上面说到,只要运行所需要的最小环境。
- 仓库
- 类似于 github,存放镜像文件的地方。
架构图
- 客户端发送命令给 host
- 本地有容器直接运行,没有从仓库拉取运行

image-20230923185026387
docker是一个 cs 结构,守护进程运行在主机上,通过 socket连接从客户端访问容器,执行命令。

安装
测试是否安装好

配置阿里镜像加速器
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
总结
- docker有着比虚拟机更少的抽象层
- docker直接利用宿主的 os,不像虚拟机,每个镜像都是重新加载所有的系统资源