docker实战(Docker实战派 容器入门七步法 pdf)

软件教程 2023.03.04 260

目录:

《Docker进阶与实战》epub下载在线阅读全文,求百度网盘云资源

《Docker进阶与实战》(华为Docker实践小组)电子书网盘下载免费在线阅读

链接:

提取码:ccuk  

书名:Docker进阶与实战

豆瓣评分:7.0

作者: 华为Docker实践小组

出版社: 机械工业出版社

出版年: 2016-1-5

页数: 264

内容简介

本书由一个真正钻研容器技术的团队写作,他们不仅仅是在使用Docker,更多的是在探索容器的未来之路,希望把“代码与产品,理论与实践”完美结合。本书内容从Docker的来源、镜像、仓库、安全、网络、卷存储,到生态、测试及社区贡献都有涉猎。无论你是入门级,还是已经有了较深的功底,这本书都会带你踏上新的台阶——正所谓“进阶”。

作者简介

华为Docker实践小组,致力于容器技术探索,结合华为CT/IT/Mobile等应用场景,重点在容器引擎、仓库、网络和卷存储等多领域攻关;同时该团队遵循开源精神,将开发过程中的诸多价值特性同步贡献到Docker社区中,目前在Docker社区贡献中全球排名稳居前三,国内排名第一。

超值一篇分享,Docker:从入门到实战过程全记录

作者 | 天元浪子

来源 | CSDN博客

想要真正理解Docker,就不得不从虚拟化技术的发展历程说起。普遍认为虚拟化技术经历了物理机时代、虚拟机时代,目前已经进入到了容器化时代。可以说,Docker是虚拟化技术不断发展的必然结果。

那么,什么是容器呢?容器和虚拟机有什么不同?Docker和容器又是什么关系呢?搞明白这几个问题,Docker的概念就清晰了。

1.1 虚拟机和容器

借助于VMWare等软件,可以在一台计算机上创建多个虚拟机,每个虚拟机都拥有独立的操作系统,可以各自独立的运行程序。这种分身术虽然隔离度高(操作系统级),使用方便(类似物理机),但占用存储资源多(GB级)、启动速度慢(分钟级)的缺点也是显而易见的。

相较于虚拟机,容器(Container)是一种轻量型的虚拟化技术,它虚拟的是最简运行环境(类似于沙盒)而非操作系统,启动速度快(秒级)、占用存储资源少(KB级或MB级),容器间隔离度为进程级。在一台计算机上可以运行上千个容器,这是容器技术对虚拟机的碾压式优势。

1.2 容器、镜像和Docker

Docker是一个开源的应用容器引擎,可以创建容器以及基于容器运行的程序。Docker可以让开发者打包他们的应用和依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。

听起来很简单,但是在Docker和容器之间,还隐藏着一个镜像的概念,令初学者颇感困惑。本质上,Docker镜像是一个特殊的文件系统,它提供容器运行时所需的程序、库、资源、配置等文件。Docker镜像类似于一个py文件,它需要Docker的运行时(类似于Python解释器)运行。镜像被运行时,即创建了一个镜像的实例,一个实例就是一个容器。

1.3 Docker 和 k8s

作为容器引擎,Docker为容器化的应用程序提供了开放的标准,使得开发者可以用管理应用程序的方式来管理基础架构,实现快速交付、测试和部署代码。随着容器的大量使用,又产生了如何协调、调度和管理容器的问题,Docker的容器编排应运而生。

k8s是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理,是一个开源的,用于管理云平台中多个主机上的容器化的应用,k8s的目标是让部署容器化的应用简单并且高效,k8s提供了应用部署、规划、更新、维护的一种机制。

Docker和k8sr都是以containerd(容器化标准)作为运行时,因此使用Docker创建的镜像完全可以在k8s中无障碍的使用。

2.1 在ubuntu中安装

在linux系统中安装Docker非常简单,官方为我们提供了一键安装脚本。这个方法也适用于Debian或CentOS等发行版。

安装过程如果出现超时,不要灰心,多试几次,总会成功的。安装完成后,Docker只能被root用户使用,可以使用下面的命令取消权限限制:

然后,重启docker服务:

最后,关闭当前的命令行,重新打开新的命令行就可以了。

顺便提一下,如果在CentOS下安装,可能会出现一堆类似于下面的错误:

这是由于docker和Podman冲突造成的,需要先卸载Podman:

2.2 在Win10中安装

Docker的运行,依赖linux的环境,官方提供了Docker Desktop for Windows,但是它需要安装Hyper-V,Hyper-V是微软开发的虚拟机,类似于 VMWare 或 VirtualBox,仅适用于 Windows 10。这个虚拟机一旦启用,QEMU、VirtualBox 或 VMWare Workstation 15 及以下版本将无法使用!如果你必须在电脑上使用其他虚拟机(例如开发 Android 应用必须使用的模拟器),请不要使用 Hyper-V!

我的电脑是win10家庭版,不能直接安装hyper-v,需要将下面的命令保存到cmd文件中:

然后在cmd文件上点击右键,选择使用管理员运行。执行完毕后会重启,在重启的过程中进行安装。

2.3 Hello world

docker服务启动的情况下,运行下面的命令:

此命令的含义是:

第一次运行时,因为本地没有ubuntu:20.04镜像,docker会自动从镜像服务器下载。下载过程可能需要多试几次,只要成功一次,以后执行就不再需要下载了。

docker官方还提供了一个hello-world镜像,可以直接运行:

此命令省略了镜像版本和运行参数,docker使用latest作为版本,即最新版本。

从hello world的例子中,也可以体验到,docker实例的运行是非常快的。

docker官方的镜像库比较慢,在进行镜像操作之前,需要将镜像源设置为国内的站点。

新建文件/etc/docker/daemon.json,输入如下内容:

然后重启docker的服务:

3.1 列出本地所有镜像

执行命令 docker images 可以查看

当前我本地只有刚才安装的两个镜像。

3.2 从镜像库中查找镜像

执行命令 docker search 镜像名称可以从docker镜像库中查找镜像。

最好选择官方(OFFICIAL)的镜像,这样的镜像最稳定一些。

3.3 下载新的镜像

执行命令docker pull 镜像名称:版本号即可下载新的镜像。

镜像下载后,就可以使用镜像来创建容器了。

4.1 启动容器

执行命令docker run即可启动容器,也就是创建某个镜像的实例。docker run命令非常复杂,可以先执行一个docker run --help来查看帮助:

比如我们要执行python的shell,需要添加-it参数,即:docker run -it python:3.8

4.2 将宿主机的文件挂载到容器

docker容器与宿主机是隔离的,要想让容器内的程序能访问宿主机上的文件,需要通过-v参数将宿主机的文件挂载到容器中。

比如我们在宿主机上有一个hello.py,可以打印hello,想要在python容器中执行,就需要进行挂载。-v后还需要接两个参数,分别是宿主机的目录和容器内的目录,两者使用:分隔,路径必须都是绝对路径。

我的hello.py保存在主目录的/docker_test目录中,将这个目录挂载到容器的/docker_test目录,然后在容器内执行python /docker_test/hello.py:

4.3 容器的端口映射

我们修改一下hello.py,创建一个socket服务端,并监听5000端口,当有客户端连接时,打印客户端的地址,先客户端发送hello,然后关闭连接:

在容器内执行:

接下来,尝试用telnet命令连接,结果却是失败的。原因是,127.0.0.1是宿主机的ip地址,5000是容器的端口,这与我们的习惯稍微有些不同。事实上,docker的容器是非常轻量的,它并没有自己的网络,要想访问容器的端口,需要进行端口映射,将容器的某端口映射到宿主机的端口,客户端连接时,只要与宿主机的端口进行连接就可以了。

需要注意的是,上面的代码创建的服务器,无论如何也不可能被客户端连接,因为代码中绑定了127.0.0.1的ip,在容器中运行时,需要绑定所有ip,即0.0.0.0。

然后,再使用-p参数,-p还需要三个参数,即宿主机的ip地址、宿主机的端口、容器的端口,三者之间使用:分隔。一般的,可以将宿主机的ip地址省略,只写宿主机的端口:容器的端口即可。

这样,就将容器的5000端口映射到了宿主机的5001端口,使用:

即可与容器中的服务器进行连接。

4.4 容器管理

上面的服务运行之后,可以使用docker ps命令,查看运行中的容器:

显示的内容有下面几列:

要想结束容器,可以使用docker kill 容器ID命令。

一般而言,当我们的程序开发完成后,会连同程序文件与运行环境一起制作成一个新的镜像。

要制作镜像,需要编写Dockerfile。DockeFile由多个命令组成,常用的命令有:

注意,Docker镜像中有一个层的概念,每执行一个RUN命令,就会创建一个层,层过多会导致镜像文件体积增大。尽量在RUN命令中使用连接多条shell命令,减少RUN命令的个数,可以有效减小镜像文件的体积。

5.1 自制显示文本文件内容镜像

编写cat.py,接收一个文件名,由python读取文件并显示文件的内容:

这个例子比较简单,缩写Dockerfile如下:

这个Dockerfile的含义是:

需要说明的是,ENTRYPOINT有两种写法:

这里采用第二种写法,是因为我们要在外部给容器传递参数。执行命令编译Docker镜像:

这个命令中,-t的含义是目标,即生成的镜像名为hello,版本号为1.0,别忘了最后那个.,这叫到上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。

这样,我们的第一个镜像就制作完成了,使用下面的命令执行它:

即可看到~/docker_test/cat/files/test.txt的内容。

5.2 自制web服务器镜像

我们使用tornado开发一个网站,而python的官方镜像是没有tornado库的,这就需要在制作镜像时进行安装。

测试的ws.py如下:

编写Dockerfile文件如下:

在此我们验证一下CMD与ENTRYPOINT的区别。在Dockerfile所在有目录下执行如下命令:

执行完成后,再使用docker images使用就可以看到生成的镜像了,然后使用下面的命令运行:

在浏览器中输入宿主机的ip和8000端口,就可以看到页面了。

在这个例子中,我使用的运行命令是CMD,如果在docker run中指定的其他的命令,此命令就不会被执行,如:

此时,容器中被执行的是python命令,而不是我们的服务。在更多情况下,我们希望在docker run命令中为我们的服务传参,而不是覆盖执行命令,那么,我们应该使用ENTRYPOINT而不是CMD:

上面这种写法,是不支持传递参数的,ENTRYPOINT和CMD还支持另一种写法:

使用这种写法,docker run命令中的参数才可以传递给hello.py:

这个命令中,--port=9000被作为参数传递到hello.py中,因此容器内的端口就成了9000。

在生产环境中运行时,不会使用-it选项,而是使用-d选项,让容器在后台运行:

这种方式下,即使当前的控制台被关闭,该容器也不会停止。

5.3 自制apscheduler服务镜像

接下来,制作一个使用apscheduler编写的服务镜像,代码如下:

Dockerfile也是信手拈来:

生成镜像:

应该可以运行了,文件复制需要两个目录,在运行时,可以使用两次-v来挂载不同的目录:

前面用到的官方python镜像大小足足882MB,在这个基础上,再安装用到的第三方库,添加项目需要的图片等资源,大小很容易就超过1个G,这么大的镜像,网络传给客户非常的不方便,因此,减小镜像的体积是非常必要的工作。

docker hub上有个一python:3.8-alpine镜像,大小只有44.5MB。之所以小,是因为alpine是一个采用了busybox架构的操作系统,一般用于嵌入式应用。我尝试使用这个镜像,发现安装一般的库还好,但如果想安装numpy等就会困难重重,甚至网上都找不到解决方案。

还是很回到基本的路线上来,主流的操作系统镜像,ubuntu的大小为72.9MB,centos的大小为209MB——这也算是我更喜欢使用ubuntu的一个重要原因吧!使用ubuntu作为基础镜像,安装python后的大小为139MB,再安装pip后的大小一下子上升到了407MB,要是再安装点其他东西,很容易就赶上或超过python官方镜像的大小了。

看来,寻常路线是很难压缩镜像文件体积了。幸好,还有一条曲线救国的路可走,这就是多阶段构建法。

多阶段构建的思想其实很简单,先构建一个大而全的镜像,然后只把镜像中有用的部分拿出来,放在一个新的镜像里。在我们的场景下,pip只在构建镜像的过程中需要,而对运行我们的程序却一点用处也没有。我们只需要安装pip,再用pip安装第三方库,然后将第三方库从这个镜像中复制到一个只有python,没有pip的镜像中,这样,pip占用的268MB空间就可以被节省出来了。

1、在ubuntu镜像的基础上安装python:

然后运行:

这样,就生成了python:3.8-ubuntu镜像。

2、在python:3.8-ubuntu的基础上安装pip:

然后运行:

这样,就生成了python:3.8-ubuntu-pip镜像。

3、多阶段构建目标镜像:

这个dockerfile需要解释一下了,因为它有两个FROM命令。

第一个是以python:3.8-ubuntu-pip镜像为基础,安装numpy,当然,在实际应用中,把所有用到的第三方库出写在这里。

第二个FROM是以FROM python:3.8-ubuntu镜像为基础,将第三方库统统复制过来,COPY命令后的–from=0的意思是从第0阶段进行复制。实际应用中再从上下文中复制程序代码,添加需要的ENTRYPOINT等。

最后,再运行:

这然,用于我们项目的镜像就做好了。比使用官方python镜像构建的版本,小了大约750MB。

到此,我们的镜像已经制作好了,可是,镜像文件在哪,如何在生产环境下运行呢?

刚才使用docker images命令时,已经看到了生成的镜像:

我们可以使用docker save命令将镜像保存到指定的文件中,保存的文件是一个.tar格式的压缩文件:

将hello.tar复制到生产环境的机器上,然后执行导入命令:

就可以使用了。

《Docker从入门到实战》epub下载在线阅读全文,求百度网盘云资源

《Docker从入门到实战》(黄靖钧)电子书网盘下载免费在线阅读

链接:

提取码:JPKM  

书名:Docker从入门到实战

豆瓣评分:7.3

作者: 黄靖钧

出版社: 机械工业出版社

出版年: 2017-6

页数: 345

内容简介

本书从Docker的相关概念与基础知识讲起,结合实际应用,通过不同开发环境的实战例子,详细介绍了Docker的基础知识与进阶实战的相关内容,以引领读者快速入门并提高。

本书共19章,分3篇。第1篇容器技术与Docker概念,涵盖的内容有容器技术、Docker简介、安装Docker等。第2篇Docker基础知识,涵盖的内容有Docker基础、Docker镜像、Dockerfile文件、Docker仓库、Docker容器、数据卷、网络管理等。第3篇Docker进阶实战,涵盖的内容有操作系统、编排工具Compose、Web服务器与应用、数据库、编程语言、Docker API、私有仓库、集群网络、Docker安全等。

本书非常适合所有对Docker感兴趣的入门新手阅读。不管是开发人员还是运维人员,都可以通过本书学习Docker的基本知识。即使不是程序员的读者,本书同样适合。普通用户完全可以把Docker作为一个“好玩的工具”来使用,以体验Docker带来的便捷。

作者简介 

黄靖钧

全栈开发者,热衷开源技术。长期以来一直使用容器技术作为应用部署方案,在Docker容器实战方面经验丰富。有多年的大规模集群管理经验。曾经从事PaaS与CaaS项目开发。现专注于Serverless与SDN等领域的研究。

求《SpringCloud与Docker微服务架构实战》全文免费下载百度网盘资源,谢谢~

《Spring Cloud与Docker微服务架构实战第二版》百度网盘pdf最新全集下载:

链接:

?pwd=qrzy 提取码: qrzy

简介:基于Spring Cloud Edgware RELEASE 与Docker 17.09,以指导技术团队实现微服务架构落地为宗旨,覆盖微服务理论、微服务开发框架(Spring Cloud)及运行平台(Docker)三大主题  

《Docker技术入门与实战》epub下载在线阅读全文,求百度网盘云资源

《Docker 技术入门与实战》(杨保华)电子书网盘下载免费在线阅读

资源链接:

链接:

提取码:ZRTL  

书名:Docker 技术入门与实战

作者:杨保华

豆瓣评分:5.9

出版社:机械工业出版社

出版年份:2015-1

页数:312

内容简介:

【编辑推荐】

《Docker技术入门与实战》是中国首部Docker著作,一线Docker先驱实战经验结晶,来自IBM和新浪等多位技术专家联袂推荐!

《Docker技术入门与实战》结合企业生产环境,深入浅出地剖析 Docker 的核心概念、应用技巧、实现原理以及生态环境,为解决各类问题提供了有价值的参考。

【内容简介】

在云计算时代,开发者将应用转移到云上已经解决了硬件管理的问题,然而软件配置和管理相关的问题依然存在。Docker的出现正好能帮助软件开发者开阔思路,尝试新的软件管理方法来解决这个问题。通过掌握Docker,开发人员便可享受先进的自动化运维理念和工具,无需运维人员介入即可顺利运行于各种运行环境。

《Docker技术入门与实战》分为三大部分:Docker入门、实战案例和高级话题。第一部分(第1~8章)介绍Docker与虚拟化技术的基本概念,包括安装、镜像、容器、仓库、数据管理等;第二部分(第9~17章)通过案例介绍Docker的应用方法,包括与各种操作系统平台、SSH服务的镜像、Web服务器与应用、数据库的应用、各类编程语言的接口、私有仓库等;第三部分(第18~21章)是一些高级话题,如Docker核心技术、安全、高级网络配置、相关项目等。

《Docker技术入门与实战》从基本原理开始入手,深入浅出地讲解Docker的构建与操作,内容系统全面,可帮助开发人员、运维人员快速部署应用。

【名人推荐】

虽然前几年在容器方面所做的工作不多,但是从2015年起,我们计划将工作重点放在 Docker 等容器技术上。

——杨卫华

新浪微博技术总监

本书作者之一杨保华博士在加入 IBM之后,一直从事云计算与软件定义网络领域的相关解决方案和核心技术的研发,热心关注 OpenStack、Docker 等开源社区,热衷使用开源技术,积极参与开源社区的讨论并提交代码。这使得他既能从宏观上准确把握 Docker 技术在整个云计算产业中的定位,又能从微观上清晰理解技术人员所渴望获知的核心之处。

——刘天成

IBM中国研究院云计算运维技术研究组经理

好的IT技术总是迅速“火爆”,Docker 就是这样。好像忽然之间,在企业一线工作的毕业生们都在谈论 Docker。在IT云化的今天,系统的规模和复杂性,呼唤着标准化的构件和自动化的管理,Docker 正是这种强烈需求的产物之一。这本书很及时,相信会成为IT工程师的宝典。

——李军

清华大学信息技术研究院院长

本书围绕着镜像、容器、仓库三个部分,从实践的角度出发,讲解了 Docker 的安装、配置、使用的方式。在本书的后面几个章节,也介绍了许多 Docker 的实现细节和工作原理。总体而言,本书从实际的案例入手,由浅至深,循序渐进,内容相当丰富。

——王灿

浙江大学计算机学院副教授

Docker 在公司多个项目中正式上线,目前运行稳定,在系统的关键节点使用 Docker 容器集群来快速扩展计算能力效果显著。本书作者之一戴王剑前期的充分调研和测试功不可没。

——徐勋业

浙江中正智能科技有限公司副总裁

本书详细介绍了 Docker 的发展历史、作用、部署方法和应用案例,文笔流畅,通俗易懂,对促进开源软件和虚拟化技术发展很有意义,对加强信息化在各行业的应用有较大的参考价值。

——杨传斌

浙江师范大学计算机学院教授

作者简介:

杨保华 博士,清华大学毕业,现为 IBM 中国研究院研究员。主要从事数据中心网络解决方案的研发与部署,技术方向包括云计算、软件定义网络(SDN)、网络安全等,是国内较早从事 SDN 和网络虚拟化相关技术的推广者,同时也是 DockerPool 开源社区的发起人之一。

戴王剑 资深架构师,多年来一直从事计算机网络、服务器架构设计,负责过多个省级项目的架构设计。热衷开源事业,是 DockerPool 开源社区的发起人之一。

曹亚仑 85后,全栈 Web 开发者,擅长并专注于 SaaS 系统架构设计与研发, 兴趣为 PaaS 和智能可穿戴设备。出版有译著《Arduino 无线传感器网络实践指南》以及开源图书《程序员禅修指南》。

《Docker技术入门与实战(第2版)》epub下载在线阅读,求百度网盘云资源

《Docker技术入门与实战(第2版)》(杨保华)电子书网盘下载免费在线阅读

链接:

提取码:d811

书名:Docker技术入门与实战(第2版)

作者:杨保华

豆瓣评分:7.7

出版社:机械工业出版社

出版年份:2017-3-1

内容简介:

本书从Docker基本原理开始,深入浅出地讲解Docker的构建与操作,内容系统全面,可帮助开发人员、运维人员快速部署Docker应用。本书分为四大部分:基础入门、实战案例、进阶技能、开源项目,第一部分(第1~8章)介绍Docker与虚拟化技术的基本概念,包括安装、镜像、容器、仓库、数据卷,端口映射等;第二部分(第9~16章)通过案例介绍Docker的应用方法,包括与各种操作系统平台、SSH服务的镜像、Web服务器与应用、数据库的应用、各类编程语言的接口、容器云等,还介绍了作者在容器实战中的思考与经验总结;第三部分(第17~21章)是一些进阶技能,如Docker核心技术实现原理、安全、高级网络配置、libernetwork插件化网络功能等;第四部分(第22~28章)介绍与容器开发相关的开源项目,包括Etcd、Docker Machine、Docker Compose、Docker Swarm、Mesos、Kubernetes等。

第2版参照Docker技术的*新进展对全书内容进行了修订,并增加了第四部分专门介绍与容器相关的知名开源项目,利用好这些优秀的开源平台,可以更好地在生产实践中受益。

作者简介:

杨保华:博士,毕业于清华大学,现为 IBM 资深研究员。主要负责核心系统方案的架构设计和研发,包括云计算、大数据、金融科技等领域。他热爱开源文化,是容器、软件定义网络、区块链等开源技术的早期推广者,曾为 OpenStack、HyperLedger 等开源项目作出了贡献。个人主页为 。

戴王剑:资深架构师,多年来一直从事系统平台、计算机网络、服务器架构设计,负责过多个省级项目的架构设计。热衷于开源事业,积极推动开源技术在生产实践中的应用。

曹亚仑:阿里云高级系统工程师(花名法喜),上云架构师,擅长云产品运维与云平台技术保障,对PaaS、IaaS层架构设计与实践有较丰富的实战经验。同时也是DevOps实践者与全栈开发者。微信allengaller,个人主页为allengaller.github.io。

本文转载自互联网,如有侵权,联系删除

相关推荐