Docker

A collection of 7 posts

Docker

Bamboo 原理分析

原理简介 Bamboo 为了 DO/CS 系统提供了服务自动发现的功能,当 Marathon 上部署了一个应用,Bamboo 能够将应用下所有的容器的端口更新到 HAProxy 的配置文件中,并且 reload HAProxy,从而实现应用的服务自动发现,并且利用 HAProxy 做应用中容器的负载均衡。 Bamboo 主要的原理就是利用 Marathon 的 Event-Bus API,当 Marathon 上的应用发生改变(scaling)时,Event-Bus 会通知对应的 Subscriber (Bamboo),然后 Subscriber 会做出对应的操作。 除了 Bamboo,还有 Marathon-lb 也是类似的原理。 源码分析

Docker

减小 Docker 镜像体积

最近遇到了 Docker 镜像体积过大的问题,对于部署、移交相当麻烦和慢。于是就抽点时间研究下了怎么减小 Docker 镜像的体积。 下面我以手动编译 nginx 镜像作为例子来减小镜像体积,nginx 的版本是 1.10.2,并且下载到了当前目录。 下图是各种 Dockerfile 制作出镜像的效果 替换基础镜像 基于 centos 的镜像 基于 Alpine 的镜像 移除 build 依赖的文件 centos 基础镜像的依赖 Alpine 基础镜像的依赖 减少镜像层级 centos Alpine 大文件测试 通过 COPY 通过 wget 其他 Python

Docker

Docker Registry V2 Auth Server

由于工作原因,最近研究了下 Docker Registry V2 (以下内容如无特别说明,Registry 均指 Docker Registry V2)的私有化(这里所指的私有化并不是指的私有仓库,而是在私有云里面面向内部的共有仓库,并且对外隔离的)的定制化开发。 Registry 是 Docker 官方提供的镜像仓库,官方的 Docker Hub 就是基于 Registry 的,Registry 分为 V1 和 V2,V1 是我大爱的 Python 的写的,V2 是我现在大爱的 Golang 开发的,由于 V1 已经被官方抛弃了,所以目前的定制化是基于 V2

Docker

用 Docker 部署 Python Web Application

Tips: 下面的部分链接中带有小尾巴,谨点 去年的时候从阿里云捻过一次羊毛(云翼计划,如果愿意,可以是用我的阿里云推荐码,z9xy74 ),如今一年已过,这个服务器也过期了,但是上面跑了一个微信企业号的应用在,由于有一直在使用的需求,不能停止,但是阿里云的羊毛是青岛节点,延迟高,而且现在到期了,默认变成了按流量付费,顿时觉得随时会少一套房子了。于是重新买了一个阿里云的华东节点,准备迁移过来,并且也准备把 DigitalOcean 上的部分应用迁移回国。 Docker 环境的准备 镜像的初始化 MySQL Redis Web Application Nginx 和之前的比较 一些问题 参考 # Docker 环境的准备 使用阿里云提供的 [docker-engine](http://mirrors.aliyun.com/help/docker-engine)

Tornado

使用 Tornado 实现 Docker 容器的 exec

因为工作项目的需求,研究了一下 WebSSH。 实现原理 通过 Docker cli 运行 bash 通过 Docker API 运行 bash 创建一个 exec 实例 执行 exec 实例 与前端结合实现 WebSSH 参考 # 实现原理 由于某些时候,需要通过某种方式进入到容器内部里面去执行一些操作,一般容器并没有提供 SSH 服务,但是有些容器提供了 `bash`,可以通过执行 `bash` 进入到一个交互式的 `shell` 中,执行一些操作。 # 通过 Docker cli 运行 bash 首先,是可以通过

Docker

Docker Cluster with Swarm

最近因为工作的原因,需要用到 Docker,并且搭建 Docker Cluster(集群),然后首先学习了一下 Docker Swarm,这里做一下记录。 准备工作 制作基础镜像 初始化多台虚拟机 Docker Swarm 发现服务 Docker Hub Consul 参考 #准备工作 由于是在本机模拟集群,所以我采用的是 Vagrant 和 VirtualBox 创建虚拟机来模拟集群。 假设本机已经装好了 Vagrant。 ##制作基础镜像 本次模拟我采用的虚拟机系统是 Ubuntu 14.04,本来是应该通过下面命令完成的 ```bash vagrant init ubuntu/trusty64; vagrant up --provider