网站建设学习网公司有哪些nodejs做网站能保护源代码吗
文章目录
- Docker
 - 物理机部署的缺点
 - 虚拟机
 - Docker 与虚拟机的区别
 - Docker 的优势
 
- Docker 概念
 - 安装 Docker
 - Docker 架构
 - 镜像加速
 - Docker 命令
 - 进程服务相关命令
 
- 镜像相关文件命令
 - 容器相关的命令
 
- 镜像加载的原理
 - UnionFS(联合文件系统)
 - docker 镜像加载原理
 
- 容器的数据卷
 - 数据卷概念
 - 配置数据卷
 - 数据卷容器
 - 配置数据卷容器
 
Docker
物理机部署的缺点
- 部署速度慢(需要先安装操作系统,然后安装各种软件)
 - 成本较高(需要购买硬件设备)
 - 资源可能浪费(不能充分利用硬件资源)
 - 迁移和扩展困难(环境可能不一致,硬件可能不兼容)
 - 容易受到硬件供应商的限制
 
虚拟机
在开发、测试和生产环境中编写代码时,可能会遇到环境不一致导致的问题,比如某个库在本地存在但在其他机器上缺失。为了解决这个问题,容器技术应运而生。
容器将代码和运行环境打包在一起,无论在哪里运行,都保持一致性。
Docker 与虚拟机的区别
- 虚拟机:虚拟机通过虚拟机管理器(如 VMWare workstation、VirtualBox)模拟整个硬件系统,每个虚拟机都运行一个完整的操作系统。
 - 容器:容器利用 Linux 的 
namespace进行资源隔离,利用cgroup对资源进行限制,容器之间互不影响,并且与宿主机共享操作系统内核。 

Docker 的优势
- Docker 直接利用宿主机的硬件资源,效率更高。
 - Docker 使用宿主机的系统内核,避免了虚拟机启动时的系统引导和资源消耗,可以快速启动容器。
 - 虚拟机的安全性通常比容器更高,因为容器共享宿主机的内核,可能存在隔离性不足的风险。
 
Docker 概念
- Docker 是一个开源的应用容器引擎,允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中,并且可以在任何 Linux 机器上运行。
 
安装 Docker
在 Ubuntu 上安装 Docker 可以参考Ubuntu 安装 Docker的指南。
Docker 架构

- 客户端:通过命令如 
docker build、docker pull、docker run与 Docker 交互。 - 宿主机: 
Image(镜像):包含应用及其运行环境的文件。Container(容器):镜像的运行实例,可以被创建、启动、停止、删除等。
 - 仓库(Registries):远程存储镜像的地方,可以是公共或私有的。
 
镜像加速
由于很多 Docker 镜像存储在国外,可以使用镜像加速配置以提高下载速度。
Docker 命令
Docker 命令的详细列表可查看Docker 命令大全。
进程服务相关命令
启动 Docker:
systemctl start docker
 
观察docker状态
systemctl status docker
 
停止docker
systemctl stop docker
 
重启docker
systemctl restart docker
 
设置开机自动启动
systemctl enable docker 
镜像相关文件命令
本地查看镜像文件
docker images
 

- repository:
 hello-world,就是一个镜像文件,里面打包了很多软件和运行环境- tag:就是这个镜像文件的版本号
 - id:就是镜像的id
 - create:创建的时间
 - size:镜像的大小
 
查看本地的所有镜像id
docker images -q
 
搜索镜像文件
(sudo) docker search redis
 
搜索是否有redis镜像文件

name;搜索到和redis相关的镜像文件名
description:该文件的描述
official:是否是官方的
下载镜像文件
docker pull redis:(number)
 
:后面指定要下载的版本
如果没有指定的话,就是下载最新版本
可以登陆docker官方网站,搜索对应要下载的镜像名,查看版本号,添加在:后面即可
删除对应的镜像
docker rmi [image ID]
 
后面是要删除的镜像id
容器相关的命令
通过镜像文件实例出对应的对象
- 创建容器
 
docker run -it --name=c1 redis /bin/bash 
sudo docker run -id --name=c3 redis
 
- -i :保持容器一直运行着,如果没有加的话,没有客户端连接,容器就会自动关闭,在容器关闭的时候自动关闭容器
 - -t:启动的时候可以添加一个终端
 - -d: 启动的时候不会自动进入容器,会在后台运行,退出之后容器不会关闭
 - –name=c1:给这个容器起名字为c1
 - redis :就是我们要启动的容器对应的镜像文件,可以在镜像文件后添加:,附带上版本号
 - /bin/zsh :进入容器的初始化指令,进入容器之后,就打开的bash
 
回车之后就进入了一个docker容器,就是一个linux的环境
-  
进入容器
这个是需要使用-d创建出来的容器sudo docker exec -it c3 /bin/bash进入到c3这个容器中,/bin/bash后面就是指定的命令
 -  
退出
exit -  
查看容器
-  
查看历史上登陆过的所有容器
docker ps -a- container id:容器的id
 - image:容器对应的镜像
 - command:进入容器对应的命令
 - names:容器的名字
 
 -  
查看正在在线的容器
docker ps 
 -  
 -  
启动容器
 -  
停止容器
sudo docker stop c3c3就是我们要关闭的容器名
 -  
删除容器
sudo docker rm c3c3就是我们要删除的容器的名字
我们不能删除一个正在运行的容器
 -  
查看容器的信息
sudo docker inspect c2 
镜像加载的原理
UnionFS(联合文件系统)
- Union文件系统是一种分层,轻量级,高性能的文件系统,支持对文件系统的修改作为一次提交,来一层层的叠加,这些层是独立的,可写的,使他们逻辑上看像是一个文件系统,union文件系统通常用于创建具有多个层次的文件系统,如docker容器的镜像层,每次叠加的都不会影响底部的文件系统,使得docker可以轻松继承和共享基础镜像的文件系统
 - union允许不同目录或文件系统挂载到同一个虚拟文件系统中
 
例如,我们可以将应用程序的代码和配置文件放在不同的目录中,然后通过Union文件系统将它们合并到一个虚拟文件系统中。这样做可以简化应用程序的部署和管理,同时提供更灵活的文件系统组织方式,以满足不同应用程序的需求。
docker 镜像加载原理

 
容器的数据卷
数据卷概念
-  
数据卷是宿主机的一个
目录或文件 -  
当容器目录和数据卷目录绑定之后,对方的
修改会进行同步在容器里面的修改,宿主机上也能看到相应的变化,同样,宿主机上的变化,在容器里面也能看到
 -  
一个数据卷可以被多个容器挂载
解决了多个容器之间的数据交互
 -  
一个容器可以挂载多个数据卷
 
数据卷的作用
- 实现了容器数据的
持久化,和数据的同步 - 外部机器和容器之间可以间接通信
 - 容器之间可以实现数据交互
 - 新容器挂载上原有已经存在的数据卷,可以共享里面存在的数据
 
配置数据卷
docker run ... -v 宿主机目录(文件):容器内目录(文件) ...
 
sudo docker run -id --name=c3 -v /home/zevin/docker_data:/root/docker_container redis
 
数据卷容器
多容器进行数据交互
- 多个容器可以挂载到同一个数据卷上
 - 可以使用一个数据卷容器
 
数据卷容器就是一个容器,挂载到数据卷上,然后别的容器挂载到自己上,进行数据交互
相当于数据卷容器创建了宿主机目录的快捷方式,然后把快捷方式复制到了挂载的容器上,所以即使这个数据卷容器挂了也没有影响
本质就是
去中心化同时,当容器需要挂载多个目录的时候,新容器可以照搬老容器的所有挂载,提高效率
配置数据卷容器
-  
启动c3数据卷容器,使用-v 参数设置数据卷
sudo docker run -it --name=c3 -v /volume redis -  
传建启动c2,c1容器,使用
--volumes-from参数来继承数据卷容器sudo docker run -id --name=c1 --volumes-from c3 redis 
