Docker基础与实战 pdf

Docker基础与实战

内容简介

本书从Docker基础理论出发,更侧重实际业务中的技术与应用。重点在于后半部分在、Google Colud Platform等平台上的使用方法,以及Rails与Django应用程序构建方法等,都是能够直接运用于实操的技术点。本书是利用Docker构建开发系统、测试系统、操作系统的杰出指南,非常适合一线开发人员。

作者简介

李在弘,目前管理PYRASIS.COM个人网站,编写并发布了多种技术文档。曾在NC Software参与开发游戏《天堂永恒》(Lineage Eternal),并在Ntreev开发移动游戏服务器,还曾负责FFS File System Driver for Windows开源项目。近期正在研究Cocos2d-x移动游戏引擎的Tizen应用,现在主要关注操作系统内核、文件系统、软件开发自动化、游戏引擎、云平台、分布式处理系统。梦想打造个性化的全自动家居,以及设立开源基金会。 主要著作 《Windows项目必读实用工具:Subversion, Trac, CruiseControl.NET》  

目录

第1 章 Docker 1
1.1 虚拟机与Docker 3
1.1.1 虚拟机 4
1.1.2 Docker 5
1.1.3 Linux 容器 6
1.2 Docker 镜像与容器 8
第2 章 安装Docker 11
2.1 Linux 11
2.1.1 自动安装脚本 11
2.1.2 Ubuntu 11
2.1.3 RedHat Enterprise Linux、CentOS 12
2.1.4 使用最新二进制文件 12
2.2 Mac OS X 13
2.3 Windows 16
第3 章 使用Docker 23
3.1 使用search 命令搜索镜像 23
3.2 使用pull 命令下载镜像 25
3.3 使用images 命令列出镜像目录 25
3.4 使用run 命令创建容器 25
3.5 使用ps 命令查看容器列表 26
3.6 使用start 命令启动容器 26
3.7 使用restart 命令重启容器 27
3.8 使用attach 命令连接容器 27
3.9 使用exec 命令从外部运行容器内的命令 27
3.10 使用stop 命令终止容器 28
3.11 使用rm 命令删除容器 28
3.12 使用rmi 命令删除镜像 29
第4 章 创建Docker 镜像 31
4.1 熟悉Bash 31
目录
4.2 编写Dockerfile 36
4.3 使用build 命令创建镜像 37
第5 章 查看Docker 39
5.1 使用history 命令查看镜像历史 39
5.2 使用cp 命令复制文件 40
5.3 使用commit 命令从容器的修改中创建镜像 40
5.4 使用diff 命令检查容器文件的修改 40
5.5 使用inspect 命令查看详细信息 41
第6 章 灵活使用Docker 43
6.1 搭建Docker 私有仓库 43
6.1.1 存储镜像数据到本地 43
6.1.2 使用push 命令上传镜像 44
6.1.3 存储镜像数据到Amazon S3 45
6.1.4 使用默认认证 46
6.2 连接Docker 的容器 52
6.3 连接到其他服务器的Docker 容器 53
6.4 使用Docker 数据卷 56
6.5 使用Docker 数据卷容器 59
6.6 创建Docker 基础镜像 60
6.6.1 创建Ubuntu 基础镜像 60
6.6.2 创建CentOS 基础镜像 61
6.6.3 创建空基础镜像 62
6.7 在Docker 内运行Docker 64
第7 章 详细了解Dockerfile 67
7.1 .dockerignore 68
7.2 FROM 68
7.3 MAINTAINER 69
7.4 RUN 69
7.5 CMD 70
7.6 ENTRYPOINT 71
7.7 EXPOSE 73
7.8 ENV 73
7.9 ADD 74
7.10 COPY 76
7.11 VOLUME 77
7.12 USER 77
7.13 WORKDIR 78
7.14 ONBUILD 79
第8 章 使用Docker 部署应用程序 81
8.1 向一台服务器部署应用程序 81
8.1.1 在开发者PC 安装Git 并创建仓库 82
8.1.2 在开发者PC 中使用Node.js 编写Web 服务器 83
8.1.3 在开发者PC 中编写Dockerfile 文件 84
8.1.4 在开发者PC 中生成SSH 密钥 85
8.1.5 在服务器端安装Git 并创建仓库 86
8.1.6 在服务器中安装Docker 87
8.1.7 在服务器中安装SSH 密钥 88
8.1.8 在服务器中安装Git Hook 89
8.1.9 在开发者PC 中推送源代码 90
8.2 向多台服务器部署应用程序 91
8.2.1 在开发者PC 安装Git 并创建仓库 92
8.2.2 在开发者PC 中使用Node.js 编写Web 服务器 93
8.2.3 在开发者PC 中编写Dockerfile 文件 94
8.2.4 在开发者PC 中生成SSH 密钥 95
8.2.5 在部署服务器安装Git 并创建仓库 96
8.2.6 在部署服务器中生成SSH 密钥 97
8.2.7 在部署服务器中安装Docker 98
8.2.8 在部署服务器中安装Docker 注册服务器 99
8.2.9 在部署服务器中安装SSH 密钥 100
8.2.10 在部署服务器中安装Git Hook 101
8.2.11 在应用程序服务器中安装Docker 103
8.2.12 在应用程序服务器中安装SSH 密钥 104
8.2.13 在开发者PC 中推送源代码 105
第9 章 Docker 监控 107
9.1 编写监控服务器Dockerfile 108
9.2 编写应用程序服务器Dockerfile 111
9.3 在Web 浏览器中查看图表 114
第10 章 在Amazon Web Services 中使用Docker 117
10.1 在Amazon EC2 中使用Docker 117
10.2 在AWS Elastic Beanstalk 中使用Docker 119
10.2.1 在AWS 控制台部署Docker 应用程序 119
10.2.2 使用Docker Hub 公开仓库镜像 129
10.2.3 使用Docker Hub 私有仓库的镜像 131
10.2.4 使用Git 部署Elastic Beanstalk Docker 应用程序 139
第11 章 在Google Cloud Platform 中使用Docker 145
11.1 安装Goolge Cloud SDK 145
11.2 在Compute Engine 中使用Docker 147
11.3 在Container Engine 中使用Docker 148
第12 章 使用Docker Hub 151
12.1 加入Docker Hub 151
12.2 使用push 命令上传镜像 153
12.3 创建Docker Hub 私有仓库 155
12.4 使用Docker Hub Automated Build 157
第13 章 使用Docker Remote API 167
13.1 使用Docker Remote API Python 库 169
13.1.1 创建并启动容器 169
13.1.2 创建镜像 173
13.1.3 显示容器列表 175
13.1.4 显示镜像列表 176
13.1.5 其他示例与函数 176
13.2 使用Docker Remote API Python 库进行HTTPS 通信 187
13.2.1 创建证书 187
13.2.2 使用Python 库 191
第14 章 使用CoreOS 193
14.1 在VirtualBox 中安装CoreOS 196
使用systemd 运行服务 205
14.2 使用Vagrant 安装CoreOS 206
14.3 使用etcd 211
14.3.1 创建etcd 键与目录 211
14.3.2 输出etcd 键与目录列表 212
14.3.3 设置自动删除etcd 键与目录 212
14.3.4 监视etcd 键 213
14.3.5 etcd 其他命令 214
14.4 使用fleet 214
14.4.1 输出fleet 机器列表 215
14.4.2 使用fleet 运行Unit 215
14.4.3 输出fleet Unit 列表 217
14.4.4 查看fleet Unit 状态 217
14.4.5 测试fleet 的自动恢复功能 218
14.4.6 使用fleet 专用选项 219
14.4.7 灵活使用fleet Unit 文件模板 222
14.4.8 灵活使用fleet sidekick 模型 224
14.4.9 fleet 其他命令 227
14.5 在云服务中使用CoreOS 227
14.5.1 在Amazon EC2 中使用CoreOS 227
14.5.2 在Google Compute Engine 中使用CoreOS 229
第15 章 使用Docker 搭建WordPress 博客 231
15.1 编写WordPress Dockerfile 文件 232
15.2 编写MySQL 数据库Dockerfile 文件 233
15.3 创建WordPress 与数据库容器 236
第16 章 使用Docker 构建Ruby on Rails 应用 237
16.1 安装Ruby 与Rails 238
16.2 编写Rails Dockerfile 240
16.3 编写PostgreSQL 数据库Dockerfile 文件 245
16.4 创建Rails 与数据库容器 247
第17 章 使用Docker 构建Django 应用 249
17.1 安装Django 250
17.2 编写Django Dockerfile 文件 253
17.3 编写Oracle 数据库Dockerfile 文件 258
17.4 创建Django 与数据库容器 261
第18 章 Docker 应用案例 263
18.1 与负载平衡相关的自动伸缩 263
18.2 整合开发、测试、运营 264
18.3 轻松迁移服务 265
18.4 用于测试 267
第19 章 Docker 命令与选项列表 269
19.1 attach 270
19.2 build 271
19.3 Commit 273
19.4 cp 273
19.5 create 274
19.6 diff 277
19.7 events 277
19.8 exec 278
19.9 export 280
19.10 history 280
19.11 images 281
19.12 import 281
19.13 info 282
19.14 inspect 283
19.15 kill 284
19.16 load 284
19.17 login 285
19.18 logout 286
19.19 logs 286
19.20 port 287
19.21 pause 287
19.22 ps 287
19.23 pull 288
19.24 push 289
19.25 restart 289
19.26 rm 289
19.27 rmi 290
19.28 run 291
19.29 save 296
19.30 search 297
19.31 start 297
19.32 stop 298
19.33 tag 298
19.34 top 299
19.35 unpause 299
19.36 version 300
19.37 wait 300
附录 编译Docker 301

感悟与笔记

  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 : 内核容器技术。自动构建时当前机器的配置不会影响镜像的构建过程。
  8. Docker 容器与主机共享操作系统内核。
  9. 容器虚拟化是一种操作系统虚拟化,属于轻量级的虚拟化。
  10. Namespace : 命名空间 / 名字空间,主要作访问隔离。将内核的全部资源作封装,使得每个空间有一份独立资源,不同进程在各自空间内对同一种资源的使用不会相互干扰。
  11. Cgroup 是 Control group 的简称,亦称为控制组,主要作资源控制。用于限制和隔离一组进程对系统资源的使用。
  12. 容器组成公式:
    • 容器 = cgroup + namespace + rootfs + 容器引擎(用户态工具)
    • Cgroup : 资源控制
    • Namespace : 访问隔离
    • rootfs :文件系统隔离
    • 容器引擎 :生命周期控制
  13. $$ 表示当前进程。
  14. IPC 是 Inter - Process Communication 的简写:进程间通信。
  15. Mount Namespace 用于隔离文件系统挂载点,删除方式:ip netns delete new_ns
  16. host 的普通用户进程在容器里可以是 0 号用户,也就是 root 用户。
  17. Docker image 是用来启动容器的只读模板。
  18. 导入镜像有 2 个可用命令:docker import / docker load 。 docker load 一般只用于导入由 docker save 导出的镜像。
  19. 生成镜像方式:
    • docker commit :可增量的生成一个镜像。
    • docker build : 通过 dockerfile 文件生成镜像。
  20. 列出容器:docker ps
  21. 列出镜像:docker images
  22. 查看容器和镜像详细信息:docker inspect
  23. Docker images 包含数据必要的元数据。数据由一层层的 image layer 组成,元数据则是一些 JSON 文件。用来描述数据(image layer)之间的关系及容器的一些配置信息。
  24. Docker 对镜像进行了完整性校验,其完整性的凭证是由镜像仓库提供的。
  25. image ID 实际上只是最上层的 layer ID,所以 Docker inspect 也适用于任何一层 layer 。
  26. “ env ” : 容器启动时会作为容器的环境变量。“ Cmd ” : 容器启动时的默认命令。
  27. Docker image 可使用写时复制,快并节省空间。
  28. 若制作 image 时使用到了上些关键信息(账号、密码等),则需要在同层删除,不然这些信息会一直存在于 image 中。
  29. 若下载镜像不带标签,会把 ubuntu 仓库下官方(默认 tag )镜像全部下载。
  30. 沙盒:隔离的网络运行环境,保存了容器网络栈的配置,包括了对网络接口、路由表和 DNS 配置的管理。

会员免费下载

链接:https://pan.baidu.com/s/1arH8UupyZDBdgVFGhMNv6g

提取码: ****** 查看

¥69/年 开通VIP会员

成为本站VIP会员即可无限下载。 请先点击百度网盘,看资源是否还在,不在请点击链接通知站长补资源。

资源标签点击标签可查看对应分类的资源

其他

资源推荐

免费 图解数据结构:使用Java

C++ 程序设计语言:第4部分 标准库(原书第4版)

C++编程思想(两卷合订本)

CSS世界

JavaScript DOM编程艺术(第2版)

C++ Primer Plus(第6版) 中文版

Vue.js快速入门

Java编程思想(第4版) [thinking in java]

Copyright © 2021-2022 知识猫. All Rights Reserved.