关键词:
面试题
传统虚拟机和Docker的区别?
虚拟机
虚拟机其实就是文件,不需要就删掉,操作系统和硬件之间逻辑不变
虚拟机技术基于安装在主操作系统上的虚拟机管理软件,创建虚拟机还能虚拟出各种硬件,从操作系统
- 资源占用多(内核,硬件,软件都模拟了)
- 冗余步骤多(打开虚拟机步骤多)
- 启动太慢了
Docker容器
不是模拟完整的操作系统
轻量级,启动速度快,占用体积小
容器相互之间是隔离的,每个容器有自己的文件系统,容器之间的进程不会相互影响,能区分计算资源
对比
传统虚拟机是虚拟出硬件之后在上面运行操作系统,再在该系统上运行所需应用
Docker容器内的应用进程直接运行于宿主的内核,没有自己的内核也没有进行硬件虚拟,所以轻便很多
为什么Docker比虚拟机快?
-
docker不需要虚拟机虚拟硬件,直接使用物理机的硬件资源,因此在CPU,内存利用率上docker有明显优势
-
docker利用的是宿主机的内核,不需要加载操作系统内核,进而避免费时间的操作,忽略了创建虚拟机的过程
Docker虚悬镜像是什么?
仓库名标签名都是的镜像就是虚悬镜像
无用,删掉
三件套
- 镜像
- 容器
- 仓库
仓库是存放镜像的地方
容器是镜像的实例
仓库分为公开仓库和私有仓库(国内一般用阿里云)
Docker是C/S结构,Docker守护进程运行在主机上,通过Socket链接从客户端访问
https://docs.docker.com/reference/
需要安装gcc和g++
报错
登录阿里云,注册并查看镜像容器服务
获得加速器地址,分为个人和企业
作用:可以加快镜像的下载速度
操作:阿里云官网有
docker 常用命令
帮助启动类命令
启动docker
systemctl start docker
停止docker
systemctl stop docker
重启docker
systemctl restart docker
查看docker状态
systemctl status docker
开机启动
systemctl enable docker
查看docker概要
docker info
查看docker总体帮助文档
docker --help
查看docker命令帮助文档
docker 具体命令 --help
镜像命令
查看镜像
docker images
REPOSITORY:镜像仓库源
TAG:镜像标签,类似版本号
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:经i想大小
ops
-a
列出本地所有镜像-q
只显示镜像ID
查找镜像
docker search 镜像名称
ops:
--limit
只列出N个镜像,默认25个
拉取镜像
docker pull 镜像名称
docker pull 镜像名称:TAG
不写TAG默认最新版,等价于docker pull 镜像名称:latest
查看镜像/容器/数据卷所占用的空间
docker system df
删除镜像
docker rmi 镜像ID
docker容器命令
docker执行
docker run
ops:
-d
后台运行容器并返回容器ID, 即启动守护式容器(后台运行)-i
交互模式运行容器,通常与-t
一起使用-t
为容器重新分配一个伪终端,通常与-i
一起使用-P
随机端口映射(大写P)-p
指定端口映射(小写p)
docker ps
-a
列出所有正在运行的容器和历史上运行过的容器
-l
显示最近创建的容器
-n
显示最近n个创建的容器
-q
静默模式,只显示容器编号
退出容器
两种退出方式
- exit退出,容器停止
- ctrl+p+q退出,容器不停止
启动已经停止运行的容器
docker start 容器ID或容器名
重启容器
docker restart 容器ID或者容器名
停止容器
docker stop 容器ID或者容器名
强制停止容器
docker kill 容器ID或容器名
删除已经停止的容器
docker rm 容器ID
如果是docker rmi
那删除的是镜像,不然就是容器
没有停止的强制删除
docker rm -f 容器ID
后台运行
docker run -d 容器名
docker容器后台运行必须要有一个前台进程(一直挂起的命令),如果没有会自动退出(docker程序会认为你没事做了就kill容器)
查看容器日志
docker logs 容器ID
查看容器内运行的进程
docker top 容器ID
查看容器内部细节
docker inspect 容器ID
正在运行的容器以命令行形式进行交互
两种方式:
-
docker exec -it 容器ID hashShell
-
docker attach 容器ID
区别:
- attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出会导致容器停止
- exec 是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器停止
容器内拷贝文件到主机
docker cp 容器ID:容器内路径 目的主机路径
导入导出容器
- export 导出容器的内容流作为一个tar归档文件(
docker export 容器ID 文件名.tar
) - import 从tar包中的内容创建一个新的文件系统再导入为镜像(
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
)
到时候镜像列表显示的是镜像用户名/镜像名
Docker底层原理
镜像分层
UnionFS
UnionFS(联合文件系统)是一种分层,轻量级,高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下.Union文件是docker镜像的基础,镜像可以通过分层来进行继承,基于基础镜像可以制作各种具体的应用镜像
特性:一次同时加载多个文件系统,但从外面看起来,智能看到一个文件系统,联合加载会把各层文件系统叠加起来
docker加载原理
容器可以看做是一个简易版的linux环境
docker的镜像实际是由一层一层的UnionFS
文件系统组成,
docker镜像最底层是引导文件系统bootfs
,主要包括bootloader
和kernel
,bootloader
主要是引导加载kernel
,linux启动时会加载bootfs
,当boot加载完成之后整个内核就都在内存中了,此时bootfs转交给内核,系统也会卸载bootfs,然后加载rootfs
rootfs
在bootfs
之上,包含的就是典型的linux系统中的/dev,/proc,/bin,/etc等标准目录和文件
对于不同发行版bootfs基本一致,所以不同发行版可以公用bootfs
镜像分层的最大好处是共享资源,方便复制迁移,就是为了复用
当容器启动时,一个新的可写层被加载到镜像的顶部
这一层通常被称作"容器层",“容器层"之下的都叫"镜像层”
docker镜像层是只读的,容器层是可写的
docker学习笔记——镜像制作(dockerfile)(代码片段)
文章目录Docker容器镜像1.容器技术2.容器镜像介绍3.制作基础镜像4.应用镜像制作使用commit提交镜像5.使用Dockerfile创建应用镜像1)Dockerfile关键字2)Dockerfile应用案例6.容器镜像在dockerhost存储位置1)写时复制与用时分配2)Overlay及Overlay27.d... 查看详情
docker学习笔记总结(代码片段)
文章目录1.docker搭建三主三从的redis集群2.redis集群之主从容错切换迁移(基于redis集群)3.redis集群之主从扩容(基于redis集群)4.redis集群之主从缩容(基于redis集群)5.DockerFile介绍6.DockerFile构建过程解析7.DockerFile保留字简介8.DockerFile保留... 查看详情
docker学习笔记总结(代码片段)
文章目录1.docker搭建三主三从的redis集群2.redis集群之主从容错切换迁移(基于redis集群)3.redis集群之主从扩容(基于redis集群)4.redis集群之主从缩容(基于redis集群)5.DockerFile介绍6.DockerFile构建过程解析7.DockerFile保留字简介8.DockerFile保留... 查看详情
docker学习笔记1(代码片段)
面试题传统虚拟机和Docker的区别?虚拟机虚拟机其实就是文件,不需要就删掉,操作系统和硬件之间逻辑不变虚拟机技术基于安装在主操作系统上的虚拟机管理软件,创建虚拟机还能虚拟出各种硬件,从操作系统资源占用多(内核,硬件,... 查看详情
docker学习笔记(代码片段)
目录一、 原理1、没使用Docker之前,所有应用共享Lib文件和内核2、使用之后,每个容器相当于单独的Linux操作系统,仅仅共享内核,也就是可以配置多个Tomcat应用3、原理讲解二、名词三、镜像查询原理图四、基本... 查看详情
docker学习笔记——docker安装启动(代码片段)
...器虚拟化的优缺点2.容器所涉及内核技术NameSpceCGroups二、Docker安装和基本使用1.获取yum源2.安装docker-ce3.启动docker一、虚拟化分类1.主机虚拟化和容器虚拟化的优缺点主机虚拟化应用程序运行环境强隔离虚拟机操作系统与底层操作... 查看详情
docker学习笔记——docker安装启动(代码片段)
...器虚拟化的优缺点2.容器所涉及内核技术NameSpceCGroups二、Docker安装和基本使用1.获取yum源2.安装docker-ce3.启动docker一、虚拟化分类1.主机虚拟化和容器虚拟化的优缺点主机虚拟化应用程序运行环境强隔离虚拟机操作系统与底层操作... 查看详情
docker学习笔记总结(代码片段)
文章目录1.dockernetwork简介2.dockernetwork网络模式3.docker底层容器ip和容器映射变化4.dockernetwork4.1bridge模式4.2host模式4.3none模式4.4container模式4.5自定义网络模式5.docker-compose容器编排简介6.compose的下载安装7.compose的几个核心概念8.compose... 查看详情
docker学习笔记(代码片段)
Docker1.安装Docker#1.yum包更新到最新yumupdate-y#2.安装需要的软件包,yum-util提供yun-config-manager功能,另外两个是devicemapper驱动依赖的yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2#3.设置yum源yum-config-manager- 查看详情
docker学习笔记总结(代码片段)
文章目录1.dockernetwork简介2.dockernetwork网络模式3.docker底层容器ip和容器映射变化4.dockernetwork4.1bridge模式4.2host模式4.3none模式4.4container模式4.5自定义网络模式5.docker-compose容器编排简介6.compose的下载安装7.compose的几个核心概念8.compose... 查看详情
docker基础学习笔记(代码片段)
....通过命令使用数据卷查看数据卷匿名挂载具名挂载3.通过Dockerfile使用数据卷数据卷容器二、DockerFile1.什么是dockerfile?2.DockerFile构建过程3.DockerFile的指令4.实战测试三、综合实战:制作Tomcat镜像1.准备压缩包2.编写Dockerfile... 查看详情
docker学习笔记——docker管理容器(代码片段)
文章目录Docker管理容器1.容器&镜像&仓库&daemon&client之间的关系2.启动容器3.dockerdaemon管理4.docker命令行5.docker命令行实现容器管理搜索镜像(dockerhub)获取镜像(pull)打包传输镜像启动容器解决docker中的CtenOS8镜像无法使用yum... 查看详情
docker学习笔记——docker管理容器(代码片段)
文章目录Docker管理容器1.容器&镜像&仓库&daemon&client之间的关系2.启动容器3.dockerdaemon管理4.docker命令行5.docker命令行实现容器管理搜索镜像(dockerhub)获取镜像(pull)打包传输镜像启动容器解决docker中的CtenOS8镜像无法使用yum... 查看详情
docker学习笔记——镜像仓库制作(公有+私有+harbor)(代码片段)
...官方仓库1.官方镜像仓库1)web页面登录2)Linux命令行登录2.dockerhup镜像上传、下载1)镜像上传2)镜像下载3.镜像加速器1)阿里云加速器二、docker本地容器镜像仓库1.使用registry容器镜像实现本地非安全镜像仓库1)下载registry容器镜像2)创... 查看详情
docker学习笔记——镜像仓库制作(公有+私有+harbor)(代码片段)
...官方仓库1.官方镜像仓库1)web页面登录2)Linux命令行登录2.dockerhup镜像上传、下载1)镜像上传2)镜像下载3.镜像加速器1)阿里云加速器二、docker本地容器镜像仓库1.使用registry容器镜像实现本地非安全镜像仓库1)下载registry容器镜像2)创... 查看详情
fabric学习笔记10(代码片段)
fabric学习笔记1020201303张奕博2023.1.22测试实践1.启动网络命令:cdfabric-samples/chaincode-docker-devmode/docker-compose-fdocker-compose-simple.yamlup-d2.构建并启动链码(1)cd../chaincodemkdirhello&&cdhellovimhello.go(2) 查看详情
docker学习笔记.初识docker(代码片段)
Docker一,惊鸿一瞥二,Docker入门1,运行容器2,简单使用3,守护式容器4,在容器内部运行进程5,自动重启容器和删除容器6,深入容器三,使用Docker镜像和仓库1,基本镜像操作2,用Docker... 查看详情
docker学习笔记(代码片段)
Docker一、Docker概述1.1、Docker为什么出现?一款产品:开发–上线两套环境!应用环境,应用配置!开发—运维。问题:我在我的电脑上可以允许!版本更新,导致服务不可用!对于运维来说考验... 查看详情