极客时间 - 运维进阶训练营 - 第一周作业
梳理各 Namespace 的作用
引申问题
1.怎么样保证每个容器都有不同的文件系统并且能互不影响?
2.一个 docker 主进程内的各个容器都是其子进程,那么实现同一个主进程下不同类型的子进程?各个进程间通信能相互访问(内存数据)吗?
3.每个容器怎么解决 IP 及端口分配的问题?
4.多个容器的主机名能一样吗?
5.每个容器都要不要有 root 用户?怎么解决账户重名问题?
namespace 是 Linux 系统的底层概念,容器技术是在一个进程内实现运行指定服务的运行环境,并且还可以保护宿主机内核不受其他进程的干扰和影响,如文件系统空间、网络空间、进程空间等,目前主要通过以下技术实现容器运行空间的相互隔离:
使用 apt/yum/ 二进制安装指定版本的 Docker
rpm 包下载地址:
官网下载地址:
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
阿里镜像下载地址:
https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/
二进制安装包:
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/static/stable/x86_64/
apt/yum 在线安装:
清华大学镜像源:https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/
阿里云镜像源:https://developer.aliyun.com/mirror/docker- ce?spm=a2c6h.13651102.0.0.3e221b11xaRalQ
熟练使用 Docker 数据卷
引申问题
我们知道镜像创建后是不可变的,而基于镜像创建的容器是可变的,那么,容器的运行,是如何做到可变而且不影响原有镜像的?
Docker 容器如何做到数据持久化,即在容器内修改后,并且即使容器停止运行,数据修改依然生效并且在宿主机上可见?
Docker 镜像分层设计原理
docker 利用 Copy On Write(COW),进行容器数据持久化
方法一:数据目录挂载
如何查看映射关系
参考文档:https://docs.docker.com/storage/bind-mounts/
方法二:volume(数据卷)
volume 的创建、查看、删除
而 volume 实际的挂载路径,可以通过 docker volume inspect [volume_name]查看
基于 volume 创建容器,并查看挂载映射
参考文档:https://docs.docker.com/storage/volumes/
熟练使用 Docker 的 bridge 和 container 模式网络
版权声明: 本文为 InfoQ 作者【dog_brother】的原创文章。
原文链接:【http://xie.infoq.cn/article/3fcba2f2e74eb91148e967f28】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论