0x00 概述 自己编写 Dockerfile 能够很好的实现我们想要的程序运行环境,不过如果装有我们想要环境的镜像已经由热心的开发者构建好并共享在 Docker Hub 上,直接使用它们就会远比自己编写 Dockerfile 并进行构建要来的简单的多了.事实上,在开发过程中我们用到的镜像大部分还是直接采用 Docker Hub 中已经存在的镜像的,即使自己编写 Dockerfile,也只是对已有镜像进行简单的改动,很少会从零开始搭建镜像.在这一节中,我们要来看看如何更好地使用 Docker H…
0x00 概述 通过阅读之前的小节,相信大家对 Docker 在开发中的应用已经有了一定的了解.作为一款实用的软件,我们必须回归到实践中来,这样才能更好地理解 Docker 的实用逻辑和背后的原理.在这一小节里,我们就举一个完整的例子,让大家跟随这个项目的脉络,熟悉如何通过 Docker 和 Docker Compose 来搭建应用开发环境. 0x01 设计项目的目录结构 在这一小节里,我们以一个由 MySQL.Redis.PHP-FPM 和 Nginx 组成的小型 PHP 网站为例,介绍通过…
0x00 概述 既然 Docker 是一款实用软件,我们就不得不先从它的安装说起,只有让 Docker 运行在我们的计算机上,才能更方便我们对 Docker 相关知识和使用方式的学习.得益于与商业性的优雅结合,Docker 背后拥有大量的优秀开发者为其提供技术支持,而这个优势所造就的结果之一,就是 Docker 拥有丰富且完善的安装体系,我们可以很轻松的通过多种方式安装和运行 Docker. 0x01 安装前的准备 由于 Docker 容器实现本身就采用了 Linux 内核中很多的特性,所以它自…
前言 Docker不仅是一个强大的服务器部署工具,而且它还有一个官方的Docker Hub registry用于储存Docker镜像.上传镜像到Docker Hub是免费的,上传的镜像文件同时也对公共领域开放,而这可能不是我们想要的. 本文介绍如何配置一个私有的Docker registry,在此上传的镜像是私密的,你可以从另一个联网的主机以安全的方式下载此registry上的镜像. 本文仅介绍registry的创建,而不讨论应用的容器化.有关Docker镜像创建的操作可参考这篇Docker入门…
Docker的核心组件包括: Docker客户端和服务器,也称为Docker引擎: Docker镜像: Registry: Docker容器. 1.Docker客户端和服务器 Docker是一个客户端/服务器(C/S)架构的程序.Docker客户端只需向服务器或守护进程发出请求,服务器或守护进程将完成所有工作并返回结果.Docker守护进程又是也称为Docker引擎.Docker提供了一个命令行工具docker以及一整套RESTful API来与守护进程交互.用户可以在统一台主机上运行Docke…
一.帮助命令: 1.查看版本:docker version 2.查看信息:docker info 3.查看帮助信息:docker --help 二.镜像命令: (一).查看已有镜像: 1.命令:docker images 2.option说明: (1)-a 列出本地所有的镜像(含中间映像层) (2)-q 只显示镜像ID (3)--digests 显示镜像的摘要信息 (4)--no-trunc 显示完整的镜像信息 (二).查看docker hub 上的镜像: 1.命令:docker search…
一.docker原理 1.什么是docker:解决了运行环境和配置问题的容器,方便做持续集成并有助于整体发布的容器虚拟化技术. 2.虚拟机的缺点:(1)资源占用多:(2)冗余步骤多:(3)启动慢,分钟级. 3.容器:容器不需要捆绑一整套操作系统,只需要打包软件工作所需的库资源和设置,可以看做是小型的.浓缩版的Linux系统. 4.容器与传统虚拟化技术的区别: (1)容器启动更便捷:传统虚拟机技术要虚拟出一套硬件,在其上运行一个完整的操作系统,再运行所需的应用进程:而容器内的应用进程直接运行于宿主…
安装好docker后,需要启动docker守护进程.有多种启动方式. 一.服务的方式 因为docker守护进程被安装成服务.所以,可以通过服务的方式启停docker守护进程,包括查看状态. sudo start docker  //启动 sudo stop docker  //停止 sudo status docker  //查看状态 二.利用docker daemon命令 sudo docker daemon 利用sudo ps -A 可以获取守护进程的进程号 三.让远程api可以访问dock…
0x00 概述 通过之前的介绍,我们已经基本掌握了构建.运行容器的方法,但这还远远不够,由于 Docker 采用轻量级容器的设计,每个容器一般只运行一个软件,而目前绝大多数应用系统都绝不是一个软件所能组成的.虽然我们之前提到了容器间互相连接.交换数据的各种方法,通过这些方法足以搭建起完整的用于应用系统运行的容器群,但是这显然还不够,这个容器群的搭建需要执行太多命令,更重要的是需要考虑太多应用和容器间的依赖关系处理,是一波令人头大的操作.在这一节中,我们就来介绍如何解决这些问题. 0x01 解决容…
0x00 概述 在掌握 Docker 的一些背景知识后,我们还不得不花费一节的篇幅来简单介绍有关 Docker 核心的一些知识.当然,大家不要觉得有“核心”这类的词,我们就要在这一节中深入 Docker 底层去讲解原理性的东西,更确切的说这一节更像一张词汇表,在掌握这些与 Docker 紧密相关的词汇后,大家可以更好的理解之后小节中的内容. 0x01 四大组成对象 在之前的小节里,我们提到了 Docker 实现容器引擎的一些技术,但那些都是一些相对底层的原理实现,在 Docker 将它们封装后,…