IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Docker--容器虚拟化技术的初步了解 -> 正文阅读

[系统运维]Docker--容器虚拟化技术的初步了解

Docker简介

在这里插入图片描述

Dcoker是基于容器技术的轻量级虛拟化解决方案,docker是由容器引擎,把linux的cgroup、namespaces等容器底层技术进行完美的封装、并抽象为用户提供创建和管理容器的便捷界面(命令行Cli、api等) C/s

一.Docker介绍

  • Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

  • Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

  • 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

  • Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)。

二、Docker的底层原理


  • Docker使用一种称为namespaces提供容器的隔离工作区的技术。运行容器时,Docker会为该容器创建一 组名称空间。
  • 这些名称空间提供一层隔离。容器的每个方面都在单独的名称空间中运行,并且其访问仅限于该名称空间。
  • 通过Linux中内核态的管理模块 cgroups (Control groups) 控制组 与 namespace 结合,控制管理了6个名称空间资源来实现应用之间的完整隔离。

6个名称空间介绍如下:
①、mount:文件系统,挂载点------->一个文件系统内,不能重复挂载一个指定目录
②、user:操作进程的用户和用户组
③、pid:进程编号
④、uts:主机名和主机域
⑤、ipc:信号量、消息队列,共享内存
⑥、net:网络设备、网络协议栈、端口等

三、Docker的优势

  • Docker引擎统一了基础设施环境:docker环境------》image------>封装一个简易的操作系统(3.0+G)
  • Docker引擎统一了封装应用(装箱/封装-类比于集装箱)方式:docker镜像一》 images
  • Docker 引擎统一了运行时环境:docker容器一 》基于镜像——》运行为容器(可运行的环境),实现了一次构建、多次、多处使用

四、Docker容器与传统虚拟化的比较

特性Docker虚拟机
启动速度秒级分钟级
计算能力损耗接近无损耗50%左右
磁盘占用MB级GB级
数量 上千个(进程)几十个(操作系统)
隔离性进程级别系统级别
封装程度只打包项目代码和依赖关系,共享宿主机内核完整的操作系统,与宿主机隔离
操作系统主要支持Linux几乎所有

五、Docker的三大核心概念

1.镜像(image)

  • Docker镜像是创建容器的基础,类似虚拟机的快照,可以理解为Docker容器的模板,比如:一个镜像可以是一个完整的Centos操作系统环境,称为Centos镜像,也可以是安装了Nginx的应用程序,称之为Nginx镜像,等等。
  • Docker可以自己创建镜像文件,也可以从网上下载已经做好的应用镜像来直接使用。

2.容器(container)

  • Docker容器是镜像运行的实例,它可以被启动、
    停止、删除。所创建的每一个容器都相互隔离。

3.仓库(repository)

  • Docker 仓库是用来存放镜像的地方,当创建了镜像之后可以使用 push 命令将它上传到公共仓库(public)或者私人仓库(private),当下次需要在别的机器上使用镜像的时候,只需要从仓库上使用 pull 命令下载下来就可以了。

Docker社区版安装

1.环境配置

[root@localhost opt]# systemctl stop firewalld.service 
[root@localhost opt]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost opt]# setenforce 0
[root@localhost opt]# vim /etc/selinux/config 
SELINUX=disabled
[root@localhost opt]# vim /etc/resolv.con
nameserver 114.114.114.114

2.安装依赖包

[root@localhost opt]# yum install -y yum-utils device-mapper-persistent-data lvm2
device:存储驱动 lvm2:控制工具

3.设置阿里云镜像源

[root@localhost opt]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
已加载插件:fastestmirror, langpacks
adding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo

4.安装docker-ce社区版

[root@localhost yum.repos.d]# yum -y install docker-ce
[root@localhost yum.repos.d]# systemctl start docker
[root@localhost yum.repos.d]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.servic

5.设置镜像加速

1、登录阿里云官网

在这里插入图片描述

在这里插入图片描述

2.通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://8*****.mirror.aliyuncs.com"]
}
EOF
[root@localhost docker]# systemctl daemon-reload 
[root@localhost docker]# systemctl restart docker
[root@localhost docker]# cat daemon.json 
{
  "registry-mirrors": ["https://8eueg49g.mirror.aliyuncs.com"]
}

3.设置路由转发

[root@localhost docker]# vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1

[root@localhost docker]# sysctl -p
net.ipv4.ip_forward = 1
[root@localhost docker]# systemctl restart network
[root@localhost docker]# systemctl restart docker

4.查看docker版本

三种方法:

  • docker -v :显示简要的版本信息
  • docker version : 显示docker client 和 docker server 的详细信息
  • docker info :更加详细的显示docker的所有信息
[root@localhost docker]# docker -v
Docker version 20.10.8, build 3967b7d
[root@docker ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.8
 API version:       1.41
 Go version:        go1.16.6
 Git commit:        3967b7d
 Built:             Fri Jul 30 19:55:49 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.8
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.6
  Git commit:       75249d8
  Built:            Fri Jul 30 19:54:13 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.9
  GitCommit:        e25210fe30a0a703442421b0f60afac609f950a3
 runc:
  Version:          1.0.1
  GitCommit:        v1.0.1-0-g4144b63
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
[root@docker ~]# docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.6.1-docker)
  scan: Docker Scan (Docker Inc., v0.8.0)

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 2
 Server Version: 20.10.8
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: e25210fe30a0a703442421b0f60afac609f950a3
 runc version: v1.0.1-0-g4144b63
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 3.10.0-957.el7.x86_64
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 3.683GiB
 Name: docker
 ID: 4KTG:EZRQ:4XKL:FLOB:BPPH:J3SS:LLT7:E2ZS:YUVE:L73B:AIFH:6ABL
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://rpw1odqr.mirror.aliyuncs.com/
 Live Restore Enabled: false

WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

4.配置docker的网段两种方式

①:配置文件vim /etc/docker/daemon.json内添加"bip": “IP地址/24”

②:命令行配置:

[root@localhost docker]# vim /etc/docker/daemon.json
{
	"graph": "/data/docker",					##数据目录
	"storage-driver": "overlay2",				##存储引擎;版本迭代:LXC——>overlay——>overlay2(overlayfs:文件系统,解决docker镜像分层)
	"insecure-registries": [" registry.access.redhat.com", "quary.io"]	##私有仓库位置
	"registry-mirrors": ["https://***"]		##镜像加速
	"bip": "172.17.0.1/24",		##docker网络;控制网段的位置;需要创建新的网桥,系统默认的docker0是不变的
	"exec-opts": ["native.cgroupdriver-systemd"],		##启动时候的额外参数(驱动)
	"live-restore":true		##当docker容器引擎挂掉的时候,使用docker跑起来的容器还能运行(分离)
}
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-05 11:27:40  更:2021-09-05 11:30:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 2:23:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码