docker的简介与环境搭建

本文介绍了Docker的基础知识,包括Docker的三要素——镜像、容器和镜像仓库,强调了其统一基础设施环境、打包和部署方式的意义。讨论了Docker的使用场景,如简化部署、跨平台迁移、微服务和PAAS产品。此外,文章对比了Docker容器与VM的区别,并详细阐述了Docker在CentOS上的安装和配置步骤,包括网络优化和配置文件建议。最后,文中提出了几个Docker的面试问题,探讨了其相较于虚拟化的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

背景

一、docker是什么

1、docker三要素

2、使用docker有什么意义

二、Docker的使用场景

三、Docker引擎(Docker Engine)

四、docker容器与vm的区别

五、docker的安装部署:

 小结与面试题


背景

以linux而言,linux操作系统会有一个主进程pid=1 派生出其他进程来控制不同服务

例如: pid=2 --> python pid=3-->java pid4-->php ,三个服务可能会相互影响使用者期望将这三个不同的服务,跑在不同的运行时环境中实现相互不影响,同时不会增加服务器成本延伸出—》能否将这三种服务分别封装起来——》KVw虚拟化技术,实现了一个操作系统模拟多个操作系统/不同的运行时环境随着技术发展---》虚拟化技术开销较大(例如:只要运行一个py脚本,想要使用虚拟化方式实现,还需要安装一个操作系统,并不方便/合理)

——》延伸出容器技术

虚拟化层的抽象层(用户层)剥离,使用docker engine来替代(来宾操作系统去除),只要通过引擎就可以直接连接到宿主机操作系统中,极大减小了开销

一、docker是什么

Docker是一个用于开发,交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。是一个开源的应用容器引擎,让开发者可以打包大门的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或者Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口

沙箱(Sandbox):在计算机安全领域,沙箱是一种程序的隔离运行机制Docker在2013年一炮而红,直到现在,已经成为容器技术的代名词。Docker 从一开始就以提供标准化的运行时环境为目标,真正做到"build once, run anywhere",可以将同一个构建版本用于开发、测试、预发布、生产等任何环境,并且做到了与底层操作系统的解耦。在此基础上还进一步发展出了caas(容器即服务)技术。

企业中,开发——》运维整体流程

①首先由开发进行代码研发,研发好之后进行编译、打包

Ps:打包:一般会使用maven工具打war工具打war或者jar包

②打完包之后,放置对应的运行时环境中,进行试运行

Ps:这里的运行时环境指:例如tomcat(Java环境)PHP(php环境)等

③中间会加上一些测试过程,测试代码的有效性、可用性和执行性

④以上测试完成,运维会将这个软件包拉过来,运行在实际生产的运行时环境中

问题:在以上的第②点中,不同开发语言的运行时环境混淆在一起运行会有很大的隐患,以及不便

传统中所谓的运行时环境,例如tomcat(Java环境)PHP(PHP环境)等

容器中所谓的运行时环境,指的试“容器”内部

在此之前,容器——》是一个运行时环境,构成容器的组件是image镜像

1、docker三要素

Docker images :镜像

Docker container:容器

Docker resgistry:镜像仓库

2、使用docker有什么意义

docker引擎统一了基础设施环境-docker容器环境(引擎)

docker引擎统一了程序打包(装箱)方式-docker镜像

docker 引擎统一了程序部署(运行)方式-docker容器

镜像————》封装的某一个时刻的服务/应用状态

容器————》应用跑起来的状态(正常提供服务的状态-运行时)

二、Docker的使用场景

打包应用程序简单部署

可以脱离底层硬件任意迁移(实现了应用的隔离,将应用拆分并进行解耦),例如:服务器从腾讯云迁移到阿里云

持续集成和持续交付(CI/CD):开发到测试发布

部署微服务

提供PAAS 产品(平台即服务){OpenStack的云主机类似于阿里云的ECs,属于IAAS、Docker (K8S)属于PAAS}

IAAS:基础设施即服务

sAAs:应用即服务

PAAS:平台即服务

三、Docker引擎(Docker Engine)

Docker Engine是具有以下主要组件的客户端-服务器应用程序(C/s端):

服务器是一种长期运行的程序,称为守护程序进程( dockerd命令)。

REST API,它指定程序可以用来与守护程序进行通信并指示其操作的接口。

命令行界面(CLI)客户端(docker命令)。

四、docker容器与vm的区别

封装程度

只打包项目代码和依赖关系,共享宿主机内核

完整的操作系统,与宿主机隔离

五、docker的安装部署:

docker初期版本是1.13(同一版本,开源)

——》分类型 1.15 - 1.17 过程中分成两种。

①开源社区 docker-ce ②企业版 docker-ee

1、安装依赖包

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

2、设置阿里云镜像源

cd /etc/yum.repos.d/

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、安装 Docker-CE 社区版并设置为开机自动启动

 yum install -y docker-ce

systemctl start docker.service

systemctl enable docker.service

4、查看 docker 版本信息

docker version

二、设置镜像加速

1、申请加速器地址

这里我们使用阿里云的镜像,加速镜像下载速度

注册阿里云账号并登录

帮助地址:https://help.aliyun.com/

2、搜索容器镜像服务

三、网络优化

vim /etc/sysctl.conf

net.ipv4.ip_forward=1  #开启路由转发

sysctl -p   #刷新一下

systemctl restart network

systemctl restart docker  #重启网络和docker

Ps:为什么要开启路由转发

宿主机如果想要访问出去,则需要开启路由转发功能

四、docker-server端配置文件建议配置

#在daemon. json文件中配置

{

  "graph":"/data/docker",                #数据目录,数据存储位置

  "storage-driver":"overlay2",        #存储引擎,docker1.18以上版本默认使用overlay2存储引擎。早期的适合存储引擎使用的aufs

  "insecure-registries":["registry.access.redhat.com","quary.io"],        #私有仓库

#registry-mirrors 以下添加

  "bip":"172.184.70.1/24",                #docker网络

  "exec-opts":["native.cgroupdriver-systemd"],        #启动时的额外参数,(是一种挂在驱动,k8s使用)

  "live-restore":true        #当docker容器引擎挂掉的时候,使用docker跑起来的容器还能继续运行

}

 小结与面试题

Dcoker是基于容器技术的轻量级虚拟化解决方案

docker是t t t容器技术,把linux的cgroup、namespaces等容器底层技术进行完美的封装、并抽象为用户提供创建和管理容器的便捷界面(命令行cli、api等)c/s

面试题1:cgroup和namespaces 两者构成了docker底层原理

cgroup资源控制与namespaces结合控制管理了6个名称空间资源(以下)

①mount文件系统,挂载点—》》一个文件系统内,不能重复挂载一个指定目录,例如:/mnt

②user 操作进程的用户和用户组

③pid  进程编号

④uts  主机名和主机域

⑤ipc  信号量、消息队列,共享内存(理解,不同的应用调用内存资源的时候应该使用不同的内存空间)

⑥net  网络设备、网络协议栈、端口等

cgroup:资源管理技术(Linux——》cgroup) 3.8版本

Linux 内核版本3.8+

面试题2:docker有哪些优势?

PS:(三个统一①封装的模式image ②运行时环境container ③统一的平台engine)

面试题3:docker 和虚拟化比有什么优势

封装程度

只打包项目代码和依赖关系,共享宿主机内核

完整的操作系统,与宿主机隔离

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值