《 Docker 进阶与实战 》 读书笔记

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

以下内容全文出自书目:《 Docker 进阶与实战 》

1. Docker 定义:一个开源的容器引擎,可以方便地对容器进行管理,不同容器可以共享底层的只读镜像。

2. Docker 是一个典型的 C/S 架构的应用。

3. Docker deamon 可以被理解成 Docker  Server ,也常常用 Docker  Engine 来描述它。

4. 容器以镜像为基础,同时又为镜像提供了一个标准和隔离的执行环境。镜像是这个运行环境的静态体现。

5. Registry 是存放镜像的仓库,通常被部署在服务器或者云端。支持镜像的分发和更新。

    仓库的名字通常由两部分组成,中间以斜线分开,前是用户名,后是镜像名。如:tom/ubuntu 。

    Docker 公司提供的官方 Registry 叫 Docker Hub 。鉴权认证保证了 Registry 访问的安全性。

    若要将镜像 push 到第三方 Registry , 那么镜像名中必须包含该 Registry 地址。

    其实 Registry 也是一个单独的开源项目。任何人都可以下载后部署一个自己的 Registry 。

 

6. Docker  的安装:

sudo ape-get install docker.io

7. Docker  Container : 内核容器技术。自动构建时当前机器的配置不会影响镜像的构建过程。

    Docker  容器与主机共享操作系统内核。

8. 容器虚拟化是一种操作系统虚拟化,属于轻量级的虚拟化。

9. Namespace : 命名空间 / 名字空间,主要作访问隔离。将内核的全部资源作封装,使得每个空间有一份独立资源,不同进程在各自空间内对同一种资源的使用不会相互干扰。

10. Cgroup  是 Control group 的简称,亦称为控制组,主要作资源控制。用于限制和隔离一组进程对系统资源的使用。

11. 容器组成公式:

容器 = cgroup + namespace + rootfs + 容器引擎(用户态工具)Cgroup : 资源控制Namespace : 访问隔离rootfs :文件系统隔离容器引擎 :生命周期控制

12. $$ 表示当前进程。

13. IPC 是 Inter - Process Communication 的简写:进程间通信。

14. Mount Namespace 用于隔离文件系统挂载点,删除方式:

ip netns delete new_ns 

15. host 的普通用户进程在容器里可以是 0 号用户,也就是 root 用户。

16. Docker  image 是用来启动容器的只读模板。

17. 导入镜像有 2 个可用命令:

docker import / docker load 。 docker load  一般只用于导入由 docker save 导出的镜像。

18.生成镜像方式:

docker commit :可增量的生成一个镜像。docker build : 通过 dockerfile 文件生成镜像。

19. 列出容器:

docker ps 

20. 列出镜像:

docker images 

21. 查看容器和镜像详细信息:

docker inspect 

22. Docker images 包含数据必要的元数据。数据由一层层的 image layer 组成,元数据则是一些 JSON 文件。用来描述数据(image layer)之间的关系及容器的一些配置信息。

23. Docker  对镜像进行了完整性校验,其完整性的凭证是由镜像仓库提供的。

24. image ID 实际上只是最上层的 layer ID,所以 Docker  inspect 也适用于任何一层 layer 。

25. “ env ”  : 容器启动时会作为容器的环境变量。“ Cmd ” : 容器启动时的默认命令。

26. Docker  image 可使用写时复制,快并节省空间。

27. 若制作 image 时使用到了上些关键信息(账号、密码等),则需要在同层删除,不然这些信息会一直存在于 image 中。

28. 若下载镜像不带标签,会把 ubuntu 仓库下官方(默认 tag )镜像全部下载。

29. 沙盒:隔离的网络运行环境,保存了容器网络栈的配置,包括了对网络接口、路由表和 DNS 配置的管理。

30. docker create 、 docker run 可带参数:-v : 添加数据卷,并可多次指定来挂载多个数据卷。

      -v 会在容器的 /tmp/data 目录下创建一个新的数据卷。

      可用 docker Inspet 查看数据卷在主机中的位置。

      -v 也可将 Docker  daemon 所在主机上的文件或文件夹挂载到容器中。

      -v 参数的主机目录必须使用绝对路径,若指定路径不存在, Docker 会自动创建该目录。

       使用数据卷容器存储的数据不会轻易丢失,删除容器、甚至是初始化该数据卷的 dbdata ,该数据卷也不会被删除。

31. 在本机部署 Convoy 插件后可用 Convoy 创建一个卷: ( 见书 P103 )

sudo convoy create volume_name

删除:

sudo convoy delete volume_name

备份:

sudo convoy backup create snaplvoll --dest vfs:///opt/convoy/

32. Linux 的命令 ulimit 可对一些资源起限制作用,包括:

core dump 文件的大小、进程数据段的大小、可创建文件的大小、常驻内存集的大小 、打开文件的数量、进程栈的大小、CPU 时间 、单个用户最大线程数、进程最大虚拟内存

33. Docker 可设置容器的根文件系统为只读模式。

34. Dockerfile 由四部分组成:

基础镜像信息、维护者信息、镜像操作指令、容器启动命令

     其第一条有效信息必须是基础镜像信息: FROM 指令。用来指定要制作的镜像继承自哪个镜像。

     可以写多个  FROM 指令来构建复杂镜像。     

EXPOSE : 暴露端口CMD :容器启动时执行的命令。每个 Dockerfile 只能有一条 CMD 命令,写了多条时只有最后一条会被执行。若用户启动容器时指定了运行命令,则会覆盖 CMD 指定命令。VOLUME :创建一个可从本地主机或其它容器挂载的挂载点。常用来存放数据库或需要永久保存的数据。ENV :指定一个环境变量。被后续 RUN 命令使用并在容器运行时保持。

35. Docker 制作镜像的顺序:

1. 解析 Dockerfile,找到基础镜像。2. 以基础镜像为基础,创建一个容器。3. 在容器中按顺序执行 Dockerfile 中的命令。4. 若不是 RUN 命令,如 ENV 命令,记录下来以便启动时执行。5. 把属性命令记录在 Image 的属性中。6. 所有命令执行完后,commit 该容器为新的镜像。

36. Docker run 命令中用 -p 实现端口映射。

      80:8089  表示将主机上的 80 端口映射到容器中的 8089 端口。(对外端口:容器内端口)

37. Docker build 命令可跟参数 -f :指定 build 命令中的 “ dockerfile ”  选项来设置所需的 Dockerfile 。

38. docker-compose-yml 文件中:

1. “ ports ” 对应 docker run 中的 -p 参数。2. “ volumes ” 对应 -v 选项。3. “ links ” 对应 “ --links ” 选项。

39.搭建 Jenkins 环境有 2 种方式:

     1) 直接在主机中配置 Jenkins 环境 。

     2) 使用  Docker 镜像配置 Jenkins 环境:

1. 下载 Jenkins 镜像:  docker pull jenkins2. 启动 Jenkins 容器: docker run -d -p 49001:8080 -t Jenkins-d : 后台运行; -p : 端口映射; -t :给容器命名。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447859.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】R语言函数总结

原博;R语言与数据挖掘:公式;数据;方法R语言特征 对大小写敏感通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母)。不过,一个命名必须以 . 或者字母开头,并且如…

《趋势的力量》-- 观念决定了个人发展的战略路线(大学生选择专业、就业、考研与否的建议)

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 最近几天看了好几本书,其中这一本个人觉得很有启发意义。于是记录一二。 主体大纲: -------------------------…

中间件 - 初识

中间件 - 初识 ​ 在Java项目实际开发中,我们所使用的ActiveMQ、RibbitMQ、Kafka、Tomcat、WebLogic,这些都可以统称为中间件。 ​ 我们初次去了解,什么是中间件? 一、中间件简介 ​ 什么是中间件? ​ 由于业务、机构和技术是不断…

VUE 解决:Property or method “deleteFun“ is not defined on the instance but referenced during render.

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1. 一个点击事件报错: Property or method "deleteFun" is not defined on the instance but referenced during…

2014年广州科目三道路驾驶技能考试/广汕路科目三路考系统操作和评判指南

一 上车准备 上车准备操作要点: 绕车一周,观察车辆外观和周围环境,确认安全。 考生绕车一周,检查轮胎气压、轮胎磨损情况、轮胎螺栓有无松动,检查有无漏水、漏油等情况,车辆外观有无凹凸等碰撞情况&…

Bootstrap 中: data-toggle 与 data-target 的作用

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 <buttontype"button"class"update-button"style"width:70px; height:40px;"data-toggle"modal&…

VUE 解决:Method “xxx“ has already been defined as a data property.

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1.调用方法报错&#xff1a; Method "changePage" has already been defined as a data property. 代码写法&#xff1a; 2…

C# 模拟Windows键盘事件

发送键盘消息 1 [DllImport("user32.dll", EntryPoint "keybd_event", SetLastError true)] 2 public static extern void keybd_event( 3 byte bVk, //虚拟键值 4 byte bScan,// 一般为0 5 int…

CDN 的作用与基本过程

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 技术原理解说也可参见另一文&#xff1a;https://blog.csdn.net/jiangyu1013/article/details/88795690 1.简介 CDN&#xff0c;Content …

CDN(内容分发网络)技术原理

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 前言 Internet的高速发展&#xff0c;给人们的工作和生活带来了极大的便利&#xff0c;对Internet的服务品质和访问速度要求越来越高…

视界云:CDN{内容分发网络} 知识详解

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 CDN 全称:Content Delivery Network或Content Ddistribute Network&#xff0c;即内容分发网络 基本思路&#xff1a; 尽可能避开互联…

更改 nginx 默认端口 ( ubuntu、linux )

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 我想让一个demo 站点直接域名访问&#xff0c;不带端口&#xff0c;所以想用 80 端口启动对应前端工程。 发现 80 被 nginx 占用&a…

怎么更改Rstudio中的默认目录

方法一、 每次启动Rstudio之后&#xff0c;执行代码 setwd("F:/R/R_data")默认目录就会修改为双引号内的位置路径。 方法二、 对Rstudio进行设置一次即可。 ①点击Tools&#xff0c;打开Global Options. ②将位置设置完毕&#xff0c;点击 Apply 确认即可。 ③Rstudi…

docker 虚悬镜像 ( 悬空镜像 ) :镜像没有仓库名或没有标签

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 我们在build镜像的过程中&#xff0c;可能会产生一些临时的不具有名称也没有作用的镜像他们的名称一般都是<none>, 我们可以执…

Docker 下载 JDK 镜像(docker search 、docker pull)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 我有一个dockerfile 中要引用 jdk。 运行脚本发现 居然没有JDK 原始镜像。早期是下载过的&#xff0c;不记得什么时候清掉了。 于是重新…

数据结构与算法-ADT-Array

Array ADT 一维数组是连续元素的集合&#xff0c;其中的每个元素都可以通过唯一的整数下标来存取。数组的大小在创建后不能修改。 ADT 定义&#xff1a; Array(size): 创建一个长度为 size 的一维数组&#xff0c;并且将每个元素初始化成 Nonelength(): 返回数组中的元素个数ge…

前端VUE工程不占用80端口,浏览器不带端口访问VUE项目的实现

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1.需求&#xff1a;直接域名访问项目&#xff0c;不用IP&#xff0c;也不带端口号。 1&#xff09;访问项目方法通常是 IP&#xff1a;…

ResourceDictionary主题资源替换(二) :编译期间,替换主题资源

之前的ResourceDictionary主题资源替换&#xff08;一&#xff09;通过加载顺序来覆盖之前的主题资源&#xff0c;介绍了WPF框架对ResourceDictionary资源的合并规则。 此篇介绍一种在编译期间&#xff0c;实现资源替换的方案 前言 如下图&#xff0c;项目中存在俩个主题资源字…

解决 idea 中 jsp 修改后页面不生效

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1.问题描述&#xff1a;idea 编辑 jsp , 修改好后在 浏览器访问却发现页面完全无变化 。 2.解决&#xff0c;要在 idea 中作如下设置&a…

解决 :IDEA 修改代码后 Local Changes 中没有提示待提交文件,代码自动提交了

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 通常修改代码后 会在 Local Changes 中提示修改过的文件&#xff0c;如下&#xff1a; 2. 我的情况是 &#xff0c;在这个界面中什么…