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主要结构:
- 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里内容如下:
- 指定基于哪个image
FROM docker/whalesay:latest
- image中需要安装的应用
RUN apt-get -y update && apt-get install -y fortunes
- 指定运行的应用
CMD /usr/games/fortune -a | cowsay
- 基于Dockerfile生成image
在Dockerfile所在目录执行下面
command
:
sudo docker build -t docker-whale .
上面command
会根据Dockerfile生成一个名为docker-whale
的image
- 运行上面创建的imgae
sudo docker run docker-whale
- 其他Docker命令
docker ps
- 列出运行的containerdocker 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基本组成
- Pod
Pod是一个或多个Container组成的,共同管理, 可以使用下面命令来创建Pod
kubectl run hello-node --image=gcr.io/PROJECT_ID/hello-node:v1 --port=8080
Kubernetes命令和Docker类似, 比如:
- 可以使用
kubectl get pods
来查看创建的Pod - 可以使用
kubectl logs <POD-NAME>
来查看Pod的标准输入输出
- Service
Service 是一组Pod以及相关的访问接口集合