docker 是一个开源软件,用于开发应用、交付应用、运行应用。 docker允许用户将基础设施中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。
一、docker初识1.什么是dockerdocker 是一个开源的应用容器引擎,基于go 语言实现并遵从 apache2.0 协议开源。docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iphone 的 app),更重要的是容器性能开销极低。2.docker vs vm
docker与vm比较
传统的虚拟机模拟出一套硬件来运行操作系统,也就是在硬件层面实现虚拟化,通常启动速度比较忙,资源消耗比较大。docker容器化技术则是在操作系统层面实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件实现虚拟化。3.docker组成docker基本组成主要包括以下三部分内容:
镜像(image) —> 类模板容器(container)—> 对象仓库(repository)—> 镜像仓库docker image:镜像是只读的,镜像中包含有需要运行的文件。镜像用来创建container,一个镜像可以运行多个container;镜像可以通过commit命令、dockerfile等方式创建,也可以从docker hub/registry上下载。
docker container:容器是可写的,也是docker的运行组件,启动一个镜像就是一个容器,容器是一个隔离环境,多个容器之间不会相互影响,保证容器中的程序运行在一个相对安全的环境中。
docker repository: 存储镜像的仓库,用户通过它来共享和管理docker镜像,用户可以上传或者下载上面的镜像,官方地址为https://registry.hub.docker.com/,也可以搭建自己私有的docker registry。
4.docker优点应用架构上 ,就比如那一个订购系统来举例子,本来是一个基本的静态网页用来电话订购,现在需要网络订购了,那么我们就需要引入db,再然后为了提升性能,引入了类似redis、memcached、mq缓存等中间件,到项目后期,发现单机不能满足性能要求了,然后引入了nginx作为反向代理,总之,随着系统功能的日趋复杂,那么应用依赖就会逐渐复杂,不同组件的配置方法各不相同,运维人员进行应用配置可能会耗费大量时间。
应用部署上 ,dockerfile的存在使得开发人员仅仅需要修改其配置文件就可以轻松构建具有不同依赖的镜像。同时保障了从开发、构建、测试、生成的一整套流程。
集群角度上 ,随着流量的逐渐增大,这个时候就要引入集群了,服务器由原来的一台变成两台,那么相同的配置在另一台主机进行相同的配置时间开销比较大,因此可以通过镜像来一键打包部署即可。
关于docker优点,总结如下:
快速的应用部署和维护更便捷的升级和扩缩容更简单的系统运维更高效的计算资源利用支持多种操作系统,windows、mac和debian等5.docker架构关于官方文档中解释:docker architecture
docker引擎 (docker engine)是一个服务端-客户端结构的应用,主要有这些部分:docker守护进程、docker engine api、docker客户端。
docker守护进程 (docker daemons),也叫 dockerd ,是一个持久化的进程,用户管理容器。守护进程会监听docker engine api 的请求。docker engine api是用于与docker守护进程交互用的的api。它是一个restful api,因此它不仅可以被docker客户端调用,也可以被wget 和 curl等命令调用。docker客户端 ,也叫docker,是大部分用户与docker交互的主要方式。用户通过客户端将命令发送给守护进程。命令会遵循docker engine api6.docker生态docker生态中还有一个非常重要的容器管理工具–kubernetes,它是google开源的用于在集群环境中管理、维护、自动扩展容器,通过kubernetes可以很方便地在多个机器上管理和部署容器服务。现在已经得到ibm、microsoft、redhat等多个大公司的支持。
docker现在出现了一个特殊的模式——swarm模式——可以用来管理容器集群。docker swarm允许使用docker cli运行swarm命令,因而很容易初始化一组容器,并向组中添加或删除容器。除了docker swarm,还有几个其他的容器协调管理器:
kubernetes,一个容器集群管理器。可以在你自己的服务器上或是在云上运行。dc/os,一个特别的项目,提供了高级用户界面管理docker容器。nomad project,一个部署和管理应用的软件,运行在amazon ecs,digitalocean,azure container service或google云平台。二、docker安装1. 命令行安装这里测试环境是 centos linux 8版本,安装使用 yum命令安装。
yum -y install docker-ce docker-ce-cli #下载dockerdocker version #查看docker版本号docker images #存在的镜像
image-20220614152303600
tag:版本号(默认最新)repository: 镜像名字imaget id : 镜像全局唯一idcreated: 镜像创建时间size:镜像大小2. 设置加速仓库注册阿里云开发者账户,进入仓库镜像模块,获取仓库加速域名。
仓库(repository)、注册服务器(registry)、注册索引(index)有何关系?
首先,仓库是存放一组关联镜像的集合,比如同一个应用的不同版本的镜像,注册服务器是存放实际的镜像的地方,注册索引则负责维护用户的账号,权限,搜索,标签等管理。注册服务器利用注册索引来实现认证等管理。
3. 配置普通用户管理docker由于需要使用普通用户对docker进行管理,因此需要给普通用户配置docker权限,根据 官方文档来进行配置。具体命令行如下:
sudo groupadd docker #加入docker用户组 sudo usermod -ag docker $user #将用户添加到用户组 newgrp docker #刷新权限 id $user #查看用户情况 docker run hello-world #运行hello world测试
image-20220615190215061
三、docker基本使用获取镜像 docker pull repository:tag运行镜像 docker run image_id删除镜像 docker rmi image_id暂停容器 docker stop container_iddocker run -i 镜像id #交互模式启动容器## 常用参数 -i, --interactive keep stdin open even if not attached --ip string ipv4 address (e.g., 172.30.100.104) --ip6 string ipv6 address (e.g., 2001:db8::33) --ipc string ipc mode to use --isolation string container isolation technology --kernel-memory bytes kernel memory limit-p : 宿主机端口 :docker运行端口-p : 随机宿主机端口-t : 命令终端
image-20220614154748840
docker虚悬镜像:仓库名、标签都为的镜像。建议删除
前台启动和后台启动docker run -d #守护式启动docker run -i #前台式启动#重新进入命令交互界面docker exec -it 容器id bashshelldocker attach 容器id区别:
accatch 不会重新创建一个新的进程,使用exec会导致终端停止exec 会重新创建一个新的进程,不会导致终端停止,此种方法也是工作常用的
核电共振解决了长达半个多世纪难题的新的量子突破
新气象 联合国中的区块链大会即将召开
使用51单片机实现字符型液晶模块显示的资料说明
别再只顾得抢KAWS 华为畅享10 Plus年轻实力派新作了解一下
主电源用的超级电容PC5
一文带你读懂Docker容器 1
小米官网微博曝光MIUI 9全新功能
航空插头设计选材的要求介绍
PLC在焙烧炉燃烧站中的应用
全面屏和普通屏哪个好
电缆额定电压与电缆芯数之间的关系
安华高光电耦合器ACPL-K4xT
电气网络控制
商业智能到底有没有用?_光点科技
AI大模型在端侧加速落地已成必然趋势,芯片厂商提前布局!
美信推出一款可用于-40℃至+85℃温度范围的线性功率检测器
智芯传感智能MEMS传感器助力消费电子应用普及
oppor11什么时候上市?oppor11、opppor11 plus转战双摄,拍照功能现大招,配置参数、发布会嘉宾曝光!
探究IntelliJ IDEA 中JAVA代码的任务标记
电流互感器校验方法