Docker搭建LNMP环境实战(05):CentOS环境安装Docker-CE

前面几篇文章讲了那么多似乎和Docker无关的实战操作,本篇总算开始说到Docker了。

1、关于Docker

1.1、什么是Docker

Docker概念就是大概了解一下就可以,还是引用一下百度百科吧:

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

一个完整的Dockery由以下几个部分组成:

  • dockerClient客户端

  • Docker Daemon守护进程

  • Docker Image镜像

  • DockerContainer容器

1.2、为什么要使用Docker

作为一种新兴的虚拟化方式,Docker跟传统的虚拟化方式相比具有众多的优势。

  • 更高效的利用系统资源

由于容器不需要进行硬件虚拟及运行完整操作系统等额外开销,Docker对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统的虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。

  • 更快速的启动时间

传统的虚拟机技术启动应用服务往往需要数分钟,而Docker容器应用,由于直接运行与宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级别的启动时间。大大的节约了开发、测试、部署的时间。

  • 一致的运行环境

开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些BUG并未在开发过程中被发现。而Docker的镜像提供了除了内核外完整的运行时环境,确保了应用运行环境得一致性,从而不会再出现“这段代码在我机器上没问题”这类问题。

  • 持续交付和部署

对开发和运维人员来说,最希望的就是一次性创建或配置,可以在任意地方正常运行。

使用Docker可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过DockerFile来进行镜像构建,并结合 持续集成系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合持续部署系统进行自动部署。

而使用DockerFile使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。

  • 更轻松的迁移

由于Docker确保了执行环境得一致性,使得应用的迁移更加容易。Docker可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户可以很轻易的将在一个平台上运行的应用迁移到另一个平台,而不用担心运行环境得变化导致应用无法正常运行的情况。

  • 更轻松的维护和扩展

Docker使应用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变的非常简单。此外,Docker团队同各个开源项目团队一起维护了一大批高质量的官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。
图1  Docker vs 传统虚拟机

图1 Docker vs 传统虚拟机

摘自《Docker从入门到实践》。

1.3、Docker版本分类

Docker分为CE版本和EE版本,区别如下:

  • Docker社区版(CE):为了开发人员或小团队创建基于容器的应用,与团队成员分享和自动化的开发管道。docker-ce提供了简单的安装和快速的安装,以便可以立即开始开发。docker-ce集成和优化,基础设施。(免费)

  • Docker企业版(EE):专为企业的发展和IT团队建立谁。docker-ee为企业提供最安全的容器平台,以应用为中心的平台。(付费)

我们使用CE版本即可,即Docker-CE。

  • Docker-CE有windows版本,我也安装过,但是有太多莫名其妙的问题,确实无法使用,所以就尝试在虚拟机的CentOS里使用Docker-CE,效果非常棒,这也就是我前面会花那么多篇幅来写Windows下安装CentOS的原因。这样初学者不用再翻各种资料来进行尝试,确保一气呵成。哈哈!

2、安装Docker-CE(请先按步骤体验一下安装过程,文章末尾会追加自动化安装脚本)

docker安装的有些步骤我也不是很明白,从网上查到相关知识,通过实战安装发现可行,就OK了。

2.1、Docker版本检查

docker要求CentOS 系统的内核版本高于 3.10 ,安装之前首先要验证你的CentOS 版本是否支持 Docker 。

通过uname -r 命令查看你当前的内核版本(建议使用xshell连接虚拟机进行命令操作):

 $ uname -r

图2  CentOS内核版本查看

图2 CentOS内核版本查看

CentOS内核版本没有问题

2.2、更新系统

使用root 权限登录 CentOS。确保 yum 包更新到最新。

$ yum -y update

2.3、卸载旧版本(如果安装过就版本的话)

$ yum remove docker docker-common docker-selinux docker-engine

如果安装过旧版本,就会卸载当前版本;如果没安装过,运行上面的命令也没关系,只是提示未安装
图3  卸载旧版本

图3 卸载旧版本

比较干净,没有需要删除的历史docker。

2.4、安装需要的软件包

yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

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

2.5、设置yum源,清华镜像仓库,速度很快

yum -y install wget #如果没有安装wget则安装,如已安装则会跳过

#根据你的发行版下载repo文件:

$ wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo

#把软件仓库地址替换为 TUNA:

sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo

2.6、安装docker

$ yum makecache fast # 清缓存
$ yum install docker-ce  # 安装docker-ce

2.7、启动并加入开机启动

$ systemctl start docker
$ systemctl enable docker

2.8、验证安装是否成功

如果有client和service两部分,则表示docker安装启动都成功了

$ docker version

图4  检查docker版本

图4 检查docker版本

3、安装Docker Compose

以前使用 Docker 的时候,需要定义 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知。

使用 Docker Compose 可以轻松、高效地管理容器,他是一个用于定义和运行多容器Docker的应用程序工具。

3.1、运行命令下载 docker compose

从国内镜像 get.daocloud.io 快速下载:

curl -L https://get.daocloud.io/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

注意:我多次尝试从上面的地址下载 docker-compose, 一直没有成功,所以将 docker-compose 文件上传到了github,放到安装脚本 install-docker.sh 同级目录下,可一起打包下载到安装目录下,对 install-docker.sh 文件做了相应修改。具体可到我的 github 上获取,项目地址为:https://github.com/tanbushi/install-docker。

3.2、给执行文件添加执行权限

chmod +x /usr/local/bin/docker-compose

3.3、输入命令测试

docker-compose --version

返回:

docker-compose version 1.22.0, build f46880fe

docker compose 安装成功!

3.4、配置docker国内镜像

为了确保docker能快速加载应用程序镜像,配置镜像列表,指向国内的镜像地址。

修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值。

{"registry-mirrors": ["https://registry.docker-cn.com"]
}

修改保存后重启 Docker 以使配置生效。

systemctl restart docker

至此,docker环境安装完毕!

4、自动化安装的脚本(后续我的项目都会编制相应的脚本,便于安装和维护)

体验过整个安装过程后,是不是觉得有些麻烦?是的,命令行模式一步步执行确实很啰嗦,还不好记。所以,我为大家准备了全自动化的安装脚本,并已经上传到了github,请到github拉取试用!github地址为:https://github.com/tanbushi/install-docker

拉取文件后,可以将 install-docker.sh 上传到虚拟机CentOS的任意目录里,或者将 install-docker.sh 拷入上一篇文章所建立和映射的共享文件夹下(文章里的示例路径为:F:\dockers),文章请参考:Docker搭建LNMP环境实战(04):安装VMware Tools共享文件夹;在虚拟机CentOS里的 /mnt/hgfs/dockers 里访问到 install-docker.sh。

给脚本 install-docker.sh 增加可执行权限

$ chmod +x install-docker.sh

执行 install-docker.sh 脚本文件

$ ./install-docker.sh

即可自动完成 docker 及 docker-compose 的安装!Good Lucky!

5、自动化卸载docker的脚本

在github地址为:https://github.com/tanbushi/install-docker 的项目里有个uninstall_docker.sh,可以和install.sh进行类似处理

执行 install-docker.sh 脚本文件

$ ./uninstall-docker.sh

即可自动完成 docker 的卸载!

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

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

相关文章

【机器学习之---数学】随机游走

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 随机游走 1. 概念 1.1 例1 在你的饮食俱乐部度过了一个富有成效的晚上后,你在不太清醒的状态下离开了。因此,你会醉醺醺地在展…

数据结构(五)单链表专题

在开始之前,我先来给大家讲一下顺序表与链表的区别: 它们在堆上存储的差异: 我们可以很容易的知道,循序表是连续的有序的,但链表是杂乱的,它们通过地址彼此联系起来。 1. 链表的概念及结构 概念&#xff1…

智慧交通(代码实现案例)

1.项目简介 目标: 了解智慧交通项目的架构知道智慧交通项目中的模块能够完成智慧交通项目的环境搭建 该项目是智慧交通项目,通过该项目掌握计算机视觉的方法在交通领域的相关应用,包括车道线检测的方法,多目标车辆追踪及流量统计方法&#…

Linux Tomcat的服务器如何查看接口请求方式?

问题描述 最近在和安卓开发对接接口,遇到一个接口总是报405错误,有对接经验的开发应该都知道是请求方式不对,假如接口定义为POST请求的,但是客户端却用GET请求,这时候就会报这个错误。Android客户端那边使用xUtils框架…

【小白入门篇3】还是GPT4更香

上一节文章《【小白入门篇2】总有一款AI工具适合你》介绍了很多ai产品给大家,有同学私信我,国内工具还是比较差,还是想用gpt4模型。这个章节介绍一些gpt4工具给大家, 其中大部分都只有一些免费的次数, 而且都需要kx上网才能访问。 OpenAI ch…

浙大版《C语言程序设计(第4版)》题目集-练习4-7 求e的近似值

自然常数 e 可以用级数 1 1 / 1 ! 1 / 2 ! ⋯ 1 / n ! ⋯ 11/1!1/2!⋯1/n!⋯ 11/1!1/2!⋯1/n!⋯来近似计算。本题要求对给定的非负整数 n,求该级数的前 n1 项和。 输入格式: 输入第一行中给出非负整数 n(≤1000)。 输出格式: 在一行…

记录一下安装ubuntu子系统的pycharm遇到的问题

sudo su #切换为root用户获取管理员权限用于新建用户 adduser username #新建用户(例如用户名为username) adduser username sudo #将用户添加到 sudo 组同样遇到这个问题,解决方法是:先新建一个用户名,然后再切换到这…

Android 性能优化实例分享-内存优化 兼顾效率与性能

背景 项目上线一段时间后,回顾重要页面 保证更好用户体验及生产效率,做了内存优化和下载导出优化,具体效果如最后的一节的表格所示。 下面针对拍摄流程的两个页面 预览页 导出页优化实例进行介绍: 一.拍摄前预览页面优化 预览效果问题 存在…

Quartus II仿真出现错误

ModelSim executable not found in D:/intelFPGA/18.0/quartus/bin64/modelsim_ase/win32aloem/ Error. 找不到modelsim地址,原来是我下载了.exe,但没有双击启动安装ase文件夹呀!!!!晕,服了我自己

Python7:接口自动化学习1 RPC

API(Application Programmming Interface) 应用编程接口,简称“接口” 接口:程序之间约定的通信方法 特点:约定了调用方法,以及预期的行为,但是不透露具体细节 意义:程序能解耦&…

【No.20】蓝桥杯简单数论下|寻找整数|素数的判断|笨小猴|最大最小公倍数|素数筛|埃氏筛|欧氏线性筛|质数|分解质因子(C++)

寻找整数 【题目描述】 有一个不超过 1 0 1 7 10^17 1017的正整数n,知道这个数除以2至49后的余数如下表所示,求这个正整数最小是多少 解法一:模拟 暴力法:一个个检验 1 … 1 0 17 1\dots 10^{17} 1…1017的每个数 由于这个数n…

【pytest、playwright】构建POM项目,以及解决登录问题,allure环境问题

目录 前言 1、文件目录 2、安装依赖 3、POM项目实战-案例:打开指定页面 目录结构: pages中的代码: cases中的代码: 4、解决登录问题 问题: 解决方案: 获取登录的用户信息(cookie&a…

DasViewer电脑客户端打开文件夹时,一直显示崩溃,该怎么解决?

问题如图 如若用的是DasViewer V3.2.4Beta版本,可以换回3.2.1版本进行尝试。 DasViewer是由大势智慧自主研发的免费的实景三维模型浏览器,采用多细节层次模型逐步自适应加载技术,让用户在极低的电脑配置下,也能流畅的加载较大规模实景三维模型,提供方便快捷的数据浏…

发送请求- header配置

请求头里是客户端的要求,把你的诉求告诉服务端,服务端按照你的要求返回数据 , 请求header需要严格全配置,把请求header全部传入,不能频繁访问,让后端知道它是正常请求 一般只配置User-Agent和Content Typ…

云原生靶场kebernetesGoat、Metarget

靶场 文章目录 靶场kebernetesGoat靶场安装Docker in DockerSSRF漏洞容器逃逸到主系统Docker CIS 基线分析Kubernetes CIS 安全基线分析分析被部署挖矿软件的容器镜像获取环境信息Hidden in layersRBAC最低权限配置错误使用 Sysdig Falco 进行运行时安全监控和检测 Metarget ke…

iOS App 上架指南及关键

引言 上架App Store是将iOS应用提交申请并上线的过程,旨在让应用在App Store上展示,吸引用户并获取流量。本文将介绍iOS上架的整体流程,并提供一些建议和注意事项。 一、iOS上架的整体流程 1. 申请开发者账号 首先,需要申请苹…

DevSecOps平台架构系列-亚马逊云AWS DevSecOps平台架构

目录 一、概述 二、AWS DevSecOps实施原则 2.1 尽早采用安全测试,加速问题反馈 2.2 优先考虑预防性安全控制 2.3 部署检测性安全控制时,确保有与之互补的响应性安全控制 2.4 安全自动化 2.5 总结 三、AWS DevSecOps关键组件 3.1 关键组件 3.2 关…

新能源汽车充电桩主板各模块成本占比解析

汽车充电桩主板是汽车充电桩的重要组件,主要由微处理器模块、通信模块、控制模块、安全保护模块、传感器模块等多个模块构成。深入探究各模块在总成本中的比重,我们可以更好地优化成本结构、提高生产效率,并为未来的技术创新和市场需求变化做…

TypeScript【入门】

TypeSript ts是js的一个超集,解决js类型支持 js: 动态类型 ts:静态类型 代码执行的顺序是先编译在执行 发现错误更早 为什么要添加类型支持? 优势有什么? 全局安装 npm i -g typescript tsc -v 简化运行ts的步骤 typescript常用类型 类型…

C++类和对象、面向对象编程 (OOP)

文章目录 一、封装1.抽象、封装2.类和对象(0)学习视频(1)类的构成(2)三种访问权限(3)struct和class的区别(4)私有的成员变量、共有的成员函数(5)类内可以直接访问私有成员,不需要经过对象 二、继承三、多态1.概念2.多态的满足条件3.多态的使用条件4.多态原理剖析5.纯…