rually 2019-06-30
docker学习笔记
LXC,其名称来自Linux软件容器(Linux Containers)的缩写,一种操作系统层虚拟化(Operating system–level virtualization)技术,为Linux内核容器功能的一个用户空间接口。它将应用软件系统打包成一个软件容器(Container),内含应用软件本身的代码,以及所需要的操作系统核心和库。透过统一的名字空间和共享API来分配不同软件容器的可用硬件资源,创造出应用程序的独立沙箱运行环境,使得Linux用户可以容易的创建和管理系统或应用容器。
在Linux内核中,提供了cgroups功能,来达成资源的区隔化。它同时也提供了名称空间区隔化的功能,使应用程序看到的操作系统环境被区隔成独立区间,包括进程树,网络,用户id,以及挂载的文件系统。但是cgroups并不一定需要启动任何虚拟机。
LXC利用cgroups与名称空间的功能,提供应用软件一个独立的操作系统环境。LXC不需要Hypervisor这个软件层,软件容器(Container)本身极为轻量化,提升了创建虚拟机的速度。软件Docker就是用来管理LXC的环境。
Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。
Docker中有三个基本概念:镜像,容器和仓库。理解了这个三个概念就大致了解了Docker的生命周期。
Docker架构:
系统环境
Docker CE支持64 位CentOS7,并且要求内核版本不低于3.10。CentOS7满足最低的内核要求,但由于内核版本较低,部分功能无法使用,并且部分功能可能不太稳定。
[root@game-test1 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@game-test1 ~]# cat /proc/version Linux version 3.10.0-693.11.6.el7.x86_64 ([email protected]) (gcc version 4.8.520150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Thu Jan 4 01:06:37 UTC 2018
卸载旧版本
旧版本的Docker称为docker或者docker-engine,使用下面命令卸载旧版本:
yum remove docker docker-common docker-selinux docker-engine
使用yum安装
由于网络原因,建议使用国内源下载,执行下面命令添加yum源:
yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
安装最新版本的Docker CE:
yum-config-manager --enable docker-ce-edge
更新软件源缓存,并安装docker-ce
yum makecache fast yum install -y docker-ce
启动Docker CE
systemctl enable docker #设置开机自启 systemctl start docker
建立Docker用户组
默认情况下,docker命令会使用Unix socket与Docker引擎进行通讯。而只有root用户和docker组的用户才可以访问Docker引擎的Unix socket。出于安全考虑,一般Linux系统上不会直接使用root用户、因此,将需要使用docker的用户加入docker用户组。
建立用户组
groupadd docker
创建docker用户,加入到docker组
useradd -g docker docker -s /sbin/nologin
测试docker是否安装正确
若出现以上输出信息说明docker安装成功,至此docker安装完毕。
[root@jackyun ~]# docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 9db2ca6ccae0: Pull complete ...(省略部分)