设为首页 收藏本站
查看: 985|回复: 0

[经验分享] CENTOS6.5 下docker安装和配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-21 09:01:27 | 显示全部楼层 |阅读模式
学习下最新的一些动向  docker就是一个新兴的好东西。
1 docker简介
    Docker 提供了一个可以运行你的应用程序的封套(envelope),或者说容器。它原本是 dotCloud 启动的一个业余项目,并在前些时候开源了。它吸引了大量的关注和讨论,导致 dotCloud 把它重命名到 Docker Inc。它最初是用 Go 语言编写的,它就相当于是加在 LXC(LinuX Containers,linux 容器)上的管道,允许开发者在更高层次的概念上工作。
    Docker 扩展了 Linux 容器(Linux Containers),或着说 LXC,通过一个高层次的 API 为进程单独提供了一个轻量级的虚拟环境。Docker 利用了 LXC, cgroups 和 Linux 自己的内核。和传统的虚拟机不同的是,一个 Docker 容器并不包含一个单独的操作系统,而是基于已有的基础设施中操作系统提供的功能来运行的。
    Docker类似虚拟机的概念,但是与虚拟化技术的不同点在于下面几点:
    1.虚拟化技术依赖物理CPU和内存,是硬件级别的;而docker构建在操作系统上,利用操作系统的containerization技术,所以docker甚至可以在虚拟机上运行。
    2.虚拟化系统一般都是指操作系统镜像,比较复杂,称为“系统”;而docker开源而且轻量,称为“容器”,单个容器适合部署少量应用,比如部署一个redis、一个memcached。
    3.传统的虚拟化技术使用快照来保存状态;而docker在保存状态上不仅更为轻便和低成本,而且引入了类似源代码管理机制,将容器的快照历史版本一一记录,切换成本很低。
    4.传统的虚拟化技术在构建系统的时候较为复杂,需要大量的人力;而docker可以通过Dockfile来构建整个容器,重启和构建速度很快。更重要的是Dockfile可以手动编写,这样应用程序开发人员可以通过发布Dockfile来指导系统环境和依赖,这样对于持续交付十分有利。
    5.Dockerfile可以基于已经构建好的容器镜像,创建新容器。Dockerfile可以通过社区分享和下载,有利于该技术的推广。
    Docker 会像一个可移植的容器引擎那样工作。它把应用程序及所有程序的依赖环境打包到一个虚拟容器中,这个虚拟容器可以运行在任何一种 Linux 服务器上。这大大地提高了程序运行的灵活性和可移植性,无论需不需要许可、是在公共云还是私密云、是不是裸机环境等等。
    Docker也是一个云计算平台,它利用Linux的LXC、AUFU、Go语言、cgroup实现了资源的独立,可以很轻松的实现文件、资源、网络等隔离,其最终的目标是实现类似PaaS平台的应用隔离。
    Docker 由下面这些组成:
    1. Docker 服务器守护程序(server daemon),用于管理所有的容器。
    2. Docker 命令行客户端,用于控制服务器守护程序。
    3. Docker 镜像:查找和浏览 docker 容器镜像。
2 docker特性
    文件系统隔离:每个进程容器运行在完全独立的根文件系统里。
    资源隔离:可以使用cgroup为每个进程容器分配不同的系统资源,例如CPU和内存。
    网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和IP地址。
    写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间。
    日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。
    变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。
    交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次***互shell。

3 安装docker  直接yum安装

yum -y install docker-io

这里可能遇到报错  需要安装epel

报错警告:
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

GPG key retrieval failed: [Errno 14] Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6


解决办法安装epel
rpm -ivh http://dl.fedoraproject.org/pub/ ... ease-6-8.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
yum install -y yum-priorities
然后再次安装


修改配置信息
vi /etc/sysconfig/docker

other-args改为:other_args="--exec-driver=lxc --selinux-enabled"

然后启动docker

service docker start  或者 /etc/init.d/docker start

这时候就能执行一些命令查看相关的信息
docker info :查看系统(docker)层面信息,包括管理的images, containers数等
docker version:查看docker的版本号,包括客户端、服务端、依赖的Go等

可能会出这是现报错:
FATA[0000] Cannot connect to the Docker daemon. Is 'docker -d' running on this host?
wKioL1XVhJeg86hHAABe3PK0ZzE639.jpg
这是因为docker daemon 守护进程默认是不启动的   按照提示启动就可以

注意执行docker -d  可能会报错:
WARN[0000] You are running linux kernel version 2.6.32-431.el6.x86_64, which might be unstable running docker. Please upgrade your kernel to 3.8.0.
INFO[0000] +job serveapi(unix:///var/run/docker.sock)   
INFO[0000] Listening for HTTP on unix (/var/run/docker.sock)
docker: relocation error: docker: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference
提示内核的版本太低,不能运行docker这里可以直接升级到提示的版本。或者升级设备映射库:

yum upgrade device-mapper-libs -y

最后执行 nohup docker -d &

4 下载镜像


  镜像可以看作是包含有某些软件的容器系统,比如centos就是一个官方的基础镜像,很多镜像都是基于这个镜像“衍生”,该镜像包含基本的centos系统。


搜索镜像:docker search centos


wKiom1XVh5mQFnPDAARoPCFungg901.jpg
可以搜索出很多的centos的镜像


下载需要的镜像:
docker pull centos:latest
wKioL1XVioiSqH5KAACcCcNqK-0883.jpg
docker pull jdeathe/centos-ssh-apache-php

下载完成后可以直接查看下载的镜像:
    docker images: 列出images
    docker images -a :列出所有的images(包含历史)
    docker images --tree :显示镜像的所有层(layer)
    docker rmi  <image ID>: 删除一个或多个image

5 使用镜像创建容器

docker run  镜像ID或者镜像名 /bin/echo 'good job'
建立交互式的容器:
docker run -it 镜像ID或者镜像名 /bin/bash
wKioL1XVkn6xcHH6AAMIbr35rlE198.jpg
(报错请忽略 不支持中文导致的。。。)很明显  交互式的容器是直接进入到容器里面的,非交互式的是在容器中执行一条命令。
这里无论哪一种退出后容器都是处于关闭状态。

查看容器
    docker ps :列出当前所有正在运行的container
    docker ps -l :列出最近一次启动的container
    docker ps -a :列出所有的container(包含历史,即运行过的container)
    docker ps -q :列出最近一次运行的container ID

6 再次启动容器  连接容器

    docker start/stop/restart <container> :开启/停止/重启container
    docker start [container_id] :再次运行某个container (包括历史container)
    docker attach [container_id] :连接一个正在运行的container实例(即实例必须为start状态,可以多个窗口同时attach 一个container实例)
    docker exec -it [container_id]  /bin/bash : 连接一个正在运行的container实例
    docker start -i <container> :启动一个container并进入交互模式(相当于先start,在attach)
    docker attach 与 docker exec 区别:
wKiom1XVlaqh1fYzAANs3JEHtuA082.jpg
先是exec连接 退出后容器仍然运行, 然后attach连接容器 退出后容器停掉了。


  删除容器
    docker rm <container...> :删除一个或多个container
    docker rm `docker ps -a -q` :删除所有的container
    docker ps -a -q | xargs docker rm :同上, 删除所有的container

这样docker的容器就能使用了。


7  持久化容器 (用部署好的容器生成镜像)
docker export <CONTAINER ID> > /tmp/export.tar         输出镜像文件
cat /tmp/export.tar | docker import - export:latest    导入镜像文件
wKioL1XVnjyRsnvIAAOCH-1VKRI458.jpg
最后看到在实验前写的欢迎文件。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-101890-1-1.html 上篇帖子: 阿里云不能启动docker 下篇帖子: docker 实现hello world守护进程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表