Docker使用笔记

Docker使用笔记

什么是Docker

docker的英文本意是码头工人,也就是搬运工,这种搬运工搬运的是集装箱(Container),
集装箱里面装的可不是商品货物,而是任意类型的App,Docker把App(叫Payload)装在Container内,
通过Linux Container技术的包装将App变成一种标准化的、可移植的、自管理的组件,
这种组件可以在你的latop上开发、调试、运行,最终非常方便和一致地运行在production环境下。

Docker的特点

1. Docker提供了一种可移植的配置标准化机制,允许你一致性地在不同的机器上运行同一个Container;而LXC本身可能因为不同机器的不同配置而无法方便地移植运行;
2. Docker以App为中心,为应用的部署做了很多优化,而LXC的帮助脚本主要是聚焦于如何机器启动地更快和耗更少的内存;
3. Docker为App提供了一种自动化构建机制(Dockerfile),包括打包,基础设施依赖管理和安装等等;
4. Docker提供了一种类似git的Container版本化的机制,允许你对你创建过的容器进行版本管理,依靠这种机制,你还可以下载别人创建的Container,甚至像git那样进行合并;
5. Docker Container是可重用的,依赖于版本化机制,你很容易重用别人的Container(叫Image),作为基础版本进行扩展;
6. Docker Container是可共享的,有点类似github一样,Docker有自己的INDEX,你可以创建自己的Docker用户并上传和下载Docker Image;
7. Docker提供了很多的工具链,形成了一个生态系统;这些工具的目标是自动化、个性化和集成化,包括对PAAS平台的支持等;

为什么使用Docker

1. 打包的开发环境,方便部署和迁移。
2. 对于没有服务器的程序员可以用来模拟集群。
3. 保持开发机器的干净整洁,将数据库、Web服务器这些东西放到Container里。

Mac上使用Docker

直接根据官网教程安装即可,https://docs.docker.com/docker-for-mac/

使用Docker

首先请查看官方的基础教程,移步https://www.docker.io/gettingstarted/

Docker类似Git,可以使用pull命令获取公共镜像。
如我的开发环境需要Mysql,我可以很方便的使用下面的命令获取镜像。

# 查找包含MySql服务的镜像
docker search mysql

# 找到后
docker pull tutum/mysql

# 下载完成后运行, -d 是deamon方式运行,-p 是端口转发
# 命令的意思是后台运行这个Container,并且将CoreOS的3306端口
# 转发到Container的3306端口上
# 宿主机器(Mac)就可以通过mysql -h CoreOS的外网IP -u admin -p
# 连接Mysql服务了
docker run -d -p 3306:3306 tutum/mysql

Docker 常用命令

# 查看所有image
docker images

# 查看正在运行的Container,-l 是最后运行的Container,-a 所有运行的Container
docker ps

# 查看Container的运行信息
docker logs container_id

# 查看Container的配置信息。
docker inspect

#交互式运行shell,就像ssh到Container一样,可以在Container里Do everything
docker run -i -t image_id /bin/bash

# 将对Container的修改提交,定制自己的Image
docker commit container_id image_name

# 删除所有的镜像(慎用)
docker kill $(docker ps -q) ; docker rm $(docker ps -a -q) ; docker rmi $(docker images -q -a)

# 删除所有的Container
docker rm `docker ps -a -q`