docker
容器的历史:
1、Chroot Jail
就是我们常见的 chroot 命令的用法。它在 1979 年的时候就出现了,被认为是最早的容器化技术之一。
它可以把一个进程的文件系统隔离起来。
2、The FreeBSD Jail
Freebsd Jail 实现了操作系统级别的虚拟化,它是操作系统级别虚拟化技术的先驱之一。
3、Linux VServer
使用添加到 Linux 内核的系统级别的虚拟化功能实现的专用虚拟服务器。
4、Solaris Containers
它也是操作系统级别的虚拟化技术,专为 X86 和 SPARC 系统设计。Solaris 容器是系统资源控制和通过
“区域” 提供边界隔离的组合。
5、OpenVZ
OpenVZ 是一种 Linux 中操作系统级别的虚拟化技术。 它允许创建多个安全隔离的 Linux 容器,即
VPS。
6、Process Containers
Process 容器由 Google 的工程师开发,一般被称为 cgroups。7、LXC
LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令
解释机制以及全虚拟化的其他复杂性。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以
更好地在孤立的组之间平衡有冲突的资源使用需求
Linux Container提供了在单一可控主机节点上支持多个相互隔离的server container同时执行的机制。
Linux Container有点像chroot,提供了一个拥有自己进程和网络空间的虚拟环境,但又有别于虚拟机,
因为lxc是一种操作系统层次上的资源的虚拟化。
8、Warden
在最初阶段,Warden 使用 LXC 作为容器运行时。 如今已被 CloudFoundy 取代。
9、LMCTFY
LMCTY 是 Let me contain that for you 的缩写。它是 Google 的容器技术栈的开源版本。
Google 的工程师一直在与 docker 的 libertainer 团队合作,并将 libertainer 的核心概念进行抽象并移
植到此项目中。该项目的进展不明,估计会被 libcontainer 取代。
10、Docker
Docker 是一个可以将应用程序及其依赖打包到几乎可以在任何服务器上运行的容器的工具。
11、RKT
RKT 是 Rocket 的缩写,它是一个专注于安全和开放标准的应用程序容器引擎。
docker容器化封装应用程序的意义
统一基础设施环境-docker环境:
硬件的组成配置
操作系统的版本
运行时环境的异构
统一程序打包方式-docker镜像
统一程序部署方式
# docker run
容器和虚拟机技术比较
传统虚拟机是虚拟出一个主机硬件,并且运行一个完整的操作系统 ,然后在这个系统上安装和运行软
件
容器内的应用直接运行在宿主机的内核之上,容器并没有自己的内核,也不需要虚拟硬件,相当轻量化
每个容器间是互相隔离,每个容器内都有一个属于自己的独立文件系统,独立的进程空间,网络空间,用
户空间等,所以在同一个宿主机上的多个容器之间彼此不会相互影响
Docker的缺点
隔离性: 多个容器共用宿主机的内核,各应用之间的隔离不如虚拟机彻底
docker学习网站:
docker 官网: http://www.docker.com
帮助文档链接: https://docs.docker.com/
docker 镜像: https://hub.docker.com/
docker 中文网站: http://www.docker.org.cn/
docker编排工具
docker swarm
kubernetes
mesos+marathon
docker安装
官方文档: https://docs.docker.com/install/linux/docker-ce/centos/
CentOS 6 因内核太旧,即使支持安装docker,但会有各种问题,不建议安装
CentOS 7 的 extras 源虽然可以安装 docker,但包比较旧,建议从官方源或镜像源站点下载安装docker
CentOS 8 有新技术 podman 代替 docker
下载rpm包安装
阿里下载地址:
https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/
通过yum源安装
使用阿里yum源
# rm -rf /etc/yum.repos.d/*
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-
7.repo
# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo
# yum clean all
# yum -y install docker-ce
# systemctl enable --now docker
删除docker
# yum remove docker-ce
阿里云安装docker方法参考:
https://developer.aliyun.com/mirror/docker-ce?spm=a2c6h.13651102.0.0.3e221b11sUMKNV
二进制安装参考:
https://docs.docker.com/engine/install/binaries/
脚本:
#!/bin/bash
COLOR="echo -e \\033[1;31m"
END="\033[m"
VERSION="19.03.5-3.el7"
#wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo || { ${COLOR}"互联网连接失败,请检查网络配
置!"${END};exit; }
wget -P /etc/yum.repos.d/ https://mirrors.tuna.tsinghua.edu.cn/dockerce/linux/centos/docker-ce.repo || { ${COLOR}"互联网连接失败,请检查网络配
置!"${END};exit; }
yum clean all
yum -y install docker-ce-$VERSION docker-ce-cli-$VERSION || {
${COLOR}"Base,Extras的yum源失败,请检查yum源配置"${END};exit; }
#使用阿里做镜像加速
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://si7y70hh.mirror.aliyuncs.com"]
}
EOF
systemctl enable --now docker
docker version && ${COLOR}"Docker安装成功"${END} || ${COLOR}"Docker安装失败"${END}
验证docker信息
[root@localhost yum.repos.d]# docker info
Containers: 0 #当前主机运行的容器总数
Running: 0 #正在运行的容器
Paused: 0 #暂停的容器
Stopped: 0 #停止的容器
Images: 0 #当前服务器的镜像数
Server Version: 1.13.1 #服务端版本
Storage Driver: overlay2 #正在使用的存储引擎
Backing Filesystem: xfs #后端文件系统,服务器的磁盘文件系统
Supports d_type: true #是否支持d_type
Native Overlay Diff: true #是否支持差异数据存储
Logging Driver: journald #日志类型
Cgroup Driver: systemd #cgroup类型
Plugins: #插件
Volume: local #卷
Network: bridge host macvlan null overlay #overlay 跨主机通信
Swarm: inactive #是否支持swarm
Runtimes: docker-runc runc #已安装的容器运行时
Default Runtime: docker-runc #默认使用的容器运行时
Init Binary: /usr/libexec/docker/docker-init-current #初始化容器守护进程,即pid为1的进程
containerd version: (expected: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1) #containerd版本
runc version: 8891bca22c049cd2dcf13ba2438c0bac8d7f3343 (expected: 9df8b306d01f59d3a8029be411de015b7304dd8f) #runc版本
init version: fec3683b971d9c3ef73f284f176672c44b448662 (expected: 949e6facb77383876aeff8a6944dde66b3089574) #init版本
Security Options: #安全选项
seccomp #安全计算模块:https://docs.docker.com/engine/security/seccomp/
WARNING: You're not using the default seccomp profile #您没有使用默认的seccomp配置文件
Profile: /etc/docker/seccomp.json #默认的配置文件
selinux
Kernel Version: 3.10.0-862.el7.x86_64 #宿主机内核版本
Operating System: CentOS Linux 7 (Core) #宿主机操作系统
OSType: linux #宿主机操作系统类型
Architecture: x86_64 #宿主机架构
Number of Docker Hooks: 3
CPUs: 2 #CPU数
Total Memory: 1.936 GiB #总内存
Name: localhost.localdomain #宿主机hostname
ID: JYA6:4PNW:TS57:RZG6:7NIX:EK7D:Q2RV:K5K3:XP2K:LWHS:HAOG:2QO7 #宿主机ID
Docker Root Dir: /var/lib/docker #宿主机关于docker数据的保存目录
Debug Mode (client): false #client 端是否开启debug
Debug Mode (server): false #server 端是否开启debug
Registry: https://index.docker.io/v1/ #仓库路径
Experimental: false #是否测试版
Insecure Registries:
127.0.0.0/8 #非安全的镜像仓库
Live Restore Enabled: false
Registries: docker.io (secure) #是否开启活动重启 (重启docker-daemon 不关闭容器 )