11 2020 档案

摘要:####摘要 为了实现将要共享的数据放在volume container中实现在不同主机间的数据共享,我们使用dockerfile构建容器时报错标题中所示 ####解决步骤 1、报错如下图: 2、报错的大概意思是不能在已存在的文件上构建卷,由上图可知htdocs是一个文件,因此将该文件换成目录,内容 阅读全文
posted @ 2020-11-25 08:59 Richardo-M-Lu 阅读(1750) 评论(1) 推荐(0)
摘要:1、block-io的限制范围? Block IO 是另一种可以限制容器使用的资源。Block IO 指的是磁盘的读写,docker 可通过设置权重、限制 bps 和 iops 的方式控制容器读写磁盘的带宽 注:目前 Block IO 限额只对 direct IO(不使用文件缓存)有效。 2、如何进 阅读全文
posted @ 2020-11-20 11:34 Richardo-M-Lu 阅读(424) 评论(0) 推荐(0)
摘要:1、容器如何对CPU进行限制? 默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制。 Docker 可以通过 -c 或 --cpu-shares 设置容器使用 CPU 的权重。如果不指定,默认值为 1024。 与内存限额不同,通过 -c 设置的 cpu share 并不是 CPU 阅读全文
posted @ 2020-11-20 11:06 Richardo-M-Lu 阅读(953) 评论(0) 推荐(0)
摘要:1、为什么要限制内存? 一个 docker host 上会运行若干容器,每个容器都需要 CPU、内存和 IO 资源。对于 KVM,VMware 等虚拟化技术,用户可以控制分配多少 CPU、内存资源给每个虚拟机。对于容器,Docker 也提供了类似的机制避免某个容器因占用太多资源而影响其他容器乃至整个 阅读全文
posted @ 2020-11-20 10:49 Richardo-M-Lu 阅读(1517) 评论(0) 推荐(0)
摘要:1、docker容器按用途来怎么进行分类? a、服务类容器以 daemon 的形式运行,对外提供服务。比如 web server,数据库等。通过 -d 以后台方式启动这类容器是非常合适的。如果要排查问题,可以通过 exec -it 进入容器。 b、工具类容器通常给能我们提供一个临时的工作环境,通常以 阅读全文
posted @ 2020-11-20 10:24 Richardo-M-Lu 阅读(555) 评论(0) 推荐(0)
摘要:1、我们为什么要进入到容器中? 我们经常需要进到容器里去做一些工作,比如查看日志、调试、启动其他进程等 1、进入容器中的方法是什么? a、docker attach container_id ps:可通过 Ctrl+p 然后 Ctrl+q 组合键退出 attach 终端。 b、docker exec 阅读全文
posted @ 2020-11-20 09:06 Richardo-M-Lu 阅读(1452) 评论(0) 推荐(0)
摘要:1、如何运行容器和指定容器启动时执行的命令? docker run 是启动容器的方法,可用三种方式指定容器启动时执行的命令: 1、CMD 指令。 2、ENDPOINT 指令。 3、在 docker run 命令行中指定。 2、如何让容器长期运行? 容器的生命周期依赖于启动时执行的命令,只要该命令不结 阅读全文
posted @ 2020-11-16 17:10 Richardo-M-Lu 阅读(4879) 评论(0) 推荐(0)
摘要:1、如何使用docker-hub来pull和push镜像? root@richardo-docker01:~# docker login -u qwx619766 Password: WARNING! Your password will be stored unencrypted in /root 阅读全文
posted @ 2020-11-16 16:35 Richardo-M-Lu 阅读(210) 评论(0) 推荐(0)
摘要:1、如何在多个Docker Host上使用镜像? 这里有几种可用的方法: 1、用相同的 Dockerfile 在其他 host 构建镜像。 2、将镜像上传到公共 Registry(比如 Docker Hub),Host 直接下载使用。 3、搭建私有的 Registry 供本地 Host 使用。 2、 阅读全文
posted @ 2020-11-16 11:33 Richardo-M-Lu 阅读(1530) 评论(0) 推荐(0)
摘要:1、整体上三个命令的区别是啥? 1、RUN 执行命令并创建新的镜像层,RUN 经常用于安装软件包。 2、CMD 设置容器启动后默认执行的命令及其参数,但 CMD 能够被 docker run 后面跟的命令行参数替换。 3、ENTRYPOINT 配置容器启动时运行的命令。 2、shell和exec格式 阅读全文
posted @ 2020-11-16 10:52 Richardo-M-Lu 阅读(146) 评论(0) 推荐(0)
摘要:1、dockerfile的常用指令有哪些,作用是怎样的? FROM 指定 base 镜像。 MAINTAINER 设置镜像的作者,可以是任意字符串。 COPY 将文件从 build context 复制到镜像。 COPY 支持两种形式: COPY src dest COPY ["src", "des 阅读全文
posted @ 2020-11-16 10:21 Richardo-M-Lu 阅读(112) 评论(0) 推荐(0)
摘要:1、dockerfile构建镜像的过程是怎样的? 1、从 base 镜像运行一个容器。 2、执行一条指令,对容器做修改。 3、执行类似 docker commit 的操作,生成一个新的镜像层。 4、Docker 再基于刚刚提交的镜像运行一个新容器。 5、重复 2-4 步,直到 Dockerfile 阅读全文
posted @ 2020-11-16 09:51 Richardo-M-Lu 阅读(871) 评论(0) 推荐(0)
摘要:1、docker镜像的缓存特性是怎样的?如何说明? Docker 会缓存已有镜像的镜像层,构建新镜像时,如果某镜像层已经存在,就直接使用,无需重新创建。 root@richardo-docker01:~# docker images REPOSITORY TAG IMAGE ID CREATED S 阅读全文
posted @ 2020-11-16 09:33 Richardo-M-Lu 阅读(944) 评论(0) 推荐(0)
摘要:1、什么情况下需要自己构建镜像? a、找不到现成的镜像,比如自己开发的应用程序。 b、需要在镜像中加入特定的功能,比如官方镜像几乎都不提供 ssh。 2、docker中构建镜像的方法? a、docker commit 命令 b、Dockerfile 构建文件 3、docker commit构建镜像的 阅读全文
posted @ 2020-11-13 17:00 Richardo-M-Lu 阅读(352) 评论(0) 推荐(0)
摘要:1、常用的大部分镜像是怎么创建的? Docker 支持通过扩展现有镜像,创建新的镜像。 Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的 新镜像是从 base 镜像一层一层叠加生成的。每安装一个软件,就在现有镜像的基础上增加一层。 2、为什么要采用镜 阅读全文
posted @ 2020-11-13 15:56 Richardo-M-Lu 阅读(575) 评论(0) 推荐(0)
摘要:1、base镜像的特性是什么? 1、不依赖其他镜像,从 scratch 构建。 2、其他镜像可以之为基础进行扩展。 能称作 base 镜像的通常都是各种 Linux 发行版的 Docker 镜像,比如 Ubuntu, Debian, CentOS 等 2、docker cnetos的镜像大小200多 阅读全文
posted @ 2020-11-13 15:27 Richardo-M-Lu 阅读(353) 评论(0) 推荐(0)
摘要:1、如何查看一个镜像(例如hello-world)的dockerfile文件? dockerfile得到该镜像的docker hub页面去看 https://github.com/docker-library/hello-world/blob/7ecae6978055d2fb6960e2a29d24 阅读全文
posted @ 2020-11-13 14:52 Richardo-M-Lu 阅读(722) 评论(0) 推荐(0)
摘要:1、docker run -d -p 80:80 httpd启动了一个容器,实际的启动流程是怎样的? 1、Docker 客户端执行 docker run 命令。 2、Docker daemon 发现本地没有 httpd 镜像。 3、daemon 从 Docker Hub 下载镜像。 4、下载完成,镜 阅读全文
posted @ 2020-11-13 14:24 Richardo-M-Lu 阅读(99) 评论(0) 推荐(0)
摘要:1、docker的核心组件包括哪些? Docker 客户端 - Client Docker 服务器 - Docker daemon Docker 镜像 - Image Registry Docker 容器 - Container 2、docker采用的什么架构,客户端和服务器端如何通信? Docke 阅读全文
posted @ 2020-11-13 12:11 Richardo-M-Lu 阅读(242) 评论(0) 推荐(0)
摘要:1. docker如何配置国内的镜像源? * ubuntu:cli输入 echo '{ "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" 阅读全文
posted @ 2020-11-13 11:18 Richardo-M-Lu 阅读(231) 评论(0) 推荐(0)
摘要:容器的思想是什么? 容器是集装箱的思想,容器消除了开发、测试、生产环境的不一致性。 容器和虚拟机的区别? 容器在 Host 操作系统的用户空间中运行,与操作系统的其他进程隔离。这一点显著区别于的虚拟机。 容器的定义? 容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同 阅读全文
posted @ 2020-11-13 10:14 Richardo-M-Lu 阅读(116) 评论(0) 推荐(0)
摘要:需求: 实现一个能将调用信息记录到日志的装饰器: 1、把每次函数的调用时间,执行时间,调用次数写入日志 2、可以对被装饰的函数分组,调用信息记录到不同的日志 3、动态修改参数,比如日志格式 4、动态打开关闭日志输出功能 @call_info(arg1,arg2,arg3...) def func(a 阅读全文
posted @ 2020-11-11 16:47 Richardo-M-Lu 阅读(422) 评论(0) 推荐(0)
摘要:需求: 在某项目中,程序运行效率较差,为分析程序内哪些函数的执行开销较大,我们实现了一个 带timeout参数的函数装饰器,装饰功能如下: @warn_timeout(1.5) def func(a,b): ... 1、统计被装饰函数的单次调用运行时间 2.时间大于参数timeout的,将此次函数调 阅读全文
posted @ 2020-11-11 15:52 Richardo-M-Lu 阅读(103) 评论(0) 推荐(0)
摘要:需求: 实现一个装饰器,它用来检查被装饰函数的参数类型,装饰器可以通过参数来指明函数参数类型,调用时如果检测出参数不匹配则抛出异常 @type_assert(str,int,int) def f(a,b,c): .... @type_assert(y=list) def g(x,y): .... 思 阅读全文
posted @ 2020-11-11 15:05 Richardo-M-Lu 阅读(172) 评论(0) 推荐(0)
摘要:需求: 在函数对象中保存着一些函数的元数据,例如: f.name:函数的名字 f.doc:函数文档字符串 f.module:函数所属模块名 f.dict:函数的属性字典 f.defaults:默认参数元组 ..... 我们在使用装饰器后,再访问上面这些属性访问时,看到的是内部包裹函数的元数据,原来函 阅读全文
posted @ 2020-11-11 11:10 Richardo-M-Lu 阅读(87) 评论(0) 推荐(0)
摘要:需求: 某些时候我们想为多个函数,统一添加某种功能,比如计时统计、日志记录、缓存运算结果等等 我们不想在每个函数内一一添加完全相同的代码,有什么好的解决方案? 思路: 定义装饰器函数,用它来生成一个在原函数基础上添加了新功能的函数,替代原函数 代码: def memo(func): cache = 阅读全文
posted @ 2020-11-11 10:23 Richardo-M-Lu 阅读(79) 评论(0) 推荐(0)
摘要:需求: 由于python中全局解释器锁(GIL)的存在,在任意时刻只允许一个线程在解释器中运行,因此python的多线程不适合处理cpu密集型的任务 想要处理cpu密集型的任务,可以使用多进程模型 思路: 使用标准库中的multiprocessing.Process,它可以启动子进程执行任务,操作接 阅读全文
posted @ 2020-11-10 23:06 Richardo-M-Lu 阅读(141) 评论(0) 推荐(0)
摘要:需求: 我们之前实现了一个多线程web视频监控服务器,由于我们服务器资源有限(CPU、内存、带宽),需要对请求连接数(线程数)做限制,避免因资源耗尽而瘫痪 可以使用线程池代替原来的每次请求创建线程 思路: 使用标准库中concurrent.futures下的ThreadPoolExecutor,对象 阅读全文
posted @ 2020-11-09 23:20 Richardo-M-Lu 阅读(132) 评论(0) 推荐(0)
摘要:需求: 我们实现了一个web视频监控服务器,服务器端采集摄像头数据,客户端使用浏览器通过http请求接收数据,服务器使用推送的方式(multipart/x-mixed-replace)一直使用一个tcp连接向客户端 传递数据。这种方式将持续占用一个线程,导致单线程服务器无法处理多客户端请求。改写程序 阅读全文
posted @ 2020-11-09 22:32 Richardo-M-Lu 阅读(90) 评论(0) 推荐(0)
摘要:需求: 在上节课,我们从Intrinio.com下载多支股票的csv数据,并将其转换为xml文件 额外需求: 实现一个线程TarThread,将转换出的xml文件打包。比如转换线程每生产出100个xml文件,就通知打包线程将它们打包成一个xxx.tgz文件 并删除xml文件,打包完成后,打包线程反过 阅读全文
posted @ 2020-11-09 15:55 Richardo-M-Lu 阅读(205) 评论(0) 推荐(0)
摘要:代码: >>> from collections import Iterator,Iterable >>> >>> >>> from collections import Iterator,Iterable >>> l = [1,2,3,4,5] >>> for x in l: ... print( 阅读全文
posted @ 2020-11-02 14:55 Richardo-M-Lu 阅读(129) 评论(0) 推荐(0)
摘要:需求: 某文件系统目录下有一系列文件: quickshort.c graph.py heap.java install.sh stack.cpp ... 编写程序给其中的所有.py和.sh结尾的文件加上用户可执行权限 思路: 使用str.startswith()和str.endswith()方法 ( 阅读全文
posted @ 2020-11-02 10:06 Richardo-M-Lu 阅读(125) 评论(0) 推荐(0)