Yifei Kong

Jun 17, 2018

使用 docker-compose 编排容器运行

使用 docker run 运行容器的时候经常需要加很多的参数,每次都输入这么多参数很容易出 错。另外我们经常需要同时运行若干个容器来构成一个服务,此时还是涉及到网络的联通等 操作。docker compose 可以把docker执行时的参数写成yaml文件,运行的时候只需要 docker-compose up 一下就可以了。

话不多说,下面通过一个例子来学习一下 docker-compose.yml 文件的语法。

version: "3"
services:
  web:
    build: .
    depends_on:
      - db
      - redis
  redis:
    image: redis
    ports:
     - "3000"
     - "3000-3005"
     - "8000:8000"
     - "9090-9091:8080-8081"
     - "49100:22"
     - "127.0.0.1:8001:8001"
     - "127.0.0 …

Jan 17, 2018

tiller for docker

Yifei's Notes

Tiller SUCKS

The only good part of tiller is that it makes a docker image can read environment variables and generate config files based on predefined templates, this functionality should easily be achieved by python and jinja2

Tiller

tiller runs program such as nginx inside docker instead of …

Jul 14, 2017

Jun 30, 2017

docker 基础概念

Docker 是一个进程的容器,不是虚拟机。他为一个进程隔离了文件系统、网络和环境变量。最好在其中运行一个且仅运行一个线程,而不是运行多个任务。

docker 中最好运行的是无状态的服务,这样方便于横向扩展,对于有状态的服务,建议把状态 mount 出来。

使用场景

  1. 为有不同需求的应用创建不同的隔离环境, 比如部署两个脚本,一个需要用 Python 2.7,另一个需要用 Python 3.6
  2. Micro services. Micro services are easy to scale up. In this way, run only one process in a container, and use orchestration tools such as …

Jun 27, 2017

dockerfile 基础

Dockerfile 列出了构建一个docker image 的可复现步骤。比起一步一步通过 docker commit 来制作一个镜像,dockerfile更适用于CI自动测试等系统。

Dockerfile 命令

  • FROM,指定基础镜像
  • MAINTAINER,作者,建议格式(Jon Snow <jonsnow@westros.com>
  • EXPOSE,需要暴露的端口,但是一般也会使用 -p 来制定端口映射
  • USER,运行的用户
  • WORKDIR,进程的工作目录
  • COPY,复制文件到
  • RUN,运行shell命令
  • CMD,启动进程使用的命令
  • ENTRYPOINT,镜像启动的入口,默认是 bash -c
  • ENV,设定环境变量

几个比较容易混淆的

COPY vs ADD

ADD …