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

『 云原生·分布式』分布式基础——Docker容器详解与Docker的安装(Linux与Windows)

系列文章目录

本系列主要分为以下六大部分,正在更新中,尽请期待!

  • 『 云原生·生之门』总览云原生带你从-1到1
  • 『 云原生·分布式』云原生前置知识
  • 『 云原生·分布式』分布式基础
  • 『 云原生·微服务』Docker应用
  • 『 云原生·微服务』Nginx
  • 『 云原生·微服务』消息队列RabbitMQ

提示:已经更新的或正在更新的文章前面打勾了哈!

文章目录

  • 系列文章目录
  • 前言
  • 一、Docker架构是什么样的?
    • 1.Docker的核心组件
    • 2.Docker容器的Client和Server怎样运行的?
  • 二、Docker的核心要素
    • 1.Docker镜像
    • 2.Docker容器
    • 3.Registry
  • 二、Linux系统安装Docker
  • 三、Windows系统安装Docker
  • 总结


前言

上一篇我们已经大概的了解了容器的概念,这一篇开始我们就具体来认识一下Docker容器吧,并且手把手带你在Linux与Windows上安装Docker。

一、Docker架构是什么样的?

Docker采用的是C/S架构,由客户端向服务器发送请求,服务器负责构建、运行和分发容器。客户端和服务器可以运行在同一台机器上,也可以分别部署在不同机器上。客户端通过socket或Rest API与远程的服务器通信。
在这里插入图片描述

1.Docker的核心组件

由上图我们其实就可以知道Docker的核心组件包括:

  • Docker 客户端: Client
  • Docker 服务器: Server
  • Docker 镜像: Image
  • 仓库:Registry
  • Docker容器: Container

2.Docker容器的Client和Server怎样运行的?

首先看看Client和Server是什么?

  • Docker客户端(Client):通常所指的Docker客户端就是我们使用的docker命令行。使用docker命令行,可以在主机上构建和运行容器。
  • Docker服务器(Server):Docker daemon是服务器的组件,是Docker的守护进程,它以Linux 后台服务的方式运行。Docker客户端通过命令行与Docker daemon通信, 完成Docker相关操作。

那它们是怎么运行的呢?

  1. Docker daemon运行在Docker主机上,它负责创建、运行、监控容器,构建、存储镜像。
  2. 默认情况下,Docker daemon只能响应本地主机的客户端请求。如果要允许远程客户端的访问请求,需要在配置文件中打开TCP监听。

二、Docker的核心要素

Docker三大核心要素:镜像(Image)、容器(Container)、仓库(Repository)。

1.Docker镜像

Docker镜像,可以看成是只读模板,我们通过它创建Docker容器。

镜像有三种生成方法:

  1. 从无到有开始创建新的镜像;
  2. 下载并使用别人创建好的现成镜像;
  3. 在现有的镜像上创建新的镜像;

这三种生成方式我们后面也会进行讲解的!

2.Docker容器

Docker容器就是Docker镜像的运行实例,用户可以通过Docker命令行启动、停止、移动和删除容器。

镜像与容器的关系类似于面向对象编程中的类与对象之间的关系。

在这里插入图片描述

3.Registry

Registry是存放Docker镜像的仓库,Registry分为私有和公有两种。

  • Docker Hub是默认的Registry,,由Docker公司维护。它上面有大量的镜像,用户可以自由的下载和使用。

  • 用户也可以创建自己的私有Registry。

我们在使用Registry时:

  1. 执行docker pull命令, 可以从Registry下载镜像。
  2. 执行docker run命令, 可以先下载非本地镜像, 然后启动容器。

具体操作后面也会展开讲解的!

二、Linux系统安装Docker

  1. 检查内核uname -r,返回的值大于3.10即可
    在这里插入图片描述
  2. 确保yum包更新到最新sudo yum update
    在这里插入图片描述

注:这里开始博主之前截的图丢失了,所以换了其他的截图,但是不影响操作

  1. 加载Device Mapper模块modprobe dm-mod
    在这里插入图片描述

  2. 验证Device Mapper安装/sys/calss/misc/device-mapper
    在这里插入图片描述

  3. 安装Docker-io yum -y install docker-io
    在这里插入图片描述
    在这里插入图片描述

  4. 启动服务器service docker start
    在这里插入图片描述

  5. 开机启动Dockersystemctl enable docker.service
    在这里插入图片描述

  6. 查看Docker的版本信息docker versiondocker -v
    在这里插入图片描述

  7. 显示hello docker! docker run centos echo hello docker!
    在这里插入图片描述

当你成功输出了hello docker!的时候就说明你安装成功了!

三、Windows系统安装Docker

点击蓝色字体可直接跳转对应链接

  1. 进入官网,选择Windows版下载。
    在这里插入图片描述

  2. 启用本机的“适用于Linux的Windows子系统”选项
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  3. 下载 Linux 内核更新包(x64计算机),下载完成后打开,点击下一步,等待他安装完成,完成后将重启电脑。

  4. 下载Ubuntu 18.04 LTS(其他版本也行),下载完成后启动新安装的Linux分发版,等待几分钟,然后为新的Linux分发版创建用户账号和密码。
    在这里插入图片描述

  5. 重启Ubuntu后,启动docker桌面版,出现如下界面,表示启动成功
    在这里插入图片描述

  6. 以管理员身份运行“命令提示符”,输入: wsl -l -v命令来查看当前Ubuntu的wsl版本,然后根据自己的版本通过wsl --set-version Ubuntu-18.04 2来将Ubuntu转换为wsl 2
    在这里插入图片描述
    在这里插入图片描述

  7. 将Ubuntu转为wsl 2之后,就可以在docker中设置将Ubuntu结合(如果没有成功配置wsl 2将不会有此选项)。
    在这里插入图片描述

  8. 配置docker的镜像加速器,进入网址 ,登录阿里(支付宝、淘宝)账号,将自己的加速器地址进行复制。
    在这里插入图片描述

  9. 将此加速器地址添加到docker中,点击应用即可
    在这里插入图片描述

  10. 使用Ubuntu运行第一个docker镜像“hello-world”,命令为docker run hello-world

看看本专栏文章有哪些吧!

本系列文章目录:

  • 『 云原生·云之生』总览云原生带你从-1到1
  • 『 云原生·分布式』云原生前置知识
  • 『 云原生·分布式』分布式基础
  • 『 云原生·微服务』Docker应用
  • 『 云原生·微服务』Nginx
  • 『 云原生·微服务』消息队列RabbitMQ

可以看出来本系列文章将会带你从-1到1的学习云原生的,一起加油吧!

总结

在初步学习Docker之后有没有感觉你的眼前一亮,还有这么好用的东西?

总而言之,Docker容器技术是一项伟大的技术,它为IT人员打开了一扇幸福的大门!

相关文章:

  • Web会话跟踪:Cookie与Session
  • 【大数据】Hadoop在呼唤Hive(附一键部署Hive脚本)
  • 8. SQL中Order by和Group by子句的使用简介
  • 27. 生成CSV文件
  • 【初学者入门C语言】之二维数组(七)
  • 深度学习 Day 14——利用卷神经网络实现运动鞋品牌识别
  • 索引的创建与设计原则(2)(适合创建索引情况 )
  • 写给Python社群的第2课:Python逻辑语句,天天要写的 if 和 while
  • 2022G3锅炉水处理考试练习题模拟考试平台操作
  • C++11:lambda表达式
  • [实践篇]13.6 QNX侧如何抓取日志?
  • Java中如何检测一个元素是否存在于HashSet对象中呢?
  • Cesium:OSGB倾斜摄影模型加载卡顿优化
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • 图解LeetCode——1694. 重新格式化电话号码(难度:简单)
  • [Vue CLI 3] 配置解析之 css.extract
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • CentOS从零开始部署Nodejs项目
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • node学习系列之简单文件上传
  • PAT A1017 优先队列
  • SQLServer插入数据
  • swift基础之_对象 实例方法 对象方法。
  • Vue全家桶实现一个Web App
  • windows-nginx-https-本地配置
  • 阿里研究院入选中国企业智库系统影响力榜
  • 笨办法学C 练习34:动态数组
  • 官方解决所有 npm 全局安装权限问题
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 聊聊redis的数据结构的应用
  • 浏览器缓存机制分析
  • 为视图添加丝滑的水波纹
  •  一套莫尔斯电报听写、翻译系统
  • k8s使用glusterfs实现动态持久化存储
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #pragma once与条件编译
  • #宝哥教你#查看jquery绑定的事件函数
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转)EOS中账户、钱包和密钥的关系
  • (转)为C# Windows服务添加安装程序
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .java 9 找不到符号_java找不到符号
  • .NET CLR基本术语
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .NET构架之我见