php源码分享网站建设教程,php源码分享平台

其实php源码分享网站建设教程的问题并不复杂,但是又很多的朋友都不太了解php源码分享平台,因此呢,今天小编就来为大家分享php源码分享网站建设教程的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2013年发布至今,Docker一直广受瞩目,被认为可能会改变软件行业。

但是,许多人并不清楚Docker到底是什么,要解决什么问题,好处又在哪里?本文就来详细解释,帮助大家理解它,还带有简单易懂的实例,教你如何将它用于日常开发。

一、环境配置的难题

软件开发最大的麻烦事之一,就是环境配置。用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来?

用户必须保证两件事:操作系统的设置,各种库和组件的安装。只有它们都正确,软件才能运行。举例来说,安装一个Python应用,计算机必须有Python引擎,还必须有各种依赖,可能还要配置环境变量。

如果某些老旧的模块与当前环境不兼容,那就麻烦了。开发者常常会说:&34;(Itworksonmymachine),言下之意就是,其他机器很可能跑不了。

环境配置如此麻烦,换一台机器,就要重来一次,旷日费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。

二、虚拟机

虚拟机(virtualmachine)就是带环境安装的一种解决方案。它可以在一种操作系统里面运行另一种操作系统,比如在Windows系统里面运行Linux系统。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。

虽然用户可以通过虚拟机还原软件的原始环境。但是,这个方案有几个缺点。

(1)资源占用多

虚拟机会独占一部分内存和硬盘空间。它运行的时候,其他程序就不能使用这些资源了。哪怕虚拟机里面的应用程序,真正使用的内存只有1MB,虚拟机依然需要几百MB的内存才能运行。

(2)冗余步骤多

虚拟机是完整的操作系统,一些系统级别的操作步骤,往往无法跳过,比如用户登录。

(3)启动慢

启动操作系统需要多久,启动虚拟机就需要多久。可能要等几分钟,应用程序才能真正运行。

三、Linux容器

由于虚拟机存在这些缺点,Linux发展出了另一种虚拟化技术:Linux容器(LinuxContainers,缩写为LXC)。

Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离。或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。

由于容器是进程级别的,相比虚拟机有很多优势。

(1)启动快

容器里面的应用,直接就是底层系统的一个进程,而不是虚拟机内部的进程。所以,启动容器相当于启动本机的一个进程,而不是启动一个操作系统,速度就快很多。

(2)资源占用少

容器只占用需要的资源,不占用那些没有用到的资源;虚拟机由于是完整的操作系统,不可避免要占用所有资源。另外,多个容器可以共享资源,虚拟机都是独享资源。

(3)体积小

容器只要包含用到的组件即可,而虚拟机是整个操作系统的打包,所以容器文件比虚拟机文件要小很多。

总之,容器有点像轻量级的虚拟机,能够提供虚拟化的环境,但是成本开销小得多。

四、Docker是什么?

Docker属于Linux容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的Linux容器解决方案。

Docker将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了Docker,就不用担心环境问题。

总体来说,Docker的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

五、Docker的用途

Docker的主要用途,目前有三大类。

(1)提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。

(2)提供弹性的云服务。因为Docker容器可以随开随关,很适合动态扩容和缩容。

(3)组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。

六、Docker的安装

Docker是一个开源的商业产品,有两个版本:社区版(CommunityEdition,缩写为CE)和企业版(EnterpriseEdition,缩写为EE)。企业版包含了一些收费服务,个人开发者一般用不到。下面的介绍都针对社区版。

DockerCE的安装请参考官方文档。

Mac

Windows

Ubuntu

Debian

CentOS

Fedora

其他Linux发行版

安装完成后,运行下面的命令,验证是否安装成功。

$dockerversionservice命令的用法$sudoservicedockerstart列出本机的所有image文件。$dockerimagels34;helloworld&列出本机正在运行的容器$dockercontainerls或者$dockerimagebuild-tkoa-demo:0.0.1.

上面代码中,-t参数用来指定image文件的名字,后面还可以用冒号指定标签。如果不指定,默认的标签就是latest。最后的那个点表示Dockerfile文件所在的路径,上例是当前路径,所以是一个点。

如果运行成功,就可以看到新生成的image文件koa-demo了。

$dockerimagels

生成容器

dockercontainerrun命令会从image文件生成容器。

$dockercontainerrun-p8000:3000-itkoa-demo/bin/bash

这表示你已经在容器里面了,返回的提示符就是容器内部的Shell提示符。执行下面的命令。

root@66d80f4aaf1e:/app34;NotFound&在本机的另一个终端窗口,查出容器的ID$dockercontainerls查出容器的ID$dockercontainerls–all实例$dockerimagetagkoa-demos:0.0.1ruanyf/koa-demos:0.0.1

也可以不标注用户名,重新构建一下image文件。

$dockerimagebuild-t[username]/[repository]:[tag].

最后,发布image文件。

$dockerimagepush[username]/[repository]:[tag]

发布成功以后,登录hub.docker.com,就可以看到已经发布的image文件。

十一、其他有用的命令

docker的主要用法就是上面这些,此外还有几个命令,也非常有用。

(1)dockercontainerstart

前面的dockercontainerrun命令是新建容器,每运行一次,就会新建一个容器。同样的命令运行两次,就会生成两个一模一样的容器文件。如果希望重复使用容器,就要使用dockercontainerstart命令,它用来启动已经生成、已经停止运行的容器文件。

$dockercontainerstart[containerID]

(2)dockercontainerstop

前面的dockercontainerkill命令终止容器运行,相当于向容器里面的主进程发出SIGKILL信号。而dockercontainerstop命令也是用来终止容器运行,相当于向容器里面的主进程发出SIGTERM信号,然后过一段时间再发出SIGKILL信号。

$dockercontainerstop[containerID]

这两个信号的差别是,应用程序收到SIGTERM信号以后,可以自行进行收尾清理工作,但也可以不理会这个信号。如果收到SIGKILL信号,就会强行立即终止,那些正在进行中的操作会全部丢失。

(3)dockercontainerlogs

dockercontainerlogs命令用来查看docker容器的输出,即容器里面Shell的标准输出。如果dockerrun命令运行容器的时候,没有使用-it参数,就要用这个命令查看输出。

$dockercontainerlogs[containerID]

(4)dockercontainerexec

dockercontainerexec命令用于进入一个正在运行的docker容器。如果dockerrun命令运行容器的时候,没有使用-it参数,就要用这个命令进入容器。一旦进入了容器,就可以在容器的Shell执行命令了。

$dockercontainerexec-it[containerID]/bin/bash

(5)dockercontainercp

dockercontainercp命令用于从正在运行的Docker容器里面,将文件拷贝到本机。下面是拷贝到当前目录的写法。

$dockercontainercp[containID]:[/path/to/file].

Docker是一个容器工具,提供虚拟环境。很多人认为,它改变了我们对软件的认识。

站在Docker的角度,软件就是容器的组合:业务逻辑容器、数据库容器、储存容器、队列容器……Docker使得软件可以拆分成若干个标准化容器,然后像搭积木一样组合起来。

这正是微服务(microservices)的思想:软件把任务外包出去,让各种外部服务完成这些任务,软件本身只是底层服务的调度中心和组装层。

微服务很适合用Docker容器实现,每个容器承载一个服务。一台计算机同时运行多个容器,从而就能很轻松地模拟出复杂的微服务架构。

下面我们介绍一下如何在一台计算机上实现多个服务,让它们互相配合,组合出一个应用程序。

我选择的示例软件是WordPress。它是一个常用软件,全世界用户据说超过几千万。同时它又非常简单,只要两个容器就够了(业务容器+数据库容器),很适合教学。而且,这种&34;的容器架构,具有通用性,许多应用程序都可以复用。

为了加深读者理解,本文采用三种方法,演示如何架设WordPress网站。

方法A:自建WordPress容器

方法B:采用官方的WordPress容器

方法C:采用DockerCompose工具

十二、预备工作:image仓库的镜像网址

本教程需要从仓库下载image文件,但是国内访问Docker的官方仓库很慢,还经常断线,所以要把仓库网址改成国内的镜像站。这里推荐使用官方镜像registry.docker-cn.com。下面是我的Debian系统的默认仓库修改方法,其他系统的修改方法参考官方文档。

打开/etc/default/docker文件(需要sudo权限),在文件的底部加上一行。

DOCKER_OPTS=&34;

然后,重启Docker服务。

$sudoservicedockerrestart

现在就会自动从镜像仓库下载image文件了。

十三、方法A:自建WordPress容器

前面说过,本文会用三种方法演示WordPress的安装。第一种方法就是自建WordPress容器。

官方的PHPimage

首先,新建一个工作目录,并进入该目录。

$mkdirdocker-demo&&cddocker-demo

然后,执行下面的命令。

$dockercontainerrun\\–rm\\–namewordpress\\–volume&34;:/var/www/html\\php:5.6-apache

上面的命令基于php的image文件新建一个容器,并且运行该容器。php的标签是5.6-apache,说明装的是PHP5.6,并且自带Apache服务器。该命令的三个参数含义如下。

–rm:停止运行后,自动删除容器文件。

–namewordpress:容器的名字叫做wordpress。

–volume&34;:/var/www/html:将当前目录($PWD)映射到容器的/var/www/html(Apache对外访问的默认目录)。因此,当前目录的任何修改,都会反映到容器里面,进而被外部访问到。

运行上面的命令以后,如果一切正常,命令行会提示容器对外的IP地址,请记下这个地址,我们要用它来访问容器。我分配到的IP地址是172.17.0.2。

打开浏览器,访问172.17.0.2,你会看到下面的提示。

ForbiddenYoudon&34;$PWD/&34;现在就开始!&34;下一步&34;$PWD/wordpress&34;$PWD/wordpress&启动所有服务$docker-composeup34;127.0.0.3:8080:80″working_dir:/var/www/htmlvolumes:-wordpress:/var/www/html

上面代码中,两个顶层标签表示有两个容器mysql和web。每个容器的具体设置,前面都已经讲解过了,还是挺容易理解的。

启动两个容器。

$docker-composeup

浏览器访问http://127.0.0.3:8080,应该就能看到WordPress的安装界面。

现在关闭两个容器。

$docker-composestop

关闭以后,这两个容器文件还是存在的,写在里面的数据不会丢失。下次启动的时候,还可以复用。下面的命令可以把这两个容器文件删除(容器必须已经停止运行)。

$docker-composerm

关于php源码分享网站建设教程,php源码分享平台的介绍到此结束,希望对大家有所帮助。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平