记录.Docker 的一些入门知识
本文最后更新于:2021年8月22日 下午
介绍
为何需要?
软件开发和测试最大问题之一:环境配置
用户各自计算机之间的环境都不相同,如何保证代码都能跑起来?
配置的两要素:操作系统的设置、各种库和组件的安装。
例如 Python,Java 等,都需要安装以及配置环境变量。
如果软件使用了某个老旧的模块,而且与当前环境不兼容(版本问题),就更加麻烦。
那能不能把 “环境” 都连同一起备份安装了?
虚拟机:一个独立的实例
虚拟机(virtual machine)就是带环境安装的一种解决方案。
在一个操作系统里面运行另一种操作系统!例:Window(Linux)
对于应用程序来说,与真实系统毫无区别;
对于底层系统来说,虚拟机就是一系列的普通文件,不需要即可删除,对其他部分毫无影响。
Linux 容器:用于移动所需
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。
是目前最流行的 Linux 容器 解决方案。
Linunx 容器并不是模拟一个系统,而是对进程进行隔离。相当于在外面套了一个保护层,接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。
Docker 将应用程序和依赖,打包在一个文件(镜像),运行这个文件,就会生成一个容器。在这个容器里运行,就像在物理机上运行一样。
而且 Docker 提供的接口也非常的简单,可以方便地创建和使用容器,还可以进行版本、复制、分享、修改,就像管理普通的代码一样。
例如对其进行修改且保存,作为一个新的镜像。
对比
待写,可以参看文章容器 vs. 虚拟机
基础三要素
镜像
它就是一个只读的模板,并且带有创建 Docker 容器的指令。
通常,一个镜像是基于另一个镜像的,但都会进行一些额外的定制。
例如,可以构建一个基于 Ubuntu 的镜像的镜像,但会安装 Apache Web 服务器和各种应用程序等,以及配置程、设置序运行所需要的环境等。
一个镜像可以创建多个容器。
容器
容器时镜像创建的实例。
每个容器都可以被启动、开始、停止、删除。
同时,它们之间又互相隔离,保证应用程序运行期间的安全。
可以把容器理解为一个 特别精简版 的 Linux ,它包括了 root 用户权限、进程空间、用户空间和网络空间等,
然后再加上在它之上的运行程序。
例如基于 MySQL 镜像创建了一个容器,容器并不是只有一个 MySQL 程序,而是同样安装运行在容器的 Linux 环境内。
数据卷
镜像是由多个文件系统(只读层)叠加而成的。
当启动一个容器的时候, Docker 会加载只读镜像层并且在其上(镜像栈顶层)添加一个读写层。
如果运行中修改了现有的一个已经存在的文件,那该文件就会从下面的 只读层复制到读写层 ,该文件的只读版本仍然存在,只是已经被读写层中的该文件的副本隐藏。
关闭容器,通过镜像重新启动,更改既会消失。
大多镜像运行时,就算不指定数据卷,也会根据生成一个随机名的数据卷。
使用
Post not found: 记录-Docker 实践 Post not found: 日志-利用_Docker_搭建_Nexus_仓库私服参考资料
Docker 入门教程
Docker 官方介绍
容器 vs. 虚拟机
Docker 三要素 :镜像、容器和仓库
Docker 数据管理(数据卷&数据卷容器)
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!