Docker and Kubernetes Getting Start

Fork me on GitHub
  

What is Docker

At its core, Docker provides a way to run almost any application securely isolated in a container. The isolation and security allow you to run many containers simultaneously on your host. The lightweight nature of containers, which run without the extra load of a hypervisor, means you can get more out of your hardware.

这是Docker官网上描述,我们可以把它理解成一种轻量级的虚拟化。

Docker官网的Client-Server architecture图: docker architecture

可以看到Docker主要结构:

  • The Docker Daemon : 守护进程,不与用户直接交互。
  • The Docker Client : 客户端, 负责用户交互以及和守护进程的通信
  • Inside Docker : Docker内部又是由 Docker Images , Docker Registries , Docker Containers 组成。
    • Docker Images : 只读,提供实际需要运行的程序
    • Docker Registry : 是 Docker Image 的仓库,提供upload和download功能
    • Docker Container : Docker提供的 Docker Image 上指定需要运行的程序

可以把 Docker Images 类比成App, Docker Registry 当成App Store, Docker Container 就是安装之后的App。

Installation

对于Docker安装相关问题,可以查询docker官网. 按照上面要求安装一般不会有什么问题.

  • 对于Ubuntu 14.04 LTS,可以通过下面command来安装:
## first add docker GPG key to apt
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
## then add docker source to apt
echo 'deb https://apt.dockerproject.org/repo ubuntu-trusty main' > /etc/apt/sources.list.d/docker.list
## download and install docker engine
sudo apt-get update
sudo apt-get install docker-engine

  • 然后可以启动Docker
sudo service docker start
  • 测试Docker是否安装成功
sudo docker run hello-world

Basic Usage/Perception

Docker使用到的底层技术

  • Namespace

Docker利用Namespace来创建一个隔离的环境或者Container

  • Control Groups

Docker利用Control Group来对Container里的资源(CPU/MEMORY/NETWORKING)来进行限制

  • Union File Systems

Docker利用Union File Systems来轻量化Container

How To Build An Image

  • 创建Dockerfile

Dockerfile描述的是image里应该包含的应用以及环境,Dockerfile里内容如下:

  1. 指定基于哪个image
     FROM docker/whalesay:latest
    
  2. image中需要安装的应用
     RUN apt-get -y update && apt-get install -y fortunes
    
  3. 指定运行的应用
     CMD /usr/games/fortune -a | cowsay
    
  • 基于Dockerfile生成image

Dockerfile所在目录执行下面command:

sudo docker build -t docker-whale .

上面command会根据Dockerfile生成一个名为docker-whaleimage

  • 运行上面创建的imgae
sudo docker run docker-whale
  • 其他Docker命令
    • docker ps - 列出运行的container
    • docker logs - 输出container标准输出
    • docker stop - 停止运行的Docker

What is Kubernetes ?

an open-source system for automating deployment, scaling, and management of containerized applications.It groups containers that make up an application into logical units for easy management and discovery

官网上是这样描述的。简而言之, 我们可以把Kubernetes当成Docker的一个管理工具。下面图描述了Kubernetes的工作状态: Kubernetes

Kubernetes基本组成

  • Pod

    Pod是一个或多个Container组成的,共同管理, 可以使用下面命令来创建Pod

kubectl run hello-node --image=gcr.io/PROJECT_ID/hello-node:v1 --port=8080

Kubernetes命令和Docker类似, 比如:

  1. 可以使用kubectl get pods来查看创建的Pod
  2. 可以使用kubectl logs <POD-NAME>来查看Pod的标准输入输出
  • Service

    Service 是一组Pod以及相关的访问接口集合

Reference

  
志飞 /
Published under (CC) BY-NC-SA