知识总结(16)docker面试常问点(什么是docker、docker优缺点、docker与虚拟机的区别、docker如何实现隔离)

Docker是一种轻量级容器技术,它通过沙箱机制实现进程隔离,提供快速启动和资源占用少的优势。Docker与虚拟机的主要区别在于,虚拟机模拟完整操作系统,而Docker是在操作系统层面上实现隔离。Docker的镜像构建包括commit和Dockerfile两种方式,通过Dockerfile可以更方便地定制镜像。在网络方面,Docker支持bridge、host和none三种原生网络模式,以及自定义网络。Docker通过namespace和cgroups技术实现资源隔离和限制。
摘要由CSDN通过智能技术生成

目录

什么是docker?

docker的应用环境?

docker的原理与组成

docker与虚拟机的区别?

docker镜像构建方法

1.commit

2.Dockerfile

docker镜像优化方法

docker三种原生网络

(1) bridge模式

(2) host 模式

(3) none模式

docker自定义网络

bridge

docker容器间的通信

1.使用名称

2.container模式

4.docker容器访问外部网络

5.外部网络访问容器

docker跨主机的容器网络

macvlan

docker是如何实现隔离的?

namespace



什么是docker?

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。docker内核共享宿主机。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),接下来的实验我们使用社区版。

docker的应用环境?

  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

docker的原理与组成

首先,我们需要知道什么是Linux容器?

Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离,就像是给正常的进程外面套了一个保护层,对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。它相比虚拟机来说,因为是进程级别的,所以有很多优势:启动快、资源占用少、体积小; 容器与宿主机是共享系统内核的。

那么Docker和Linux容器是什么关系?

Docker属于Linux容器一种封装,提供简单易用的容器使用接口;它将应用程序与该程序的依赖打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机运行一样;总体来说,Docker的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器,另外,它还可以进行版本管理、复制、分享、修改就像管理普通的代码一样;

一个完整的Docker有以下几个部分组成:

dockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器

在这里插入图片描述

docker与虚拟机的区别?

虚拟机也是一种虚拟化技术,它与Docker最大的区别在于它是通过模拟硬件,并在硬件上安装操作系统来实现。

Docker 是一个能把开发的应用程序自动部署到容器的开源引擎

虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作

在这里插入图片描述

(1) 虚拟机是在一台物理机上,利用虚拟化技术,虚拟出来多个操作系统,每个操作系统之间是隔离的。
docker是开源的应用容器引擎,依然需要先在电脑上安装操作系统,然后安装Docker容器管理器。

(2) 虚拟机是在硬件级别进行虚拟化,而docker是在操作系统的层面虚拟化

(3) 虚拟机是通过模拟硬件搭建操作系统,而docker则是复用操作系统

(4) 虚拟机实现了操作系统之间的隔离,docker只是进程之间的隔离,所以虚拟机的隔离级别更高,安全性更强

(5) docker的运行速度更快

(6) docker的文件要小的多,虚拟机要大

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

在这里插入图片描述

docker镜像构建方法

当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

1.commit:

从已经创建的容器中更新镜像,并且提交这个镜像

在这里插入图片描述

2.Dockerfile

使用 Dockerfile 指令来创建一个新的镜像

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

FROM

FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。

RUN

RUN:用于执行后面跟着的命令行命令。有以下俩种格式:

shell 格式:

RUN <命令行命令>
# <命令行命令> 等同于,在终端操作的 shell 命令。

exec 格式:

RUN ["可执行文件", "参数1", "参数2"]
# 例如:
# RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline

COPY

复制指令,从上下文目录(即Dockerfile所在的目录)中复制文件或者目录到容器里指定路径。

格式:

COPY [--chown=<user>:<group>] <源路径1>...  <目标路径>
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值