新手入门docker理论笔记
docker是什么
1.一种操作系统级的虚拟技术。
2.使用最广泛的开源容器引擎。
3.依赖于Linux内核特性:namespace(资源隔离)和Cgroups(资源限制)
安装docker
安装依赖包
yum install -y yum-utils
添加Docker软件包源
yum-config-manager
–add-repo
https://download.docker.com/linux/centos/docker-ce.repo
安装Docker CE
yum install -y docker-ce
启动Docker服务并设置开机启动
systemctl start docker
systemctl enable docker
https://docs.docker.com/engine/install/centos/
官方文档:https://docs.docker.com
阿里云源:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
镜像管理
1.镜像是一个分层存储的文件,不是一个单一的文件。
2.一个镜像可以起N个容器。
镜像从哪来
Docker Hub是由Docker公司负责维护的公共镜像仓库,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜
像。
地址:https://hub.docker.com
配置镜像加速器:
vi /etc/docker/daemon.json
{
“registry-mirrors”: [“https://b9pmyelo.mirror.aliyuncs.com”]
}
镜像与容器的联系
镜像:类似与虚拟机的镜像,一个只读模板。
容器:通过镜像创建的运行实例。
管理镜像常用命令
命令 | 描述 |
---|---|
ls | 描述 |
build | 构建镜像 |
history | 查看镜像历史 |
rm | 删除镜像 |
inspect | 显示一个或多个镜像详细信息 |
pull | 从镜像仓库拉取镜像 |
push | 推送一个镜像到镜像仓库 |
prune | 移除没有被标记或者没有被任何容器引用的镜像 |
tag | 创建一个引用源镜像标记目标镜像 |
export | 导出容器文件系统到tar归档文件 |
import | 导入容器文件系统tar归档文件创建镜像 |
save | 保存一个或多个镜像到一个tar归档文件 |
load | 加载镜像来自tar归档或标准输入 |
镜像存储核心技术:联合文件系统(UnionFS)
镜像的高效存储是引入联合文件系统,将镜像分层挂载到容器文件系统。
镜像存储核心技术:写时复制
上面说到镜像是一个只读的,但是需要修改时,会先将镜像里需要修改的文件复制到自己的文件系统进行修改。
创建容器常用选项
命令 | 描述 |
---|---|
i,–interactive | 交互式 |
-t ,–tty | 分配一个伪终端 |
-d, –detach | 运行容器到后台 |
-e,–env | 设置环境变量 |
-p,–publish list | 发布容器端口到主机 |
-P, –publish-all | 发布容器所有EXPOSE的端口到宿主机随机端口 |
–name string | 指定容器名称 |
-h, –hostname | 设置容器主机名 |
–ip string | 指定容器IP,只能用于自定义网络 |
–network | 连接容器到一个网络 |
–mount mount | 将文件系统附加到容器 |
-v, –volume list | 绑定挂载一个卷 |
–restart string | 容器退出时重启策略,默认no,可选值:[always |
容器资源限制
示例:
内存限额:
允许容器最多使用500M内存和100M的Swap,并禁用 OOM Killer:
docker run -d --name nginx03 --memory=“500m” --memory-swap=“600m" --oom-kill-disable nginx
CPU限额:
允许容器最多使用一个半的CPU:
docker run -d --name nginx04 --cpus=“1.5” nginx
允许容器最多使用50%的CPU:
docker run -d --name nginx05 --cpus=".5" nginx
Docker核心组件之间关系
Docker Daemon:Docker守护进程,负责与Docker Clinet交互,并管理镜像、
容器。
Containerd:是一个简单的守护进程,向上给Docker Daemon提供接口,向下
通过containerd-shim结合runC管理容器。
runC:一个命令行工具,它根据OCI标准来创建和运行容器。
小结
Namespace
命名空间,Linux内核提供的一种对进程资源隔离的机制,例如进程、网络、挂载点等资源。
CGroups
控制组,Linux内核提供的一种对进程组限制资源的机制;例如CPU、内存等资源。
UnionFS
联合文件系统,支持将不同位置的目录挂载到同一虚拟文件系统,形成一种分层的模型。