Docker学习之核心概念和安装

1.核心概念

A、镜像

类似于虚拟机镜像,可以将之理解为一个面向Docker引擎的模板,包含文件系统。镜像是创建Docker容器的基础,通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像,用户甚至可以通过网络来下载一个已经做好的应用镜像,并通过简单命令就可以直接使用。

B、容器

容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例,可以启动、开始、停止、删除,容器之间相互隔离,互不可见。 可以把容器当作一个简易版的Linux操作系统(包含Root权限、用户空间、进程空间、网络空间等等)以及运行在其中的应用程序打包而成的应用盒子。镜像自身是只读的。容器从镜像启动的时候,会从镜像的最上层创建一个可写层,镜像本身则保持不变。

C、仓库

类似于代码仓库,是Docker集中存放镜像文件的场所。仓库与注册服务器是不一样的,注册服务器可以看作是存放仓库的地方,而仓库一般是存放某一类镜像,往往包含多个镜像文件,通过不同的tag来加以区分。
如图:

根据所存储的镜像文件公开与否,Docker仓库分为私有仓库和公有仓库;最大的公开仓库是Docker Hub,国内的公开仓库包括Docker Pool。如果用户不希望公开自己的镜像文件,则可以在内部网络里创建一个只能自己访问的私有仓库。当用户创建了自己的镜像之后就可以使用push命令将它上传到公有仓库或者自己的私有仓库。当用户下次在其他机器上需要使用这些镜像时候,就可以使用pull命令将其从仓库中下载下来。Docker利用仓库管理镜像的设计理念与Git特别相似。

2.安装Docker

A、Ubuntu14.04及以上版本:




B、CentOS


实际安装过程以及遇到的问题:
使用yum安装docker,如果出现错误:NO PACKAGE DOCKER-IO AVAILABLE 则需要安装下epel
命令:yum install http://ftp.riken.jp/linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
安装完毕之后再次执行命令:yum install docker-io
运行环境为CentOS 6.7版本:


使用上图的方法使用yum安装了docker,安装完成之后,使用docker pull ubuntu下载镜像,报如下错误:

Post http:///var/run/docker.sock/v1.19/images/create?fromImage=centos%3Alatest: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?
或者是下载了docker镜像,使用docker run -it ubuntu /bin/bash 类似命令启动容器的时候报如下错误:
Error response from daemon: Cannot start container 53aa09a280d8d60d013109355669573c2fdbcc4c0ee15447c2b563ee2e18e947: [8] System error: no such file or directory
通过网络搜集资料,网上的解释是:
当前有部分应用对系统内核版本有一定的要求,比如Docker要求内核版本在3.10以上,云服务器中提供的Centos 7以下的阿里云官方公共镜像是2.6以下。虽然更换系统到Centos 7可以满足要求,但是更换系统后对业务环境重新部署会消耗一定时间和人力成本,因此可以考虑针对当前系统进行内核升级。
原因明确了,是CentOS内核版本太低了,需要升级内核。(提示:如果是线上的生产环境,升级内核一定要慎重。为避免系统运行出现异常,不推荐进行内核升级。如有该方面的需求,务必在进行操作前创建系统盘快照,以备出现异常后可以及时进行恢复。)

C、升级内核

升级前系统镜像:CentOS6.7,内核版本:2.6.32-431.23.3.el6_x86_64

具体步骤如下:

a、导入public key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
b、安装elrepo到内核为2.6.32的CentOS中
rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
c、安装kernel-lt(long term support)长期支持版本
yum --enablerepo=elrepo-kernel install kernel-lt -y
注意:
1) 如果直接通过yum方式使用elrepo源速度会较慢(该源在国外)。

推荐采用rpm的方式安装kernel-lt,访问http://elrepo.org/linux/kernel/el6/x86_64/RPMS/下载对应的rpm包,通过rpm方式安装:rpm -ivh kernel-lt-3.10.93-1.el6.elrepo.x86_64.rpm

2)关于kernel-lt的介绍可以参考elrepo官网介绍:http://elrepo.org/tiki/kernel-lt
d、编辑grub.conf文件,修改Grub引导顺序
vim /etc/grub.conf

确认安装的新内核的位置,将default的值调整为新内核的顺序,如本次升级案例中新装的内核位置为0,所以将default修改为0,保存退出,reboot重启服务器。

e、重启系统后检查内核

f、内核升级完成后进行测试
yum install -y  docker-io
service  docker  start
docker  pull  centos:centos 7
docker  run  -t  -i  centos:centos 7 /bin/bash


使用docker exec 命令,报错提示[Error response from daemon: Unsupported: Exec is not supported by the lxc driver ]
解决方案

官方已经早就不推荐使用lxc了,所以只要去掉启动参数设置的lxc选项即可
vim /etc/sysconfig/docker other_args="-exec-driver=lxc --selinux-enabled"
删除–exec-driver=lxc即可,改为
other_args="--selinux-enabled"
重启service docker restart再连接一次就可以了`
文章目录
  1. 1. 1.核心概念
    1. 1.0.1. A、镜像
    2. 1.0.2. B、容器
    3. 1.0.3. C、仓库
  • 2. 2.安装Docker
    1. 2.0.1. A、Ubuntu14.04及以上版本:
    2. 2.0.2. B、CentOS
    3. 2.0.3. C、升级内核
      1. 2.0.3.1. a、导入public key
      2. 2.0.3.2. b、安装elrepo到内核为2.6.32的CentOS中
      3. 2.0.3.3. c、安装kernel-lt(long term support)长期支持版本
      4. 2.0.3.4. 注意:
        1. 2.0.3.4.1. 1) 如果直接通过yum方式使用elrepo源速度会较慢(该源在国外)。
        2. 2.0.3.4.2. 2)关于kernel-lt的介绍可以参考elrepo官网介绍:http://elrepo.org/tiki/kernel-lt
      5. 2.0.3.5. d、编辑grub.conf文件,修改Grub引导顺序
      6. 2.0.3.6. e、重启系统后检查内核
      7. 2.0.3.7. f、内核升级完成后进行测试
  • ,