docker 部署web应用

一、创建网络

创建一个指定子网ip的网络

docker network create --subnet=192.168.0.0/16 --gateway=192.168.0.1 -o com.docker.network.bridge.default_bridge=true -o com.docker.network.bridge.enable_icc=true -o com.docker.network.bridge.enable_ip_masquerade=true -o com.docker.network.bridge.host_binding_ipv4=0.0.0.0 -o com.docker.network.driver.mtu=1500 mynet

官网配置

阅读更多

docker入门

学习docker,首先需要了解Docker的三个基本概念:
1、镜像(Image):类似于虚拟机中的镜像,是一个包含有文件系统的面向Docker引擎的只读模板。任何应用程序运行都需要环境,而镜像就是用来提供这种运行环境的。例如一个Ubuntu镜像就是一个包含Ubuntu操作系统环境的模板,同理在该镜像上装上Apache软件,就可以称为Apache镜像。
2、容器(Container):类似于一个轻量级的沙盒,可以将其看作一个极简的Linux系统环境(包括root权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序。Docker引擎利用容器来运行、隔离各个应用。容器是镜像创建的应用实例,可以创建、启动、停止、删除容器,各个容器之间是是相互隔离的,互不影响。注意:镜像本身是只读的,容器从镜像启动时,Docker在镜像的上层创建一个可写层,镜像本身不变。
3、仓库(Repository):类似于代码仓库,这里是镜像仓库,是Docker用来集中存放镜像文件的地方。注意与注册服务器(Registry)的区别:注册服务器是存放仓库的地方,一般会有多个仓库;而仓库是存放镜像的地方,一般每个仓库存放一类镜像,每个镜像利用tag进行区分,比如Ubuntu仓库存放有多个版本(12.04、14.04等)的Ubuntu镜像。

docker_icon

阅读更多

wxPython 教程(十六) wxPython 俄罗斯方块

转自:http://thisis.yorven.site/blog/index.php/2017/10/12/wxpython-eluosifangkuai/

俄罗斯方块是最受欢迎的电脑游戏之一,它最初是由一个俄罗斯程序员 Alexey Pajitnov 在 1985 年设计编写的。从那以后,各种俄罗斯方块就成了几乎每个电脑必装的游戏。本节讲述 wxPython 俄罗斯方块 游戏的编写。

俄罗斯方块是一种下落方块的拼图游戏。在这个游戏中,我们有 7 个不同的 tetrominoes :S 形、Z 形、T 形、L 形、线形、反 L 形、正方形。每一个都是由 4 个小方块构成的,它们会从顶端下落,玩家的目标是通过移动和旋转这些形状来使得它们更契合的堆放在最下面。如果有一行被填满,则会消去一行并得到一定分数。直到方块堆积到顶部无法继续下落时,游戏结束。

俄罗斯方块的四格拼板

阅读更多

wxPython 教程(十五) wxPython Gripts

转自:http://thisis.yorven.site/blog/index.php/2017/10/12/wxpython-gripts/

本节中,我们将展示一些简单但完整的脚本,这些图形脚本也叫做 gripts 将展示不同的编程领域应用。

我们一共展示 3 个 wxPython gripts 。第一个发送 email 消息,第二个连接至匿名 FTP 账户并展示一个已连接或未连接图像,最后一个创建一个拼图游戏。

阅读更多

wxPython 教程(十三) 自定义控件

转自:http://thisis.yorven.site/blog/index.php/2017/10/11/wxpython-custom-widget/

本节讲述 wxPython 自定义控件 。GUI Toolkits 会提供多数常用的部件,比如按钮、文本控件、滚动条、滑块等等。wxPython 也会提供很多控件,但若需要更定制化的控件还是需要开发者自己编写。

自定义控件通过两种方式创建:一种是通过修改或增强现有控件,另一种是我们从零开始直接创建。

阅读更多

wxPython 教程(十二) GDI

转自:http://thisis.yorven.site/blog/index.php/2017/10/11/wxpython-gdi/

本节讲述 wxPython GDI 。GDI (图形设备接口) 是一个处理图形的接口,可以用它来和图形设备比如屏幕、打印机或者文件来进行交互。GDI 允许编程者在屏幕或打印机上来展示数据,而无需考虑具体设备的细节。GDI 将编程者和硬件隔离开来。

从编程者的角度来看,GDI 是处理图形的一组类和方法。GDI 包括 2D 向量图形、字体和图片。

GDI 结构

为了开始绘制图形,我们首先需要创建一个 device context (DC) 对象。在 wxPython 中,device context 即 wx.DC,它使用一个通用的方式来代表多种设备。有些相同的代码可以在多种设备上使用,比如屏幕或打印机。wx.DC 一般不直接使用,编程者一般使用某种衍生类,每一个衍生类可在特定情况下使用。

wx.DC 衍生类

  • wx.BufferedDC
  • wx.BufferedPaintDC
  • wx.PostScriptDC
  • wx.MemoryDC
  • wx.PrinterDC
  • wx.ScreenDC
  • wx.ClientDC
  • wx.PaintDC
  • wx.WindowDC

wx.ScreenDC 是用来在屏幕任意地方绘制图形的。wx.WindowDC 是用来在整个屏幕上绘制的(仅限 Windows 系统)。wx.ClientDC 用来在窗口的 client 区域进行绘制, client 区域是指除了装饰(标题栏和边框)的窗口部分。wx.PaintDC 也是在 client 区域绘制,但它和 wx.ClientDC 存在不同。wx.PaintDC 应该只用在 wx.PaintEvent 来源的情况下,而 wx.ClientDC 则不能。wx.MemoryDC 用来在 bitmap 上绘制图形。wx.PostScriptDC 被用来在任意平台上写入 POSTScript 文件。wx.PrinterDC 被用来操作打印机(仅限 Windows 系统)。

阅读更多

wxPython 教程(十) 国际化

转自:http://thisis.yorven.site/blog/index.php/2017/10/10/wxpython-jiaocheng-shi-guojihua/

国际化和本地化是电脑软件适应非本地环境的方法,尤其是在其他国家和文化环境下。国际化是指确保一个应用能够适应本地的需求,比如保证本地的书写系统可以展示。本地化则是指将应用尽可能的适应特定地域,使用当地语言、当地习惯等等。本节主要讲解 wxPython 国际化 问题。

阅读更多

wxPython 教程(九) wxPython 拖拽

转自:http://thisis.yorven.site/blog/index.php/2017/10/09/wxpython-tuozhuai/

维基百科:在电脑图形用户界面里,拖拽是指点击一个虚拟对象并拖移至另一个位置或者另一个虚拟对象之上。一般来说,它可以被用来发起多种行为,或者创建两个抽象对象之间的各种关联。
拖拽是图形用户界面中最显眼的操作,通过它可以做很多复杂的事情。
在拖拽中,我们将一些数据从一个源位置移动到目标位置,所以我们必须有:

  • 一些数据
  • 一个数据来源
  • 一个数据目标

在 wxPython 中,我们有两个预定义的数据目标:wx.TextDropTarget 和 wx.FileDropTarget。

阅读更多

wxPython 教程(八) wxPython 高级 widgets

转自:http://thisis.yorven.site/blog/index.php/2017/10/09/wxpython-jiaocheng-gaoji-widgets/

动态语言使用简单,非常便于原型设计、内部开发以及学习编程。如果需要快速的解决方案或者在短期内就会更改的应用,使用动态语言更优于编译语言。相反,如果我们开发资源密集型应用、游戏以及高质量多媒体应用,那么使用 C 是最正确的选择。
本节,主要讲解多个 wxPython 高级 widgets 。wxPython 有很多有名的高级 widgets, 比如 树形 widget、HTML 窗口、 网格 widget、列表框 widget 甚至具有高级样式编排能力的编辑器 widget。

阅读更多

wxPython 教程(六) 对话框

转自:http://thisis.yorven.site/blog/index.php/2017/09/22/wxpython-jiaocheng-duihuakuang/

对话框即 Dialog 是多数 GUI 应用不可缺少的部分。“对话”是指两个或更多人之间的交谈。在电脑应用中,对话框是指一个可以和应用交流的窗口,可以用来输入数据、修改数据、修改应用设置等。因此,对话框是用户和电脑程序交流的重要手段。本节我们主要对 wxPython 对话框 进行讲解。

阅读更多

wxPython 教程(五) 事件

转自:http://thisis.yorven.site/blog/index.php/2017/09/22/wxpython-jiaocheng-shijian/

事件是每个 GUI 应用所必须的组成部分,所有的 GUI 应用都是事件驱动的。在应用的生命周期内,需要对各种不同类型的时间做出反应。事件主要来自于应用用户的操作触发,但也可以来源于其他方式:网络连接、窗口管理、定时器等。在应用一开始,我们调用MainLoop()函数,这使得应用开始等待处理所有将生成的事件,直到我们退出程序。本节,我们将讨论 wxPython 事件 相关知识。

阅读更多