码迷,mamicode.com
首页 > 其他好文 > 详细

Docker学习

时间:2015-06-12 15:18:17      阅读:296      评论:0      收藏:0      [点我收藏+]

标签: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/

http://baike.baidu.com/link?url=RDe8VK82jaxdiZOJ73fxMcpN3BEnictqa0e38GJoOa7PTtKVt7dHhYS44Zm7TJqAeNfpn7PUXH6cPU79WwTlbK




本文出自 “Linux SA John” 博客,请务必保留此出处http://john88wang.blog.51cto.com/2165294/1661120

Docker学习

标签:docker

原文地址:http://john88wang.blog.51cto.com/2165294/1661120

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!