千家信息网

Docker 理论简介及安装教程

发表于:2025-02-16 作者:千家信息网编辑
千家信息网最后更新 2025年02月16日,基于 Linux而言,docker是在其中运行应用的一款 开源工具,可以认为是一种轻量级的虚拟机。docker的logo是一条载着集装箱的鲸鱼(旧版的logo),新版的logo则是直接简化了细节,更改
千家信息网最后更新 2025年02月16日Docker 理论简介及安装教程
基于 Linux而言,docker是在其中运行应用的一款 开源工具,可以认为是一种轻量级的虚拟机。docker的logo是一条载着集装箱的鲸鱼(旧版的logo),新版的logo则是直接简化了细节,更改了颜色,如下图。

从图片中就可以看出来,docker的创建和开发者们的意图。鲸鱼--宿主机,块状箱--隔离的容器(后面介绍什么是docker容器)。而docker的宗旨:Build、Ship and Run Any APP,Anywhere。具体而言,就是通过对应应用组件的封装、发布、部署、运行等生命周期的管理,从而达到应用组件级别的"一次封装、处处运行"的目的。

举个例子就好比自己开发了一款应用软件,希望它在任何地点,任何时间、任何操作系统中都可以使用的时候,就可以将它基于docker来实现。当然,对于docker而言,这个组件可以是一个应用,也可以是一个配置,甚至可以是一个完整的操作系统。

为什么需要docker?

其实docker的出现对于开发人员是莫大的福音。设想目前或未来基于云平台的应用或软件的开发,脱离了底层的硬件,而使用者需要在任何时间、任何地点都可以获取相关的资源,那么docker便可以提供这样的诉求。

下面直接给出docker容器与传统虚拟机的比较

特性Docker容器虚拟机
启动速度秒级分钟级
计算机性能损耗几乎不损耗损耗一半左右
性能接近原生弱之
系统支持量上千个几十个
隔离性资源限制完全隔离

docker核心解决的问题是利用容器实现类似VM的功能,从而以更加节省的硬件资源给用户提供更多的计算资源,并且docker操作方便,还可以通过Dockerfile配置文件支持灵活的自动化创建和部署。

接下来看一下Docker与传统虚拟机架构的对比:

通过上图发现,虚拟机是在物理资源层面实现的隔离,相对于虚拟机,Docker是基于APP层面实现的隔离,并且省去了虚拟机操作系统,从而节省了一部分的系统资源。

Docker守护进程可以直接与主操作系统进行通信,为各个Docker容器分配资源;它还可以将容器与主操作系统隔离(为了安全),并将各个容器互相隔离。虚拟机启动需要数分钟,而Docker容器可以在数毫秒内启动。由于没有臃肿的从操作系统,Docker可以节省大量的磁盘空间以及其他系统资源。

简单来说,虚拟机和docker的区别就在于虚拟机需要通过Hypervisor对硬件资源也进行虚拟化,而docker是直接使用宿主机的硬件资源的,因此虚拟机的隔离性更加彻底,而docker的隔离性次之。

Docker的核心概念 1、镜像--image

可以理解为类似我们虚拟机中的快照,是创建容器的基础,可以说无镜像,不容器。

2、容器--container

基于镜像创建的运行实例,可以被启动、停止和删除。每个容器之间都是相互隔离、互不可见的。

3、仓库--repository

保存镜像的地方,可以理解为镜像囤积地。可以将自己创建的进行推送到仓库中,方便随时随地拉取使用。

仓库注册服务器(registry)是存放仓库的地方,其中包含了多个仓库,每个仓库中存放一类镜像,并且使用不同的标签(tag)来区分。目前最大的公共仓库就是Docker Hub,其中存放了数量庞大的镜像给用户下载使用。

这边补充说明一下docker架构:

Docker使用客户端-服务器架构。Docker 客户端与Docker 守护进程进行对话,该 守护进程完成了构建,运行和分发Docker容器的繁重工作。Docker客户端和守护程序 可以 在同一系统上运行,或者您可以将Docker客户端连接到远程Docker守护程序。Docker客户端和守护程序在UNIX套接字或网络接口上使用REST API进行通信。

架构图示:

Docker的安装流程

基于Linux/ CentOS7的安装部署流程如下:

操作系统版本:centos7.7

1、环境部署
[root@localhost ~]# hostnamectl  set-hostname docker[root@localhost ~]# su[root@docker ~]# cat /etc/RedHat-release CentOS Linux release 7.7.1908 (Core)[root@docker ~]# systemctl stop firewalld && systemctl disable firewalldRemoved symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.Removed symlink /etc/systemd/system/dbus-org.Fedoraproject.FirewallD1.service.[root@docker ~]# setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config[root@docker ~]# echo "net.ipv4.ip_forward=1" > /etc/sysctl.conf #开启路由转发[root@docker ~]# sysctl -p #加载路由转发功能net.ipv4.ip_forward = 1[root@docker ~]# systemctl restart network
2、安装依赖包
[root@docker ~]# yum install -y yum-utils device-mapper-persistent-data lvm2...更新完毕:  lvm2.x86_64 7:2.02.185-2.el7_7.2                                                                       作为依赖被升级:  device-mapper.x86_64 7:1.02.158-2.el7_7.2             device-mapper-event.x86_64 7:1.02.158-2.el7_7.2   device-mapper-event-libs.x86_64 7:1.02.158-2.el7_7.2  device-mapper-libs.x86_64 7:1.02.158-2.el7_7.2    lvm2-libs.x86_64 7:2.02.185-2.el7_7.2                完毕!

说明:

安装yum-utils软件包是为了提供一个yum-config-manager单元,同时安装的device-mapper-persistent-data和lvm2用于存储设备映射必须的两个软件包。

3、设置稳定的存储库
[root@docker ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo已加载插件:fastestmirror, langpacksadding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repograbbing file https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.reporepo saved to /etc/yum.repos.d/docker-ce.repo[root@docker ~]# ls /etc/yum.repos.d/ #查看是否加入了一个docker源CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repoCentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo  docker-ce.repo
4、安装docker引擎
[root@docker ~]# yum install -y docker-ce ...已安装:  docker-ce.x86_64 3:19.03.8-3.el7                                                                       作为依赖被安装:  container-selinux.noarch 2:2.107-3.el7              containerd.io.x86_64 0:1.2.13-3.1.el7               docker-ce-cli.x86_64 1:19.03.8-3.el7               完毕!
5、创建docker目录,配置镜像加速服务
[root@docker ~]# mkdir /etc/docker -p[root@docker ~]# tee /etc/docker/daemon.json <<-'EOF'> {>   "registry-mirrors": ["https://5m9y9qbl.mirror.aliyuncs.com"]> }> EOF{  "registry-mirrors": ["https://5m9y9qbl.mirror.aliyuncs.com"]}

说明:tee 命令--从标准输入写往文件和标准输出,即把标准输入的数据复制到每一个文件FILE, 同时送往标准输出。

6、开启服务,查看版本
[root@docker ~]# systemctl daemon-reload [root@docker ~]# systemctl restart docker.service [root@docker ~]# docker -vDocker version 19.03.8, build afacb8b[root@docker ~]# docker versionClient: Docker Engine - Community Version:           19.03.8 API version:       1.40 Go version:        go1.12.17 Git commit:        afacb8b Built:             Wed Mar 11 01:27:04 2020 OS/Arch:           linux/amd64 Experimental:      falseServer: Docker Engine - Community Engine:  Version:          19.03.8  API version:      1.40 (minimum version 1.12)  Go version:       go1.12.17  Git commit:       afacb8b  Built:            Wed Mar 11 01:25:42 2020  OS/Arch:          linux/amd64  Experimental:     false containerd:  Version:          1.2.13  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429 runc:  Version:          1.0.0-rc10  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init:  Version:          0.18.0  GitCommit:        fec3683
总结

本文主要介绍了docker的作用,将之与传统虚拟机进行特性对比,以及架构层面的对比,接着讲述有关docker的核心三大组成,最终给出基于Linux下Centos7操作系统中docker的安装流程。

原文地址: https://www.linuxprobe.com/docker-logo.html

容器 系统 资源 隔离 操作系统 镜像 仓库 应用 运行 客户 客户端 架构 标准 硬件 软件 开发 服务 传统 层面 文件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 免费vps云服务器 数据库系统管理员 定义 百词斩软件开发分层数据流图 拒不履行网络安全保护义务罪案例 sdk和软件开发区别 堡垒机纳管数据库用户 重庆璧山蔬菜配送软件开发 加速器出现服务器不在线 计算机网络技术层面上的技术 如何为一个数据库创建一个模式 职场网络安全事件 广州彩豆子网络技术有限公司 虚拟化后数据库连接不上 网络安全知识进校园的方案 数据库的load高 手机连接sftp服务器应用程序 超微服务器外部管理器 物理层面的网络安全隔离 数据库对象视图和存储过程 公交车实时数据库 大地期货公司有自己的服务器么 苹果六怎么删除应用数据库 企业数字化管理系统 服务器 把上一行填充到下一行数据库 大连教育局网络安全宣传周 数据库被打挂 迪茉互联网科技公司 数据库可以有多个主要数据吗 互联网科技名词含义是什么 新闻稿 网络安全体系认证
0