前端学习Docker(一)
2021-08-01 运维知识
前言 #
docker主要用于运维,当然了,开发也可以用,可以在启动应用项目的时候使用docker方式,docker是虚拟化技术,每一个docker容器都是一个linux虚拟机,而且还可以根据不同的应用定制,最小的可以直接依赖linux内核,仅仅几M就可以运行。这个技术解决了软件的部署问题。
布署软件的问题 #
- 如果想让软件运行起来要保证操作系统的设置,各种库和组件的安装都是正确的
- 热带鱼&冷水鱼 冷水鱼适应的水温在 5-30 度,而热带鱼只能适应 22-30 度水温,低于 22 度半小时就冻死了
虚拟机 #
- 虚拟机(virtual machine)就是带环境安装的一种解决方案。它可以在一种操作系统里面运行另一种操作系统
- 资源占用多
- 冗余步骤多
- 启动速度慢
Linux 容器 #
- 由于虚拟机存在这些缺点,Linux 发展出了另一种虚拟化技术:Linux 容器(Linux Containers,缩写为 LXC)。
- Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。
- 启动快
- 资源占用少
- 体积小
什么是Docker #
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。
Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。
总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
- Docker 是一个开源的、轻量级的容器引擎,主要运行于 Linux 和 Windows,用于创建、管理和编排容器。它是目前最流行的 Linux 容器解决方案。
- Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样
docker 和 KVM #
- 启动时间
- Docker 秒级启动
- KVM 分钟级启动
- 轻量级 容器镜像通常以 M 为单位,虚拟机以 G 为单位,容器资源占用小,要比虚拟要部署更快速
- 容器共享宿主机内核,系统级虚拟化,占用资源少,容器性能基本接近物理机
- 虚拟机需要虚拟化一些设备,具有完整的 OS,虚拟机开销大,因而降低性能,没有容器性能好
- 安全性
- 由于共享宿主机内核,只是进程隔离,因此隔离性和稳定性不如虚拟机,容器具有一定权限访问宿主机内核,存在一下安全隐患
- 使用要求
- KVM 基于硬件的完全虚拟化,需要硬件 CPU 虚拟化技术支持
- 容器共享宿主机内核,可运行在主机的 Linux 的发行版,不用考虑 CPU 是否支持虚拟化技术
Docker通常用于如下场景: #
- web应用的自动化打包和发布
- 自动化测试和持续集成、发布;
- 在服务型环境中部署和调整数据库或其他的后台应用;
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
- 节省项目环境部署时间
- 单项目打包
- 整套项目打包
- 新开源技术
- 环境一致性
- 持续集成
- 微服务
- 弹性伸缩
Docker 体系结构 #
- containerd 是一个守护进程,使用 runc 管理容器,向 Docker Engine 提供接口
- shim 只负责管理一个容器
- runC 是一个轻量级工具,只用来运行容器
Docker 内部组件 #
namespaces
命名空间,Linux 内核提供的一种对进程资源隔离的机制,例如进程、网络、挂载等资源cgroups
控制组,linux 内核提供的一种限制进程资源的机制,例如 cpu 内存等资源unonFS
联合文件系统,支持将不同位置的目录挂载到同一虚拟文件系统,形成一种分层的模型
docker 安装 #
- docker 分为企业版(EE)和社区版(CE)
- docker-ce
- hub.docker
安装 #
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io -y
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io -y
启动 #
systemctl start docker
systemctl start docker
查看 docker 版本 #
$ docker version
$ docker info
$ docker version
$ docker info
卸载 #
docker info
yum remove docker
rm -rf /var/lib/docker
docker info
yum remove docker
rm -rf /var/lib/docker
Docker 架构 #
Docker 镜像加速 #
阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}
EOF
# 重载所有修改过的配置文件
//daemon-reload: 重新加载某个服务的配置文件
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}
EOF
# 重载所有修改过的配置文件
//daemon-reload: 重新加载某个服务的配置文件
sudo systemctl daemon-reload
sudo systemctl restart docker
版权属于: vincent
转载时须注明出处及本声明
Tags:# Docker