docker简介

1.什么是docker**?

Docker属于Linux容器的一种封装,提供简单易用的容器使用接口,它也是目前最流行的Linux容器解决方案。Docker 将软件代码和其依赖,全打包在一个文件中。运行单个文件,就会生成虚拟容器。在这个虚拟容器中,不管本地的操作系统是如何的不同,此容器都能照常运行。

简而言之,Docker的接口非常简单,可以帮助用户更好地创建和使用容器,让相同的代码在不同的环境上正常运行。

在这里插入图片描述


在这里插入图片描述


2. docker容器 vs VM

Docker容器和传统VM技术,在技术实现上有所不同。下图显示的是VM与Docker容器的逻辑组成:

VM:使用Hypervisor提供虚拟机的运行平台,管理每个VM中操作系统的运行。每个VM都要有自己的操作系统、应用程序和必要的依赖文件等。
Docker容器:使用Docker引擎进行调度和隔离,提高了资源利用率,在相同硬件能力下可以运行更多的容器实例;每个容器拥有自己的隔离化用户空间。

在这里插入图片描述

Server:相当于云服务器
Host OS:为操作系统
Docker Engine:可以认为我们在这个操作系统上安装了一个docker的软件
App A:在Docker组件中运行App A
App B:在Docker组件中运行App B 

在这里插入图片描述


所以说docker完全没有操作系统的概念,用的还是宿主机的操作系统,但是它做出了隔离,也实现了虚拟化。


  • 传统虚拟机与容器对比

在这里插入图片描述


3.docker容器是如何工作的?

Docker的三大组成要素:

镜像: Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数。 镜像不包含任何动态数据,其内容在构建之后也不会被改变。镜像可以用来创建Docker容器,用户可以使用设备上已有的镜像来安装多个相同的Docker容器。

容器: 镜像创建的运行实例,Docker利用容器来运行应用。每个容器都是相互隔离的、保证安全的平台。我们可以把容器看做是一个轻量级的Linux运行环境。

镜像仓库: 集中存放镜像文件的地方。用户创建完镜像后,可以将其上传到公共仓库或者私有仓库,需要在另一台主机上使用该镜像时,只需要从仓库上下载即可。
Docker容器的运行逻辑如下图所示,Docker使用客户端/服务器 (C/S) 架构模式,Docker守护进程(Docker daemon)作为Server端接收Docker客户端的请求,并负责创建、运行和分发Docker容器。Docker守护进程一般在Docker主机后台运行,用户使用Docker客户端直接跟Docker守护进程进行信息交互。

在这里插入图片描述


4.docker运行流程

其中:

Docker客户端: 用于和Docker守护进程(Docker Daemon)建立通信的客户端。Docker客户端只需要向Docker服务器或者守护进程发出请求(Docker构建、Docker拉取和Docker启动等指令),服务器或者守护进程将完成所有工作并返回结果。
如橙色流程所示,执行Docker构建指令会根据Docker文件构建一个镜像存放于本地Docker主机。
如蓝色流程所示,执行Docker拉取指令会从云端镜像仓库拉取镜像至本地Docker主机或将本地镜像推送至远端镜像仓库。
如黑色流程所示,执行Docker启动指令会将镜像安装至容器并启动容器。

Docker主机: 一个物理或者虚拟的机器用于执行 Docker守护进程和容器。
Docker守护进程: 接收并处理Docker客户端发送的请求,监测Docker API的请求和管理Docker对象,比如镜像、容器、网络和数据卷。


5.docker服务端与客户端

Docker是一个客户端-服务端(C/S)架构程序,Docker客户端只需要向Docker服务器或者守护进程发送请求即可,服务器或者守护进程将完成所有工作并返回结果,Docker提供了一个命令行工具以及一正太Restful Api,我们可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地Docker客户端连接运行在另外一台宿主机的Docker的守护进程。

使用了RESTful API的目的就是为了统一规范,无需自己在生成一套体系。现在几乎所有的软件都是通过RESTful API来传输数据。

在这里插入图片描述


6.docker非常重要的概念:镜像(image)与容器(container)

1. 有了镜像----> 镜像运行起来是容器(真正的执行单位)
镜像		: 面向对象的类    
容器		: 对象
    
2. 镜像是从哪里来的?    
-镜像就是一堆文件
-从远程仓库获取(拉取)

在这里插入图片描述


7.docker容器的安装

  • 创建docker容器的yum安装源
 vim /etc/yum.repos.d/docker-ce.repo
 编辑:
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable
gpgcheck=0
vim /etc/yum.repos.d/CentOS-Base.repo
编辑:
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/7/extras/$basearch/
gpgcheck=0
  • 安装并开启docker
yum install -y docker-ce
systemctl enable --now docker

在这里插入图片描述

  • 配置docker内核选项
vim /etc/sysctl.d/docker.conf
编辑:
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
sysctl --system        刷新内核选项内容

在这里插入图片描述

  • 禁掉swap
swapoff -a
vim /etc/fstab

在这里插入图片描述

docker search yakexi007           查询镜像
docker pull yakexi007/game2048    拉取镜像
docker run -d --name demo -p 80:80 yakexi007/game2048    运行容器
docker                            查看运行容器
docker inspect  demo              查看容器详情

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

  • 访问拉取的镜像网站

    在这里插入图片描述


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340