容器原理及Docker安装
容器
容器镜像(静态视图)
一组联合挂载在 /var/lib/docker/aufs/mnt 上的 rootfs
容器运行时(动态视图)
一个由 Namespace+Cgroups 构成的隔离环境
-
Namespace(充分地利用系统的资源,保证了安全性)
- PID Namespace
- 隔离不同容器的进程
- Network Namespace
- 网络环境的隔离
- Mount Namespace
- 文件系统的隔离
- PID Namespace
-
Cgroups
- 对指定的进程做各种计算机资源的限制,比如限制CPU的使用率,内存使用量,IO设备的流量等等
docker
当人们说“Docker”时,通常是指 Docker Engine,它是一个客户端 - 服务器应用程序,由 Docker
守护进程、一个REST API指定与守护进程交互的接口、和一个命令行接口(CLI)与守护进程通信(通过
封装REST API)。Docker Engine 从 CLI 中接受docker 命令,例如 docker run 、docker ps 来列出正
在运行的容器、docker images 来列出镜像,等等。
- docker是一个软件,可以运行在window、linux、mac等各种操作系统上。
- docker 是一个开源的应用容器引擎,基于Go 语言开发并遵从 Apache2.0 协议开源,项目代码托
管在github上进行维护 - docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任
何流行的 Linux 机器上。 - 容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
基本组成
docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
docker仓库(Registry):用来保存各种打包好的软件镜像;仓库分为公有仓库和私有仓库。(很类似
maven)
docker镜像(Images):软件打包好的镜像;放在docker仓库中;
docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
安装
列出可安装的所有版本
yum list docker-ce --showduplicates | sort -r
安装Docker-ce 19.03
yum install docker-ce-19.03.15-3.el7 docker-ce-cli-19.03.15-3.el7 -y
systemctl enable docker && systemctl restart docker
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
如果安装出错,卸载命令如下:
yum remove docker*
rm -rf /var/lib/docker
每个人都有潜在的能量,只是很容易被习惯所掩盖,被时间所迷离,被惰性所消磨~