这篇博客学习所得,内容基本来自这篇博客,仅作为学习的记录
docker docs
docker hub
现代软件开发的一大目的就是隔离,应用程序在运行时相互独立互不干扰。
通过将应用程序部署在不同的虚拟机中从而实现隔离。
虚拟机允许我们在一台物理计算机模拟出多台机器,通过中间虚拟软件层Hypervisor隔离CPU、内存等硬件资源,虚拟出多台虚拟服务器。这样,一台物理服务器便可以安装多个应用程序,达到资源利用的最大化,而且多个应用之间相互隔离。
缺点:当我们在物理服务器创建一台虚拟机时,便需要虚拟出一套硬件并在上面运行完整的操作系统,每台虚拟机都占用许多的服务器资源。
通过将应用程序部署在不同的虚拟机中从而实现隔离。
容器技术只隔离应用程序的运行时环境(程序运行依赖的各种库以及配置)但容器之间可以共享同一个操作系统。
容器是将软件打包成标准化单元,以用于开发、交付和部署。
1、容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。
2、容器化软件适用于基于 Linux 和 Windows 的应用,在任何环境中都能够始终如一地运行。
3、容器赋予了软件独立性,使其免受外在环境差异(例如,开发和预演环境的差异)的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。
容器是一种通用技术,docker只是其中的一种实现。
Docker 是一个应用打包、分发、部署的工具
你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要。
打包:就是把你软件运行所需的依赖、第三方库、软件打包到一起,变成一个安装包
分发:你可以把你打包好的“安装包”上传到一个镜像仓库,其他人可以非常方便的获取和安装
部署:拿着“安装包”就可以一个命令运行起来你的应用,自动模拟出一摸一样的运行环境,不管是在 Windows/Mac/Linux。
用 Docker 开发部署流程:自己在 Windows 上开发、测试 --> 打包为 Docker 镜像(可以理解为软件安装包) --> 各种服务器上只需要一个命令部署好
Docker 通常用来做什么
1、应用分发、部署,方便传播给他人安装。特别是开源软件和提供私有部署的应用
2、快速安装测试/学习软件,用完就丢(类似小程序),不把时间浪费在安装软件上。例如 Redis / MongoDB / ElasticSearch / ELK
3、多个版本软件共存,不污染系统,例如 Python2、Python3,Redis4.0,Redis5.0
4、Windows 上体验/学习各种 Linux 系统
镜像:可以理解为软件安装包,可以方便的进行传播和安装。
容器:软件安装后的状态,每个软件运行环境都是独立的、隔离的,称之为容器。
桌面版:https://www.docker.com/products/docker-desktop
服务器版:https://docs.docker.com/engine/install/#server
Unpacking failed:文件"C:\Program Files\Docker\Docker\com.docker.service"正由另一进程使用,因此该进程 无法访问此文件。
如果报了这个错误的话
把这个进程杀了
taskkill -PID 32488 -F
报了一个这样的错误
点击这个链接,安装最新版本的 WSL2
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
因为Docker的服务器在国外,比较慢
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"],