docker学习笔记
LXC,其名称来自Linux软件容器(Linux Containers)的缩写,一种操做系统层虚拟化(Operating system–level virtualization)技术,为Linux内核容器功能的一个用户空间接口。它将应用软件系统打包成一个软件容器(Container),内含应用软件自己的代码,以及所须要的操做系统核心和库。透过统一的名字空间和共享API来分配不一样软件容器的可用硬件资源,创造出应用程序的独立沙箱运行环境,使得Linux用户能够容易的建立和管理系统或应用容器。linux
在Linux内核中,提供了cgroups功能,来达成资源的区隔化。它同时也提供了名称空间区隔化的功能,使应用程序看到的操做系统环境被区隔成独立区间,包括进程树,网络,用户id,以及挂载的文件系统。可是cgroups并不必定须要启动任何虚拟机。docker
LXC利用cgroups与名称空间的功能,提供应用软件一个独立的操做系统环境。LXC不须要Hypervisor这个软件层,软件容器(Container)自己极为轻量化,提高了建立虚拟机的速度。软件Docker就是用来管理LXC的环境。centos
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 (builder@kbuilder.dev.centos.org) (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源:socket
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 ...(省略部分)