标签:docker
一 基本原理
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。Docker是用go语言编写的。
Docker与传统的虚拟化技术如KVM或Xen最重要的区别在于,Docker没有Gutest OS的概念,而是使用Docker Engine来加载应用,这样就可以节省很多的系统资源同时便于管理。
Docker最重要的两个概念是镜像(image)和容器(container),有点类似虚拟机的快照,可以通过镜像来复制多个应用。每个镜像有一个唯一的ID和可阅读的名字来标识。
可以从镜像中创建容器,类似于根据虚拟机的快照来创建新的虚拟机。Docker的镜像和容器比快照和虚拟机更轻量,启动和管理更方便,因为不会涉及到Guest OS的管理和启动。
Docker开发人员推荐使用一个容器一个进程的方式来运行容器。
Docker的设计目的是用来运行一个应用,而不是一个虚拟机,Docker提供了用于分离应用和数据的工具,这样可以快速更新容器中的代码而不会影响数据。 Docker的数据卷可以使我们在不影响数据的情况下对容器进行修改,删除,销毁,重建等操作。
Docker的容器是短暂的和一次性的。
链接是Docker另一个重要的概念。容器启动时,默认分配一个私有IP地址,其他容器可以使用这个IP和当前这个容器通信,这些容器组成一个局域网。可以采用技术手段限制容器间通信。
Docker使用cgroups来限制容器间隔离。union文件系统用于保存镜像并使容器变得短暂。
二 安装使用
Docker目前支持CentOS 6.5和CentOS 7.需要内核版本是2.6.32-431以上。
本文使用CentOS 6.5
CentOS 6.5上面有一个软件与docker名字冲突,需要先卸载掉
yum -y remove docker
yum -y install docker-io
启动docker后台服务
service docker start
设置开机启动
chkconfig docker on
从官网拉取最新的centos镜像
docker pull centos
列出镜像
docker images centos
测试image
# docker run --rm -it centos /bin/bash [root@044e4c7983a7 /]# pwd / [root@044e4c7983a7 /]# df - df: ‘-‘: No such file or directory [root@044e4c7983a7 /]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/docker-253:0-34471939-044e4c7983a71762c47cd205cc4f46b2b3a71a3b67c9fe4363bad45a60f2d85b 9.8G 254M 9.0G 3% / tmpfs 7.8G 0 7.8G 0% /dev shm 64M 0 64M 0% /dev/shm /dev/mapper/vg_fileserver-lvopt 910G 108G 757G 13% /etc/hosts tmpfs 7.8G 0 7.8G 0% /proc/kcore
在后台运行一个docker容器
# docker run -d centos ping 8.8.8.8 5ae14dfb1a82887218ef3af5fa0b04d73427e0bc1e65e1b7304a194db03e8a67
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5ae14dfb1a82 centos:7 "ping 8.8.8.8" 54 seconds ago Up 53 seconds elegant_jones
# docker exec -it elegant_jones /bin/bash [root@5ae14dfb1a82 /]# ps PID TTY TIME CMD 7 ? 00:00:00 bash 23 ? 00:00:00 ps [root@5ae14dfb1a82 /]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 05:48 ? 00:00:00 ping 8.8.8.8 root 7 0 0 05:51 ? 00:00:00 /bin/bash root 24 7 0 05:51 ? 00:00:00 ps -ef [root@5ae14dfb1a82 /]# exit exit
docker info 显示系统信息
# docker info Containers: 1 Images: 3 Storage Driver: devicemapper Pool Name: docker-253:0-34471939-pool Pool Blocksize: 65.54 kB Backing Filesystem: extfs Data file: /dev/loop0 Metadata file: /dev/loop1 Data Space Used: 590.5 MB Data Space Total: 107.4 GB Metadata Space Used: 1.036 MB Metadata Space Total: 2.147 GB Udev Sync Supported: true Data loop file: /opt/docker/devicemapper/devicemapper/data Metadata loop file: /opt/docker/devicemapper/devicemapper/metadata Library Version: 1.02.89-RHEL6 (2014-09-01) Execution Driver: native-0.2 Kernel Version: 2.6.32-504.16.2.el6.x86_64 Operating System: <unknown> CPUs: 2 Total Memory: 15.47 GiB Name: jidong-fileserver ID: RWCS:FUZS:VSCU:BTIY:SEI2:WH6F:CP26:STBN:HDRN:R2MN:4YQQ:OL3G
参考文档:
http://yuedu.baidu.com/ebook/d817967416fc700abb68fca1?fr=aladdin&key=docker&f=read
http://yuedu.baidu.com/ebook/d817967416fc700abb68fca1?fr=aladdin&key=docker&f=read
https://www.docker.com/whatisdocker/
本文出自 “Linux SA John” 博客,请务必保留此出处http://john88wang.blog.51cto.com/2165294/1661120
标签:docker
原文地址:http://john88wang.blog.51cto.com/2165294/1661120