70、微服务保姆教程(十三)Docker容器详细讲义

一、关于Docker

1.1为什么要用docker?

随着开发的项目越来越复杂,软件越来越多,服务器越来越多,我们在开发和部署的时候会遇到很多问题,比如:

1.不同的应用程序可能会有不同的应用环境,比如Java开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都安装在一个服务器上就要调试很久,而且很麻烦,还会造成一些冲突。比如tomcat和Apache访问端口冲突。这个时候你就要隔离Java开发的网站和php开发的网站。常规来讲,我们可以在服务器上创建不同的虚拟机在不同的虚拟机上放置不同的应用,但是虚拟机开销比较高。2.你开发软件的时候用的是Ubuntu,但是运维管理的都是centos,运维在把你的软件从开发环境转移到生产环境的时候就会遇到一些Ubuntu转centos的问题,比如:有个特殊版本的数据库,只有Ubuntu支持,centos不支持,在转移的过程当中运维就得想办法解决这样的问题。3.我们部署一台服务器就需要安装和配置很多环境,在分布式环境中,需要部署很多台,每台都完全安装和部署一次太麻烦。

那么怎么解决呢?我们可以用Docker!

Docker可以把开发环境直接封装转移给运维,运维直接部署封装后的环境就可以,而且docker可以实现虚拟机隔离应用环境的功能,并且开销比虚拟机小,小就意味着省钱了。

1.2 什么是docker

docker是一个开源的应用容器引擎,开发者可以打包自己的应用到容器里面,然后迁移到其他机器的docker应用中,可以实现快速部署。如果出现的故障,可以通过镜像,快速恢复服务。

1.3 docker的思想

1.Docker采用集装箱思想意思是将需要的内容和环境打包成一个个集装箱,所有的集装箱都可以上传到码头上,当有人需要某个环境时,就从码头上拉取这个集装箱就可以。码头的概念类似Maven仓库。2.Docker的隔离型docker在运行集装箱中的内容时,会在linux内核中,单独的开辟一个单元,不会影响到其它程序。3.Docker的标准化docker提供了一系列的命令,帮助我们去创建,拉取集装箱。docker还提供了Rest的Api,衍生出了很多的图形化界面,Rancher。  

在这里插入图片描述

1.4 底层原理

docker是利用Linux内核虚拟机化技术(LXC),提供轻量级的虚拟化,以便隔离进程和资源。LXC不是硬件的虚拟化,而是Linux内核的级别的虚拟机化,相对于传统的虚拟机,节省了很多硬件资源。NameSpaceLXC是利用内核namespace技术,进行进程隔离。其中pid, net, ipc, mnt, uts 等namespace将container的进程, 网络, 消息, 文件系统和hostname 隔离开。Control GroupLXC利用的宿主机共享的资源,虽然用namespace进行隔离,但是资源使用没有收到限制,这里就需要用到Control Group技术,对资源使用进行限制,设定优先级,资源控制等。

1.5 版本支持

在CentOS6.8是可以支持docker,但是有些特性无法使用,因此至少使用3.8的内核版本,建议是使用3.10版本以上。国内生产环境很多都是使用CentOS,所以一般使用CentOS7即可。
当然如果是Ubuntu/Debian/Deepin系列的发行版本也是支持的。

二、 Docker安装和配置

2.1 环境准备

操作系统:CentOS

软件源:阿里云镜像(在阿里云镜像站上面可以找到docker-ce的软件源,使用国内的源速度比较快)

2.2 安装docker

1、安装依赖

docker依赖于系统的一些必要的工具,可以提前安装。

yum -y  install yum-utils device-mapper-persistent-data lvm2

在这里插入图片描述

2、添加软件源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

在这里插入图片描述

3、安装docker-ce
yum clean all #yum 会把下载的软件包和header存储在cache中而不自动删除。如果觉得占用磁盘空间,可以使用yum clean指令清除缓存。yum makecache fast  #这个命令是将软件包信息提前在本地缓存一份,用来提高搜索安装软件的速度yum -y install docker-ce

在这里插入图片描述

在这里插入图片描述

4、启动服务

通过systemctl启动服务

systemctl start docker

在这里插入图片描述

5、查看安装版本

这样子就安装成功了,启动服务以后可以使用docker version查看一下当前的版本。

docker version

在这里插入图片描述

6、设置开机自动启动
 systemctl enable docker

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/83386.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 中的 typing.ClassVar 详解

一、ClassVar 的定义和基本用途 ClassVar 是 typing 模块中提供的一种特殊类型,用于在类型注解中标记类变量(静态变量)。根据官方文档,使用 ClassVar[…] 注释的属性表示该属性只在类层面使用,不应在实例上赋值 例如&…

架构与UML4+1视图

简单对比分析 架构41视图 架构41视图是由Philippe Kruchten提出的,用于描述软件系统的架构。它包括以下五个视图: 逻辑视图:描述系统的功能需求,展示系统的静态结构,通常使用类图、对象图等。开发视图:…

Redis 八股

目录 数据类型 字符串: List: HASH: Set: Zset: BitMap:(这个及以下是后来新增的数据结构) HyperLogLog: GEO: Stream: 主要数据结构 …

基于协同过滤的文学推荐系统设计【源码+文档+部署】

基于协同过滤的文学推荐系统设计 摘要 随着信息技术的飞速发展和文学阅读需求的日益多样化,构建一个高效、精准的文学推荐系统变得尤为重要。本文采用Spring Boot框架,结合协同过滤算法,设计并实现了一个基于用户借阅行为和社交论坛互动的文学…

鸿蒙电脑:五年铸剑开新篇,国产操作系统新引擎

出品 | 何玺 排版 | 叶媛 前不久,玺哥发布的《鸿蒙电脑,刺向垄断的利刃,将重塑全球PC市场格局》发布后,获得了读者朋友的积极反馈,不少都期望鸿蒙电脑早日发布。 如今,它真来了! 5月8日&…

EWOMAIL

1、错误 Problem: problem with installed package selinux-policy-targeted-3.14.3-41.el8.noarch package fail2ban-server-1.0.2-3.el8.noarch requires (fail2ban-selinux if selinux-policy-targeted), but none of the providers can be installed - package fail2ban-…

qt5.14.2 opencv调用摄像头显示在label

ui界面添加一个Qlabel名字是默认的label 还有一个button名字是pushButton mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <opencv2/opencv.hpp> // 添加OpenCV头文件 #include <QTimer> // 添加定…

Spring三级缓存的作用与原理详解

在Spring框架中&#xff0c;Bean的创建过程涉及到了三级缓存机制。这个机制主要是为了提高单例模式下bean实例化和依赖注入的效率。本文将深入探讨Spring中的三级缓存&#xff0c;以及其在bean生命周期中的重要作用。 首先&#xff0c;让我们理解什么是三级缓存。Spring中的三…

IoTDB集群的一键启停功能详解

IoTDB&#xff08;Internet of Things Database&#xff09;作为一种专为物联网设计的高性能时序数据库&#xff0c;支持单机与分布式等多种部署模式。随着节点数量的增加&#xff0c;手动管理集群的启动与停止过程变得繁琐。为了提升部署效率&#xff0c;IoTDB 提供了一键启停…

Oracle学习日记--Oracle中使用单个inert语句实现插入多行记录

目录 前言&#xff1a; 问题现象&#xff1a; 问题分析&#xff1a; 解决方法&#xff1a; 1、insert into ... union all句式 2、insert all into ...select 1 from dual句式 总结&#xff1a; 前言&#xff1a; 最近项目中使用到了Oracle数据库&#xff0c;由于Oracle数…

LabVIEW 程序运行时内存不足报错原因

在 LabVIEW 程序开发与运行过程中&#xff0c;内存不足报错并退出是常见且棘手的问题。这不仅影响程序稳定性&#xff0c;还可能导致数据丢失与系统崩溃。以下从程序设计、硬件资源、系统环境等多维度深入剖析其成因&#xff0c;帮助开发者准确定位并解决问题。 ​ 一、程序设…

【GAN网络入门系列】一,手写字MINST图片生成

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 博主简介&#xff1a;努力学习的22级本科生一枚 &#x1f31f;​&#xff1b;探索AI算法&#xff0c;C&#xff0c;go语言的世界&#xff1b;在迷茫中寻找光芒…

Baklib加速企业AI数据智理转型

Baklib智理AI数据资产 在AI技术深度渗透业务场景的背景下&#xff0c;Baklib通过构建企业级知识中台架构&#xff0c;重塑了数据资产的治理范式。该平台采用智能分类引擎与语义分析模型&#xff0c;将分散在邮件、文档、数据库中的非结构化数据转化为标准化的知识单元&#xf…

如何在Windows右键新建菜单中添加自定义项,将notepad添加到新建菜单

一、简介 Windows 右键新建菜单的核心管理机制隐藏在注册表的 HKEY_CLASSES_ROOT 根键中。这里存在两种关键注册表项&#xff1a;文件扩展名项和文件类型项&#xff0c;它们共同构成了新建菜单的完整控制体系。 以常见的.txt文件为例&#xff0c;系统通过以下机制实现新建菜单…

中大型水闸安全监测系统建设实施方案

一、方案背景 随着科技的不断进步&#xff0c;水利工程的数字化转型已经成为提升城市水资源管理效率和增强防洪能力的关键。今天&#xff0c;我们将引导您深入了解我国大中型水闸安全监测管理系统的构建方案&#xff0c;探讨如何运用先进技术确保国家水安全&#xff0c;提升水利…

Gartner《如何有效融合Data Fabric 与Data Mesh数据战略》学习心得

在当今数字化时代,数据已成为企业最为重要的战略资产之一。企业对于高效的数据管理架构的需求日益迫切,以确保能够从海量数据中提取有价值的信息,支持业务决策和创新。近年来,数据编织(Data Fabric)和数据网格(Data Mesh)成为了数据管理领域的两个热门概念,在行业内引…

matlab建立整车模型,求汽车的平顺性

在MATLAB中建立整车模型评估汽车平顺性&#xff0c;通常采用多自由度振动模型。以下是基于四分之一车模型的详细步骤和代码示例&#xff0c;可扩展至整车模型。 1. 四分之一车模型&#xff08;简化版&#xff09; 模型描述 自由度&#xff1a;2个&#xff08;车身垂直位移 z2…

探究电阻分压的带负载能力

我们经常使用两个电阻去分压来获得特定的电压,那么我是两个大阻值电阻分压获得的电压驱动能力强,还是小阻值电阻分压得到的电压驱动能力强呢? 一、电压相同时,电流的大小 下面是两个阻值分压得到的仿真图 电路分析: VCC都是5V,探针1和探针2测到的电压都是1.67V; 根据…

牛客网NC22222:超半的数

牛客网NC22222:超半的数 题目描述 输入输出格式 输入格式&#xff1a; 第一行包含一个整数 n (1 ≤ n ≤ 1000)第二行包含 n 个整数 a_i (1 ≤ a_i ≤ 10^9) 输出格式&#xff1a; 输出一个整数&#xff0c;表示出现次数超过一半的那个数 解题思路 这道题目有多种解法&a…

开发日常中的抓包工具经验谈:Charles 抓包工具与其它选项对比

开发日常中的抓包工具经验谈&#xff1a;HTTPS调试怎么选&#xff1f; 在移动开发或Web API联调时&#xff0c;网络请求常常成为问题定位的第一难题。尤其是面对加密的 HTTPS 请求&#xff0c;传统浏览器调试工具已显得力不从心。 我们团队最近在排查一个安卓应用中的支付延迟…