基础知识与准备:
一、基础知识:
1.Docker runtime
runtime是容器真正运行的地方。借助JAVA中JVM的概念来理解。
lxc、runc、rkt是目前主流的三种容器runtime。
- lxc是Linux上老牌的容器runtime。Docker最初也是用lxc作为runtime的。
- runc是Docker自己开发的runtime。目前Docker的默认runtime。符合oci规范。
- rkt是CoreOS开发的容器runtime。符合oci规范,因而能够运行Docker的容器。
2.容器管理工具
lxd是lxc对应的管理工具。
runc的管理工具是Docker engine,包括后台deamon和cli两部分,我们通常提到的Docker一般就是指docker engine。
rkt的管理工具是rkt cli。
3.容器定义
docker image是Docker容器的模板,runtime根据docker image来创建容器。
dockerfile是包含若干个命令的文本文件,可以通过该文件创建出docker image。
定义过程:dockerfile--->docker image--->container
4.容器仓库(Registry)
Registry分为共有和私有两种:
Docker Registry :私有仓库
Docker Hub:共有仓库(私有收费)
Quay.io :另一个共有仓库
5.容器OS
除了在传统的Linux、MACOS、Windows上运行容器,目前也存在一些容器OS,例如CoreOS、Atomic、Ubuntu Core等。
比如传统操作系统,容器操作系统体积更小,启动更快。
6.容器平台
1.容器编排引擎:docker swarm、kubernetes、mesos+marathon等。
2.容器管理平台:Rancher、ContainerShip等。
3.基于容器的PaaS:Deis、Flynn、Dokku等。
7.容器网络
docker network
flannel
weave
calico
8.服务发现
etcd
consul
zookeeper
9.监控
docker ps/top/stats
docker stats API
sysdig
cAdvisor/Heapster
Weave Scope
10.数据管理、日志管理和安全性
数据管理:REX-Ray
日志管理:docker logs、logspout
安全性:OpenSCAP
二、实验环境准备
1.环境选择
管理工具:Docker engine
runtime:runc,Docker默认runtime
操作系统:Ubuntu16.04
2.安装Docker(Docker CE版,即Community Edition社区版,Docker EE为Enterprise Edition收费版)
- Ubuntu主机能够上网
- 更新国内apt源(例如aliyun的源)
- 安装包,允许apt命令HTTPS访问Docker源:sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
- 添加Docker官方GPG key:curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 将Docker的源添加到/etc/apt/source.list中:sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- 安装Docker:sudo apt-get update & sudo apt-get install docker-ce
3.运行第一个容器
sudo docker run -d -p 80:80 httpd
上述命令中-d代表在后台运行容器,-p表示端口映射(容器端口80映射到host的端口80),httpd为docker image名。
使用host的浏览器输入http://localhost:80,显示It works,表示容器运行成功。
4.镜像下载加速
如果docker在下载镜像时很慢(服务器在国外)可以按以下步骤使用代理:
- 在daocloud.io注册一个用户
- 登录后在菜单中点击“加速器”
- 复制命令在host中执行
- 重启docker deamon。sudo systemctl restart docker.service
容器使用:
一、构建镜像
构建镜像有两种方式:docker commit和利用dockerfile来创建。
docker commit:
1.运行容器。
2.修改容器。
3.将容器保存为新的镜像。
过程:
hanxinda@ubuntu:~$ sudo docker run -it ubuntu
root@98c2e3571740:/# apt-get install -y vim