重庆网站建设,成都网络推广运营公司,网站微信二维码侧边栏漂浮框,无锡高端网站建设平台目录
基本使用
镜像仓库
镜像操作
Docker 如何实现镜像
1) namespace
2) cgroup
3) LXC
Docker常见的网络类型
bridge网络如何实现 基本使用
镜像仓库
镜像仓库登录
1)docker login
后面不指定IP地址#xff0c;则默认登录到 docker hub 上
退出
2)docker logo…目录
基本使用
镜像仓库
镜像操作
Docker 如何实现镜像
1) namespace
2) cgroup
3) LXC
Docker常见的网络类型
bridge网络如何实现 基本使用
镜像仓库
镜像仓库登录
1)docker login
后面不指定IP地址则默认登录到 docker hub 上
退出
2)docker logout
查找
3)docker search
从镜像仓库中拉去指定镜像。
docker pull [OPTIONS] NAME[:TAG|DIGEST]
向仓库推送本地镜像
docker push [OPTIONS] NAME[:TAG]
镜像操作
列出本地的镜像。
1)docker images
显示镜像的详细信息
2)docker image inspect
标记本地镜像将其归入某一个仓库。
3)docker tag 现有镜像 新镜像
删除本地镜像可以通过镜像ID或者仓库:tag的方式指定要删除的镜像
4)docker rmi
对镜像文件保存成 tar 归档文件-o 选项指定要输出的文件
5)docker save
导出 docker save 归档的镜像使用 -i 指定加载的文件
6)docker load
总结: Docker 如何实现镜像
1) namespace
namespace 是 Linux 内核用来隔离内核资源的方式。Linux namespaces 是对全局系统资源的一种封装隔离使得处于不同 namespace 的进程拥有独立的全局系统资源改变一个 namespace 中的系统资源只会影响当前 namespace 里的进程对其他 namespace 中的进程没有影响。
Linux 提供了多个 API 用来操作 namespace它们是 clone()、 setns() 和 unshare() 函 数为了确定隔离的到底是哪项 namespace在使用这些 API 时通常需要指定一些 调用参数
namespace系统调用参数对应全局系统资源UTSCLONE_NEWUTS主机名与域名IPCCLONE_NEWIPC信号量、消息队列、共享内存PIDCLONE_NEWPID进程IDNetworkCLONE_NEWNET网络设备、网络栈、端口等MountCLONE_NEWNS文件系统挂载点UserCLONE_NEWUSER用户和用户组
2) cgroup
cgroups(Control Groups) 是 linux 内核提供的一种机制 这种机制可以根据需求把一系列系统任务及其子任务整合(或分隔)到不同组内一个组内的资源使用使用是有上限的从而实现了对资源的控制。
本质上来说 cgroups 是内核附加在程序上的一系列钩子(hook)通过程序运行时对资源的调度触发相应的钩子以达到资源追踪和限制的目的
cgroup可以管理的子系统有
blkio对块设备的 IO 进行限制cpu限制 CPU 时间片的分配cpuacct生成 cgroup 中的任务占用 CPU 资源的报告与 cpu 挂载在同 一目录cpuset给 cgroup 中的任务分配独立的 CPU(多处理器系统) 和内存节 点devices限制设备文件的创建和对设备文件的读写freezer暂停/恢复 cgroup 中的任务memory对 cgroup 中的任务的可用内存进行限制并自动生成资源占用报告。perf_event允许 perf 观测 cgroup 中的 tasknet_cls让 Linux 流量 控制器tc 指令可以识别来自特定 cgroup 任务的数据包并 进行网络限制hugetlb限制使用的内存页数量pids限制任务的数量。rdma限制 RDMA 资源(Remote Direct Memory Access远程直接数 据存取)
3) LXC
LXC是操作系统层的虚拟化技术它将应用软件打包成一个软件容器内含应用软件本身的代码以及所需要的库和各种依赖项创造出应用程序的独立沙箱运行环境 。
LXC的各种操作都是通过命令行交互完成的因此通过批量命令创建实现数据迁移并不容易其隔离性也没有虚拟机这么强大还是具有一定的缺陷。后来的docker可以说是LXC的加强
Docker常见的网络类型 bridge网络 bridge 驱动会在 Docker 管理的主机上创建一个 Linux 网桥。默认情况下网桥上的容器可以相互通信。也可以通过 bridge 驱动程序配置实现对外部容器的访问。当我们需要多个容器在同一个 Docker 主机上通信时桥接网络是最佳选择 host网络 移除容器和 Docker 主机之间的网络隔离并直接使用主机的网络。当网络堆栈不应与 Docker 主机隔离但是希望容器的其他资源被隔离时主机网络是最佳选择
缺点:可能占用主机的端口 container网络 让新创建的容器与已存在的容器共享一个网络而不是与宿主机共享网络。 none网络 容器网络完全隔离 overlay网络 跨主机网络当我们需要运行在不同Docker 主机上的容器进行通信时或者当多个应用程序使用集群服务协同工作时覆盖网络是最佳选择。
bridge网络如何实现
整体 细节介绍:
网络命名空间 (Network Namespace)
网络命名空间是 Linux 提供的一种机制用于隔离网络资源。每个网络命名空间拥有自己的网络设备、IP 地址、路由表、/proc/net 目录等。这意味着不同的容器可以有各自独立的网络环境。
虚拟以太网设备 (veth pair)
veth pair 是成对出现的虚拟网络设备两个 veth 设备之间通过虚拟链路连接。当一个 veth 设备收到数据包时它会将数据包传递给另一个 veth 设备。
当启动一个容器时会创建一对 veth 设备例如 veth0 和 veth1。veth0 连接到宿主机的网络命名空间而 veth1 连接到容器的网络命名空间。
https://github.com/lixd/daily-notes/blob/master/ComputerScience/Linux/veth%E8%AE%BE%E5%A4%87%E5%AF%B9.md
如图 圈圈内的就是 veth pair 生成的虚拟链路连接 网桥 (Bridge)
网桥是一种虚拟网络设备可以将多个网络设备连接在一起相当于一个虚拟的交换机。它允许连接到它的所有设备之间进行通信。
在宿主机上创建一个虚拟网桥设备例如 。将 veth 对中的一端veth0连接到这个网桥上。
https://github.com/lixd/daily-notes/blob/master/ComputerScience/Linux/bridge%E8%AE%BE%E5%A4%87.md
如图,圈内的就是 网桥