Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
如果你对Docker感兴趣,那么你现在可以继续往下翻了。
在使用Docker之前你需要有一点Linux对基础,关于Linux的基础我之前的文章有讲过,就不再细说了。
关于Docker的使用场景
一般是以下的场景:
1、web网站的自动化应用(打包,发布等)
2、自动化测试
3、持续继承,发布
4、在特定环境中部署后台应用,例如数据库等等
为什么使用Docker?
1、使程序更加简单化
开发者可以直接将自己的成果放入Docker中进行管理。
2、节省开支
性能好,价格低廉。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。
容器与镜像的关系类似于面向对象编程中的对象与类。
Docker | 面向对象 |
容器 | 对象 |
镜像 | 类 |
下面介绍Docker里面的几个概念
Images
用于创建 Docker 容器的模板。
Container
container是独立运行的一个或一组应用
Client
执行Docker命令的东西,可以是Docker的API,也可以是Docker客户端
用它来控制Docker。
Registry
这也就是仓库,用来保存Images
Docker Machine
一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker
Docker的安装
小编使用的是阿里云的Ubuntu镜像,所以这里介绍的是Ubuntu环境的Docker安装。
1.获取Docker最新的安装包
$curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
2.安装所需要的包
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
3.添加使用 HTTPS 传输的软件包以及 CA 证书
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates
4.添加GPG密钥
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
5.添加软件源
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
6.添加成功后更新软件包缓存
sudo apt-get update
7.安装docker
sudo apt-get install docker-engine
8.启动Docker服务
$sudo systemctl enable docker
$sudo systemctl start docker
9.运行Docker
$ docker run HelloWorld
如何使用Docker
输入docker可以查看所有的命令选项。
如果想知道某条命令的使用方法可以输入 docker xxx --help
例如我想看build的用方法:
docker build --help
运行一个web应用
将应用拉过来
$docker pull training/webapp
运行
$docker run -P training/webapp python app.py
参数说明:
-p,将container中使用的端口映射到主机上
还可以加其他参数,例如 -d,让container在后台运行
-l,将目标数据设置在container上
如果需要检查web应用程序,可以使用 docker inspect 来查看 Docker 的底层信息
停止web程序的container:
$docker stop xxxxx
启动web程序的container:
$docker start xxxxx
删除这个不需要的container:
$ docker rm xxxxx
关于Docker中的Images:
可以使用docker images来秀出主机上的images(镜像)。
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10、14.04等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
如果需要创建一个心动镜像可以通过pull命令来拉一个新镜像:
docker pull ubuntu:13.10
docker pull httpd
我们还可以使用build指令从零开始创建一个新的镜像
但是在执行build指令之前,我们需要创建一个Dockerfile文件,在这个文件里面是一些配置,告诉Docker要创建怎样的一个镜像。
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。
第一条FROM,指定使用哪个镜像源
RUN 指令告诉docker 在镜像内执行命令,安装了什么
然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。
初步的内容就到这里了