Docker
文章平均质量分 68
Docker 容器技术学习记录
托瓦斯克一
笔记录,追云原生
展开
-
Docker 资源隔离
技术实现Docker 是使用 Linux 的 Namespace 技术实现各种资源隔离的。Namespace 是 Linux 内核的一项功能,该功能对内核资源进行分区,以使一组进程看到一组资源,而另一组进程看到另一组资源。Namespace 的工作方式通过为一组资源和进程设置相同的 Namespace 而起作用,但是这些 Namespace 引用了不同的资源。资源可能存在于多个 Namespace 中。这些资源可以是进程 ID、主机名、用户 ID、文件名、与网络访问相关的名称和进程间通信。Nam原创 2021-01-15 23:56:21 · 619 阅读 · 0 评论 -
Docker 容器监控
监控原理Docker 是基于 Namespace、Cgroups 和联合文件系统实现的。其中 Cgroups 不仅可以用于容器资源的限制,还可以提供容器的资源使用率,无论何种监控方案的实现,底层数据都来源于 Cgroups。Cgroups 的工作目录为 /sys/fs/cgroup,该目录下包含了 Cgroups 的所有内容,Cgroups 包含很多子系统,可以用来对不同的资源进行限制,例如对 CPU、内存、PID、磁盘IO 等资源进行限制和监控。总的来说,容器的监控原理其实就是定时读取 Linux原创 2021-01-15 23:55:46 · 551 阅读 · 0 评论 -
Docker 容器安全
容器与虚拟机区别由下图可见,虚拟机是通过管理系统(Hypervisor)模拟出 CPU、内存、网络等硬件,然后在这些模拟的硬件上创建客户内核和操作系统。这样做的好处就是虚拟机有自己的内核和操作系统,并且硬件都是通过虚拟机管理系统模拟出来的,用户程序无法直接使用到主机的操作系统和硬件资源,因此虚拟机也对隔离性和安全性有着更好的保证。而 Docker 容器则是通过 Linux 内核的 Namespace 技术实现了文件系统、进程、设备以及网络的隔离,然后再通过 Cgroups 对 CPU、内存等资源进行限原创 2021-01-15 23:55:03 · 340 阅读 · 0 评论 -
Docker 镜像多阶段构建
背景在 Docker 的早期版本中,对于编译型语言(如C、Java、Go)的镜像构建,我们只能将应用的编译和运行环境,全部放到一个 Dockerfile 中,导致了我们构建出来的镜像体积过大,从而增加了镜像的存储和分发成本。以下是一个以 Go 语言开发的 HTTP 服务为例:使用 Docker.build 文件来编译应用程序,使用 Dockerfile 文件来构建应用的运行环境,然后通过额外引入的 build.sh 脚本文件实现镜像编译和运行环境的分离,但这使得整个构建过程复杂且不够透明。###原创 2021-01-15 23:54:27 · 303 阅读 · 0 评论 -
Dockerfile 最佳生产实践
好处生产实践中一定优先使用 Dockerfile 的方式构建镜像,因为使用 Dockerfile 构建镜像可以带来如下好处:● 易于版本化管理,Dockerfile 本身是一个文本文件,方便存放在代码仓库中做版本管理,可以很方便地找到各个版本之间的变更历史;● 过程可追溯,Dockerfile 的每一行指令代表一个镜像层,根据 Dockerfile 的内容即可明确地查看镜像的完整构建过程;● 屏蔽构建环境异构,使用 Dockerfile 构建镜像无须考虑构建环境,基于相同 Dockerfile 无原创 2021-01-15 23:53:57 · 159 阅读 · 0 评论 -
Docker 私有仓库
概念关系注册服务器(Registry)和仓库(Repository)概念的区别:注册服务器是存放仓库的实际服务器,而仓库则可以被理解为一个具体的项目或者目录;注册服务器可以包含多个仓库,而每个仓库又可以包含多个镜像。举例:镜像地址为 docker.io/centos,docker.io 是注册服务器,centos 是仓库名。公共镜像仓库公共镜像仓库一般是 Docker 官方或者其他第三方组织(阿里云,腾讯云,网易云等)提供的,允许所有人注册和使用的镜像仓库。可以进入 Docker Hub原创 2021-01-15 23:53:10 · 166 阅读 · 0 评论 -
Docker 容器基本操作
容器生命周期容器的生命周期是容器可能处于的状态,主要有以下五种:● created:初建状态● running:运行状态● stopped:停止状态● paused:暂停状态● deleted:删除状态容器操作初建启动容器通过 docker create 命令创建的容器是处于初建状态的,需要通过 docker start 命令来启动初建容器;当然我们也可以通过 docker run 命令一步完成容器的初建与启动。当使用 docker run 创建并启动容器时,Docker 后台原创 2021-01-15 23:52:39 · 176 阅读 · 0 评论 -
Docker 镜像使用
拉取镜像Docker 镜像的拉取,可以使用 docker pull 命令,命令格式一般为 docker pull [Registry]/[Repository]/[Image]:[Tag]。而且执行拉取命令时,都是先从本地搜索,如果本地搜索不到镜像则从 Docker Hub 下载镜像。● Registry:为注册服务器,Docker 默认会从 docker.io 拉取镜像,可以将其替换为自己的注册服务器。● Repository:为镜像仓库,通常把一组相关联的镜像归为一个镜像仓库,library原创 2021-01-15 23:51:17 · 126 阅读 · 0 评论 -
Docker 核心概念及架构
Docker 核心概念镜像镜像是什么呢?通俗地讲,它是一个只读的文件和文件夹组合。它包含了容器运行时所需要的所有基础文件和配置信息,是容器启动的基础。所以你想启动一个容器,那首先必须要有一个镜像。镜像是 Docker 容器启动的先决条件。镜像使用有以下两种方式:● 自建镜像:在基础镜像上添加一些用户自定义的内容,多见于 Dockerfile。● 他人镜像:在镜像仓库上获取已制作好的一些常用的软件或者系统镜像,类似官方的 Docker Hub。容器容器是什么呢?容器是 Docker 的原创 2021-01-15 23:49:33 · 290 阅读 · 0 评论 -
容器技术原理
chrootchroot 就是 change root,也就是可以改变某进程的根目录,使这个程序不能访问该目录之外的其他目录,增进系统的安全性,限制使用者能做的事。以下例子说明:/home/opt_user/rootfs 目录下有一些目录和文件,然后使用 chroot 命令启动一个 sh 进程,并且把 /home/opt_user/rootfs 目录作为 sh 进程的根目录。$ cd /home/opt_user/rootfs$ ls bin busybox.tar dev etc ho原创 2021-01-15 23:46:58 · 399 阅读 · 0 评论