Docker-网络
参考文献
Docker网络
Docker网络
查看网络信息
12345678# docker network lsNETWORK ID NAME DRIVER SCOPE7731f800c2eb bridge bridge local27625663ead5 docker_default bridge local4b09ca6ec339 host host localec7e23d9e6bb mongodb_default bridge local23e5b7358579 none null local52dda41afae6 prod_default bridge local
查看某个网络的详细信息
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505 ...
Docker-docker-compose
参考文献
Enabling GPUs in the Container Runtime Ecosystem
安装
通过https://github.com/docker/compose/releases下载docker-compose二进制文件
下载完成后手动上传到linux指定目录/usr/local/bin,将其文件名修改成docker-compose.然后给其加上可执行权限
12# 因为下载后的docker-compose文件是一个可执行脚本,所以要开放其权限chmod +x /usr/local/bin/docker-compose
创建软链
1$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Docker Compose
Docker Compose 的前身是 Orchard 公司开发的 Fig,2014 年 Docker 收购了 Orchard 公司,然后将 Fig 重命名为 Docker Compose.现阶段 Docker Compose 是 Docker 官方的单 ...
Docker-实现原理
参考文献
底层实现原理及关键技术
Docker与虚拟机的区别
虚拟机是通过管理系统(Hypervisor)模拟CPU,内存,网络等硬件,然后在这些模拟的硬件上创建客户内核和操作系统.
这样做的好处就是虚拟机有自己的内核和操作系统,并且硬件都是通过虚拟机管理系统模拟出来的,用户程序无法直接使用到主机的操作系统和硬件资源,因此虚拟机也对隔离性和安全性有着更好的保证.
Docker容器则是通过Linux内核的Namespace技术实现了文件系统、进程、设备以及网络的隔离,然后再通过Cgroups对CPU、内存等资源进行限制,最终实现了容器之间相互不受影响,由于容器的隔离性仅仅依靠内核来提供,因此容器的隔离性也远弱于虚拟机
资源限制
123--cpus 限制 CPU 配额-m, --memory 限制内存配额--pids-limit 限制容器的 PID 个数
1docker run -it --cpus=1 -m=2048m --pids-limit=100 ...
Docker-Dockerfile
参考文献
Dockerfile指令
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980# 注释# FROM <image>或者FROM<image>:<tag># 第一条指令必须为FROM指令.并且,如果在同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令(每个镜像一次)# FROM [--platform=<platform>] <image> [AS <name>]# FROM [--platform=<platform>] <image>[:<tag>] [AS <name>]# FROM [--platform=<platform>] <image>[@<diges ...
Docker-仓库
参考文献
仓库
使用docker login登录镜像仓库
使用docker push repository/image推送镜像到镜像仓库
仓库镜像搭建选择
Distribution
Harbor
Docker-镜像
参考文献
极客时间 <<Kubernetes入门实战课>>
镜像
Docker镜像是静态的分层管理的文件组合,镜像底层的实现依赖于联合文件系统(UnionFS)
镜像是如何构建的
构建过程不是由Docker客户端进行的,而是将整个目录的文件上传到Docker守护进程并在那里进行的.Docker客户端和守护进程不要求在同一台机器上.
如果要在一台Linux系统中使用Docker,客户端就运行在你的宿主操作系统上,但是守护进程运行在一个虚拟机内.由于构建目录中的文件都被上传到了守护进程中,如果包含了大量的大文件而且守护进程不在本地运行,上传过程会花费更多的时间.
注意: 不要在构建目录中包含任何不需要的文件,这样会减慢构建的速度-尤其当Docker守护进程运行在一个远端机器的时候.
镜像分层
镜像不是一个大的二进制块,而是由多层组成,不同镜像可能会共享分层,这会让存储和传输变得更加高效.所有组成基础镜像的分层只会被存储一次.拉取镜像的时候,Docker会独立下载一层.一些分层可能已经存储在机器上了,所以Docker只会下载未被存储的分层.
构建镜 ...
Docker-容器
参考文献
容器
容器是基于镜像创建的可运行实例,并且单独存在.
一个镜像可以创建多个容器.
容器实现原理
chroot
chroot是在Unix和Linux系统的一个操作,针对正在运作的软件行程和它的子进程,改变它外显的根目录.一个运行在这个环境下,经由chroot设置根目录的程序,它不能够对这个指定根目录之外的文件进行访问动作,不能读取,也不能更改它的内容.
即chroot就是可以改变某进程的根目录,使这个程序不能访问目录之外的其他目录
Namespace
Namespace 是 Linux 内核的一项功能,该功能对内核资源进行隔离,使得容器中的进程都可以在单独的命名空间中运行,并且只可以访问当前容器命名空间的资源.Namespace 可以隔离进程 ID、主机名、用户 ID、文件名、网络访问和进程间通信等相关资源.
Docker 主要用到以下五种命名空间.
pid namespace:用于隔离进程 ID.
net namespace:隔离网络接口,在虚拟的 net namespace 内用户可以拥有自己独立的 IP、路由、端口等.
mnt namespace:文 ...
Docker-杂项
参考文献
docker扫盲,面试连这都不会就等着挂吧!
Ubuntu离线安装NVIDIA Docker
Docker开启远程安全访问
Docker基础概念与操作
Docker核心概念: 镜像,容器,仓库.
镜像是Docker容器启动的先决条件.
容器是镜像的运行实体,镜像是静态的只读文件,容器带有运行时需要的可写文件层,并且容器中的进程存于运行状态.即容器运行着真正的应用程序.
仓库用来存储和分发Docker镜像.镜像仓库分为公共镜像仓库和私有镜像仓库.
镜像,容器,仓库三者之间的关系
镜像是容器的基石,容器是由镜像创建的.
一个镜像可以创建多个容器,容器是镜像运行的实体.
仓库用来存放和分发镜像的.
安装Docker
123456789101112131415161718192021curl -fsSL https://get.docker.com | sudo sh -s -- --mirror Aliyunsudo usermod -aG docker $USERsudo mkdir -p /etc/dockersudo tee /etc/docker/dae ...