docker安装部署文档_第1页
docker安装部署文档_第2页
docker安装部署文档_第3页
docker安装部署文档_第4页
docker安装部署文档_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、简介1、docker简介 Docker 提供了一个可以运行你的应用程序的封套(envelope),或者说容器。它原本是 dotCloud 启动的一个业余项目,并在前些时候开源了。它吸引了大量的关注和讨论,导致 dotCloud 把它重命名到 Docker Inc。它最初是用 Go 语言编写的,它就相当于是加在 LXC(LinuX Containers,linux 容器)上的管道,允许开发者在更高层次的概念上工作。 Docker 扩展了 Linux 容器(Linux Containers),或着说 LXC,通过一个高层次的 API 为进程单独提供了一个轻量级的虚拟环境。Docker 利用了

2、LXC, cgroups 和 Linux 自己的内核。和传统的虚拟机不同的是,一个 Docker 容器并不包含一个单独的操作系统,而是基于已有的基础设施中操作系统提供的功能来运行的。 Docker类似虚拟机的概念,但是与虚拟化技术的不同点在于下面几点: 1.虚拟化技术依赖物理CPU和内存,是硬件级别的;而docker构建在操作系统上,利用操作系统的containerization技术,所以docker甚至可以在虚拟机上运行。 2.虚拟化系统一般都是指操作系统镜像,比较复杂,称为“系统”;而docker开源而且轻量,称为“容器”,单个容器适合部署少量应用,比如部署一个redis、一个memcac

3、hed。 3.传统的虚拟化技术使用快照来保存状态;而docker在保存状态上不仅更为轻便和低成本,而且引入了类似源代码管理机制,将容器的快照历史版本一一记录,切换成本很低。 4.传统的虚拟化技术在构建系统的时候较为复杂,需要大量的人力;而docker可以通过Dockfile来构建整个容器,重启和构建速度很快。更重要的是Dockfile可以手动编写,这样应用程序开发人员可以通过发布Dockfile来指导系统环境和依赖,这样对于持续交付十分有利。 5.Dockerfile可以基于已经构建好的容器镜像,创建新容器。Dockerfile可以通过社区分享和下载,有利于该技术的推广。 Docker 会像一

4、个可移植的容器引擎那样工作。它把应用程序及所有程序的依赖环境打包到一个虚拟容器中,这个虚拟容器可以运行在任何一种 Linux 服务器上。这大大地提高了程序运行的灵活性和可移植性,无论需不需要许可、是在公共云还是私密云、是不是裸机环境等等。 Docker也是一个云计算平台,它利用Linux的LXC、AUFU、Go语言、cgroup实现了资源的独立,可以很轻松的实现文件、资源、网络等隔离,其最终的目标是实现类似PaaS平台的应用隔离。 Docker 由下面这些组成: 1. Docker 服务器守护程序(server daemon),用于管理所有的容器。 2. Docker 命令行客户端,用于控制服

5、务器守护程序。 3. Docker 镜像:查找和浏览 docker 容器镜像。2、docker特性 文件系统隔离:每个进程容器运行在完全独立的根文件系统里。 资源隔离:可以使用cgroup为每个进程容器分配不同的系统资源,例如CPU和内存。 网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和IP地址。 写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间。 日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。 变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使

6、用以创建更多的容器。无需使用模板或手动配置。 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。3 两个基础概念images与containerContainer和Image 在Docker的世界里,Image是指一个只读的层(Layer),这里的层是AUFS里的概念,最直观的方式就是看一下docker官方给出的图: Docker使用了一种叫AUFS的文件系统,这种文件系统可以让你一层一层地叠加修改你的文件,最底下的文件系统是只读的,如果需要修改文件,AUFS会增加一个可写的层(Layer),这样有很多好处,例如不同的Contai

7、ner可以共享底层的只读文件系统(同一个Kernel),使得你可以跑N多个Container而不至于你的硬盘被挤爆了!这个只读的层就是Image!而如你所看到的,一个可写的层就是Container。那Image和Container的区别是什么?很简单,他们的区别仅仅是一个是只读的层,一个是可写的层,你可以使用docker commit 命令,将你的Container变成一个Image,也就是提交你所运行的Container的修改内容,变成一个新的只读的Image,这非常类似于git commit命令。二、Centos6安装docker1、升级内核Centos6内核版本默认为2.6,安装dock

8、er需要内核版本3.8以上1.下载源码包网址:在首页可以看到有 stable,longterm 等版本,一般选择下载 longterm 版本,因为此版本为提供长期支持的稳定版,因此我选择 3.12.16.rootCentOS-BinaryDev# wget /pub/linux/kernel/v3.0/linux-3.10.tar.gz2.解压并进入目录rootCentOS-BinaryDev# tar -zxvf linux-3.10.tar.gz C /usr/src/kernel/rootCentOS-Bi

9、naryDev# cd /usr/src/kernel/linux-3.103.更新当前系统rootCentOS-BinaryDev# yum updaterootCentOS-BinaryDev# yum upgrade4.安装编译内核所需要的软件包rootCentOS-BinaryDev# yum groupinstall “Development Tools”rootCentOS-BinaryDev# yum install ncurses-develrootCentOS-BinaryDev# yum install qt-develrootCentOS-BinaryDev# yum i

10、nstall hmaccalc zlib-devel binutils-devel elfutils-libelf-devel5.查看当前系统内核rootCentOS-BinaryDev# uname -r2.6.32-358.11.1.el6.x86_646.将当前系统内核的配置文件拷贝到当前目录rootCentOS-BinaryDev# cp /boot/config-2.6.32-358.11.1.el6.x86_64 .config7.使用当前系统内核配置,并自动接受每个新增选项的默认设置rootCentOS-BinaryDev# sh -c yes “” | make oldconf

11、ig8编辑配置选项# make menuconfig #在菜单模式下选择需要编译的内核模块找到以下选中选项并选中networking support networking options network packet filtering framework(netfilter)(1)Core netfilter configuration勾中Netfilter connection tracking support -m state相关模块是依赖它的,不选则没有。将netbios name service protocal support(new) 编译成模块,不然后面升级iptables后启

12、动时会出错勾中Netfilter Xtables support (required for ip_tables)(2)IP: Netfilter Configuration将 IPv4 connection tracking support (require for NAT) 编译成模块。勾中IP tables support (required for filtering/masq/NAT) 。将 Full NAT 下的 MASQUERADE target support 和 REDIRECT target support 编译成模块(3)其它模块可以根据自己的需要进行选择,若不懂可以参考

13、内核配置手册.9.编译rootCentOS-BinaryDev# make bzImagerootCentOS-BinaryDev# make modulesrootCentOS-BinaryDev# make modules_install10.安装rootCentOS-BinaryDev# make install如果出现少量 ERROR 可以忽略11.修改 Grub 引导顺序rootCentOS-BinaryDev# vim /etc/grub.conf一般新内核的位置都在第一个,所以设置 default=0.12.重启后查看内核版本号rootCentOS-BinaryDev# unam

14、e -r3.10.013.如果失败,转至第 5 步,在重新开始之前,需要清理上次编译的现场rootCentOS-BinaryDev# make mrproper2、安装aufs1、mock命令需要用普通用户执行roottest # useradd mockbuilder roottest # usermod -a -G mock mockbuilder roottest # su - mockbuilder注意:如果强行使用root身份执行mock命令,python将会抛出“RuntimeError: mock will not run from the root account”的错误。2、

15、安装mock和spectoolYum y install rpmdevtools mock3、# build docker rpmspectool -g -C lxc-docker lxc-docker/lxc-docker.specmock -r epel-6-x86_64 -buildsrpm -spec lxc-docker/lxc-docker.spec -sources lxc-docker -resultdir outputmock -r epel-6-x86_64 -rebuild -resultdir output output/lxc-docker-0.6.7-1.el6.s

16、rc.rpm# build lxc rpmspectool -g -C lxc lxc/lxc.specmock -r epel-6-x86_64 -buildsrpm -spec lxc/lxc.spec -sources lxc -resultdir outputmock -r epel-6-x86_64 -rebuild -resultdir output output/lxc-0.8.0-3.el6.src.rpm# build kernel rpmspectool -g -C kernel-ml-aufs kernel-ml-aufs/kernel-ml-aufs-3.10.spec

17、git clone git://p/aufs/aufs3-standalone -b aufs3.10pushd aufs3-standalonegit archive 9929efebedf254a9ac0f7a5df1c5 ./kernel-ml-aufs/aufs3-standalone.tarpopdmock -r epel-6-x86_64 -buildsrpm -spec kernel-ml-aufs/kernel-ml-aufs-3.10.spec -sources kernel-ml-aufs -resultdir outputmock -r ep

18、el-6-x86_64 -rebuild -resultdir output output/kernel-ml-aufs-3.10.11-1.el6.src.rpmcd outputyum localinstall -nogpgcheck kernel-ml-aufs-3.10.11-1.el6.x86_64.rpm lxc-0.8.0-3.el6.x86_64.rpm lxc-libs-0.8.0-3.el6.x86_64.rpm lxc-docker-0.6.7-1.el6.x86_64.rpmvim /etc/fstabnone /sys/fs/cgroup cgroup default

19、s 0 0#查看aufs是否存在grep aufs /proc/filesystems nodev aufs参考:/sciurus/docker-rhel-rpm3、安装docker#安装epel库yum -y install /pub/epel/6/x86_64/epel-release-6-8.noarch.rpm#安装dockeryum y install docker-io#编辑配置文件 rootlocalhost # vim /etc/sysconfig/dockerother_args=-exec

20、-driver=lxc -selinux-enabled#启动dockerrootlocalhost # /etc/init.d/docker start#查看 rootlocalhost # ps -ef | grep dockerroot 1272 1 0 15:27 pts/0 00:00:24 /usr/bin/docker -d -exec-driver=lxc -selinux-enabled三、Centos7安装docker由于centos7默认内核版本3.10,并且yum库里就有docker,所以可以直接安装1、CentOS 7 中 Docker 的安装Docker 软件包已经

21、包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker,只需要运行下面的 yum 命令:rootlocalhost # yum install docker2、启动 Docker 服务安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动:rootlocalhost # service docker startrootlocalhost # chkconfig docker on(LCTT 译注:此处采用了旧式的 sysv 语法,如采用CentOS 7中支持的新式 systemd 语法,如下:rootlocalhost # systemctl sta

22、rt docker.servicerootlocalhost # systemctl enable docker.service)四、docker操作1、下载镜像docker pull centos2、查看镜像docker images3、查看容器docker ps -a4、搜索镜像docker search ubuntu5、查看docker版本和信息docker versiondocker info6、创建容器docker run -i -t centos /bin/bash#后台运行容器docker run -d -p 50001:22 /usr/sbin/sshd-D7、再次启动容器do

23、cker start/stop/restart :开启/停止/重启containerdocker start container_id :再次运行某个container (包括历史container)docker attach container_id :连接一个正在运行的container实例(即实例必须为start状态,可以多个窗口同时attach 一个container实例)docker start -i :启动一个container并进入交互模式(相当于先start,在attach)docker run -i -t /bin/bash :使用image创建container并进入交互模式, login shell是/bin/bashdocker run -i -t -p :映射 HOST 端口到容器,方便外部访问容器内服务,host_port 可以省略,省略表示把 container_port 映射到一个动态端口。注:使用start是启动已经创建过得container,使用run则通过image开启一个新的container。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论