这两天入门下Docker的容器技术,感觉挺实用的,所以记录下学习心得。
Docker是什么?
要了解它是什么,第一步要做的是什么,还用问~,当然是先去官网瞧瞧啊。很明显啊,Docker is the leading Containers As a Service platform.英语不好,别怪我,还等啥,去翻译啊。
所以说Docker其实就是一个容器,容器能干啥,当然放东西喽,能放啥,你想放啥就放啥,任性没办法。记住这三个词:Build,Ship,Run(镜像,仓库,容器)。
特点:跨平台,开源。
Docker思想?
A.集装箱:Docker将应用打包成镜像,就像码头一个个的集装箱一样,安全无丢失的将货物运行到指定码头,所以我们的应用就不会因为人为疏忽而丢失文件之类的问题。
B.标准化:
运输方式的标准化,任何应用统一运行方式(不用QQ,邮件发送,也不用U盘拷贝),我的地盘听我的有木有。
存储方式的标准化,不必关心应用存储在什么地方,想运行或结束,只需要执行命令就可以。
API接口标准化,只需要执行同样的命令就可以控制所有应用的启动运行等。
C.隔离:
这个是啥,搞过虚拟化的人应该都有些理解。虚拟机就有自己独立的CPU,内存,磁盘等。但是呢Docker比虚拟机更轻量化,我们创建虚拟机的时候需要很长时间,不熟练的人,搞半小时也不一定弄好。而Docker的创建只需1秒,对,你没有听错,就是这么神奇。其实它底层的技术是linux的一种限制机制:LXC-轻量级的容器虚拟化技术,以最大的效率隔离了进程,资源。
Docker解决了那些实际问题呢?
Q1:我本地没问题啊,你那是不是环境有问题,还是配置文件啥的没弄好?
A1:解决了运行环境不一致的问题。
Q2:系统好卡,那个哥们写死循环了啊,搞毛啊。
A2:应用之间相互隔离
Q3:双11来了,服务器撑不住了,快去购买几台服务器回来。
A3:Docker命令化,让弹性可扩展,快速可伸缩变得简单。
Docker的核心技术?
Build,Ship,Run(仓库拉或构建镜像,容器运行镜像)
Docker镜像:本质就是一系列的文件(应用,配置),Docker利用分层的技术实现镜像的存储。
Docker容器:本质就是一个进程,镜像运行的地方。
Docker仓库:提供服务的地址,Docker默认是国外的镜像仓库,特慢,国内有名的Docker镜像仓库,如网易蜂巢(c.163.com),如果有实力,也可以自己本地构建镜像仓库。
Docker的安装?
Docker是在Ubuntu上开发的,所以友好的支持Ubuntu系统,反正我用的就是Ubuntu,太爽了有没有。就一句命令搞定的事儿,记得root用户下执行哦。
# apt-get update # apt-get install docker.io
# docker version
Client: Version: 1.10.3 API version: 1.22 Go version: go1.6.1 Git commit: 20f81dd Built: Wed, 20 Apr 2016 14:19:16 -0700 OS/Arch: linux/amd64 Server: Version: 1.10.3 API version: 1.22 Go version: go1.6.1 Git commit: 20f81dd Built: Wed, 20 Apr 2016 14:19:16 -0700 OS/Arch: linux/amd64
Docker常用命令?
1拉取镜像
docker pull [options] ImageName[:TAG] 例如:docker pull hub.c.163.com/public/redis:2.8.4
2查看本地镜像
docker images
3运行镜像
docker run -d -P hub.c.163.com/library/nginx
4查看容器运行
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8722e72dc32e hub.c.163.com/library/nginx "nginx -g 'daemon off" 5 seconds ago Up 4 seconds 0.0.0.0:32769->80/tcp drunk_cray
5停止容器运行
# docker stop CONTAINER ID
Docker网络?
1网络类型
桥接模式bridge,主机模式host,无模式none
2端口映射
可以使用docker port 8722e72dc32e 或docker port determined_swanson来查看容器端口的映射情况
绑定端口运行容器
docker run -d -p 8088:80 hub.c.163.com/library/nginx