当前位置: 首页 > ops >正文

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.xdnf.cn/news/6420.html

相关文章:

  • 香港科技大学广州|智能制造学域硕博招生宣讲会-西北工业大学专场
  • 【沉浸式求职学习day40】【java面试题精选2】
  • 代码分支操作步骤
  • 人工智能(AI)与机器学习(ML):定义、区别及应用解析
  • web3 前端常见错误类型以及错误捕获处理
  • 四维时空数据安全传输新框架:压缩感知与几何驱动跳频
  • 游戏代码混淆的作用与应用分析
  • C++:运算符重载
  • 2025年5月通信科技领域周报(5.5-5.11):6G终端生态加速构建 量子通信迈入城际商用新阶段
  • GRE作文总结和归纳
  • next.js实现项目搭建
  • 院校机试刷题第三天:1393矩阵转置、1703最大字串和、1700判断回文数
  • 使用Python开发经典俄罗斯方块游戏
  • 蓝桥杯 2024 C++国 B最小字符串
  • 【算法】前缀和
  • [项目深挖]仿muduo库的并发服务器的解析与优化方案
  • Flink 1.13.2 日志配置优化:保留最近 7 天日志文件
  • 【工具】metaTP:一种集成了自动化工作流程的元转录组数据分析工具包
  • python开发api平台雏形
  • 【Java Web】速通JSON
  • How to initialize Linux Mint 22.1 Desktop Operating System
  • 七彩喜数字康养平台:技术驱动下的银发经济范式革命
  • 腾讯开源实时语音大模型VITA-audio,92mstoken极速响应,支持多语言~
  • 模仿学习笔记
  • Xinference 命令大全:从模型部署到管理
  • 《从零开始入门递归算法:搜索与回溯的核心思想 + 剑指Offer+leetcode高频面试题实战(含可视化图解)》​
  • 拷贝构造函数如果不加引用会怎样?
  • 【搭建Node-RED + MQTT Broker实现AI大模型交互】
  • 乐观锁、悲观锁、分布式锁
  • 金仓数据库使用sys_walfile_name函数时的时间线问题排查指南