首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Java编程技术

    Docker容器本质

    image.png 先说结论:Docker容器本质是一个特殊进程。 学过操作系统大家应该知道进程其实是计算机中程序关于某数据集合上一次运行活动,是系统进行资源分配和调度基本单位。 其实在操作系统视角来看,处于运行时Docker容器本身也是一个进程,只是这个进程比较特殊,下面我们就来说说他特殊在哪里 针对Linux容器来说,为了实现容器间资源隔离与限制,其对容器进程做了下面的处理 第一:其使用Linux提供NameSpace技术来修改Docker容器进行时视图,实现每个容器有相互隔离网络命名空间、进程空间等;比如你在Docker容器内查看进程列表,会发现容器自身是1号进程, 其并看不到操作系统视角其他进程,比如每个docker容器看到都是各自独立文件系统,相互之间不会影响。 它最主要作用,就是限制一个进程组能够使用资源上限,包括 CPU、内存、磁盘、网络带宽等等。 总结:针对Linux内核容器,比如Docker容器来说,其本质是一个特殊进程。

    50320编辑于 2023-03-23
  • 来自专栏JavaEdge

    Docker容器实战(八) - 漫谈 Kubernetes 本质

    在前面以Docker项目为例,一步步剖析了Linux容器具体实现方式。 这个重要假设,正是容器技术圈在Docker项目成功后不久,就迅速走向了“容器编排”这个“上层建筑”主要原因: 作为云基础设施提供商,只要能够将用户提交Docker镜像以容器方式运行,就能成为容器生态图上一个承载点 这就意味着,像Docker这样容器镜像”在Borg中是不存在,Borglet组件也自然不需要像kubelet这样考虑如何同Docker进行交互、如何对容器镜像进行管理问题,也不需要支持CRI、CNI 在“功能单位”划分上,容器却有着独到“细粒度”优势: 毕竟容器本质,只是一个进程而已 就是说,只要你愿意,那些原挤在同一VM里各个应用、组件、守护进程,都可被分别做成镜像! 所以说,Kubernetes本质,是为用户提供一个具有普遍意义容器编排工具。 Kubernetes为用户提供不仅限于一个工具。

    1K30发布于 2019-10-18
  • 来自专栏五分钟学K8S

    五分钟学K8S系列 - docker 容器本质

    上一篇我们从linux 容器诞生,与架构对docker 有了初步了解,这个篇章我们将透过现象看本质,深入探索Linux容器化与Docker 技术 原理与本质。      Docker 是一种流行容器化平台,它利用 Linux 内核中 cgroups 和 namespaces 特性实现了轻量级容器隔离。 Docker 工作流程在 Docker 中,容器创建和运行可以分为以下四个步骤:镜像获取    Docker 镜像是一个文件系统层集合,包含了应用程序运行所需所有组件。 然后,Docker 会将容器进程切换到容器网络命名空间中,以获得独立网络接口和 IP 地址。 此外,Docker 还会挂载容器文件系统层,并启动容器中定义应用程序。

    53220编辑于 2024-04-30
  • 来自专栏编程黑洞

    容器本质

    举个例子 NameSpace可以让当前进程只能看到当前Namespace里进程,看不到宿主机创建进程。并且运行容器命令为1号进程。 再次证明容器也只是宿主机中一个进程而已。 先拷贝一个文件系统出来作为我们容器根文件系统 docker export 48ab2ddd04dc | tar -C . cgroup情况 当然docker已经封装好了,直接调用以下命令即可实现上面CPU限制 docker run -it --cpu-period=100000 --cpu-quota=20000 ubuntu /bin/bash 可以看到在/sys/fs/cgroup/cpu,cpuacct/docker目录下创建了该容器目录,目录下面包含了资源限制文件 [root@k8s-worker1 docker]

    47720编辑于 2023-03-06
  • 来自专栏嘉为动态

    Docker操作实践(1):容器本质是什么?容器从何而来?

    本文结合理论与实战,先是从进程隔离、文件隔离、namespace、cgroups、libcontainer展开介绍容器本质与概念,然后分析docker技术架构,最后演示docker常用操作。 而今天,我们就先从docker原理开始。 微信图片_20190910094723.jpg 容器本质之进程隔离 1. 容器本质 容器本质上是一种进程隔离技术。 并且使用“障眼法”对这个子进程进程编号进行了重新编号,使得用户在容器中查看进程时,如同身处于一个OS环境中。 容器本质之文件隔离 1. 使用chroot来实现文件隔离 容器本质是进程隔离,那么容器与外部之间也会存在着文件隔离。文件系统隔离,这也是容器概念起始。 Docker发展状况 从goole热度上可以获取到docker热度如下: ? 容器本质之Namespace 1.

    2.4K41发布于 2019-09-25
  • 来自专栏漫漫架构路

    探寻容器本质

    什么是容器技术 云原生基础就是容器化。可以说正是容器技术快速发展,才推动了云原生时代浪潮。 要想理解容器本质,我们先来聊聊是容器技术。 简单来说,镜像就是把应用程序运行所依赖环境、配置等打包成一个文件;而仓库则是保存和管理这些镜像地方。这两个概念我们后面的章节会详细展开,本节就先来说一下容器容器本质 那么到底什么是容器呢? 我们结合 Docker 官方图片来感性理解下:  Docker Logo 是一条小鲸鱼,其实它代表是码头工人,上面运输就是一个个标准化、可装卸、互相隔离集装箱。 其实容器和集装箱做是同样事情。结合对集装箱理解,我们尝试给容器下一个定义: 容器,英文 Container,本质就是对进程封装。 我们看下 Docker 官方提供一张对比图: 左边是虚拟机,它核心就是 Hypervisor 虚拟化技术。 简单来说,就是在底层物理机基础上,再虚拟化出是硬件资源,并且在上面创建操作系统。

    63421编辑于 2022-09-28
  • 来自专栏多选参数

    脱掉容器外表,看透容器本质

    对于 Docker 等大多数 Linux 容器来说,Cgroups 技术是用来制造约束主要手段; Namespace 技术则是用来修改进程视图主要方法; 下面我们使用 C 语言和 Namespace ” 上面其实已经基本实现了一个容器,接下去我们实现一下 Docker基本原理(假设你已经知道卷是什么了)。 同理,在使用 Docker 时候,其实也并没有一个真正 Docker 容器运行在宿主机里面。 Docker 项目启动还是用户原来应用进程,只是在创建进程时候,Docker 为这个进程指定了它所需要启用一组 Namespace 参数。 相比虚拟机方式,本质是进程容器则仅仅是在操作系统上划分出了不同“运行环境”,从而使得占用资源更少,部署速度更快。 巨人肩膀 1.

    66610发布于 2020-12-03
  • 来自专栏Go语言指北

    拿捏docker+k8s系列--docker容器

    -d :以后台方式启动 --name : 为启动容器命名 docker ps 查看 Docker host中当前运行容器 -a :显示所有状态容器 进入容器 docker attach 使用 docker 容器操作 docker stop 可以停止运行容器 容器docker host 中实际上是一个进程,docker stop 命令本质上是向该进程发送一个 SIGTERM 信号。 docker start 重新启动 对于处于停止状态容器,可以通过 docker start 命令重新启动。docker start 会保留容器第一次启动时所有参数。 docker pause/unpause 暂停容器/恢复容器 当我们需要对容器文件系统打个快照或者 docker host 需要使用 CPU 时候,可以 docker pause 暂停容器,处于暂停状态容器不会占用 docker rm 可以一次性指定多个容器,例如,删除所有已经停止容器docker rm $(docker ps -a -q) -v :删除与容器关联卷。

    79830编辑于 2022-05-24
  • 来自专栏区块链入门

    【实践】8.DOCKER之操作容器

    摘要 本文介绍Docker 容器container操作,包括创建、启动和停止等。容器是独立运行一个或一组应用,以及它们运行态环境。 因为 Docker 容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。 2.1.1 新建并启动 所需要命令主要为 docker run。 $ docker run -t -i ubuntu:18.04 /bin/bash root@af8bae53bdd3:/# 其中,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器标准输入上 在交互模式下,用户可以通过所创建终端来输入命令,例如 root@af8bae53bdd3:/# pwd / root@af8bae53bdd3:/# ls bin boot dev etc home $ docker run -dit ubuntu 69d137adef7a8a689cbcb059e94da5489d3cddd240ff675c640c8d96e84fe1f6 $ docker

    91630发布于 2021-05-27
  • 来自专栏开源部署

    解决CentOS 8 Docker容器无法上网问题

    CentOS 8已经发行好长一段时间,为了尝鲜在Online独服上安装了CentOS 8系统,随之问题来了,发现Docker容器无法访问外网,而CentOS 7上则不存在这个问题。 排错分析 一开始怀疑是Docker DNS设置问题,导致Docker容器无法解析。 Docker容器还是无法联网。 解决办法 通过搜索了解到CentOS 8上防火墙发生了一些变化,防火墙原来使用iptables,现在使用nftables,猜测可能是转发引起问题。 总结 可通过修改/etc/docker/daemon.json设置Docker DNS CentOS 8防火墙由iptables变更为了nftables 可通过修改Firewalld配置文件/etc/firewalld

    2.7K10编辑于 2022-08-13
  • 来自专栏程序人生丶

    Docker学习路线8容器注册表

    容器注册表是Docker容器镜像集中存储和分发系统。它允许开发人员以这些镜像形式轻松共享和部署应用程序。 以下是当今流行容器注册表列表: Docker Hub:Docker Hub是公共Docker镜像默认注册表,是开发人员之间共享和分发镜像平台。 DockerHub DockerHub 是由Docker Inc提供基于云注册服务。它是默认公共容器注册表,您可以在其中存储、管理和分发Docker映像。 Docker 容器注册表,简化了存储、管理和部署 Docker 映像过程。 镜像标记最佳实践 正确地标记您 Docker 镜像对于有效容器管理和部署至关重要。 使用语义化版本控制 当标记您镜像时,建议遵循语义化版本控制准则。

    1.5K30编辑于 2023-07-19
  • 来自专栏喵叔's 专栏

    Docker极简教程》--Docker容器--Docker容器概念

    一、Docker容器基本概念 1.1 Docker容器是什么? Docker容器是一种轻量级、可移植虚拟化技术,用于打包、运输和运行应用程序及其所有依赖项。 1.2 Docker镜像与容器关系 Docker镜像和容器之间有着密切关系,它们是Docker技术中两个核心概念,相辅相成,共同构建了Docker容器环境。 Docker容器Docker容器Docker镜像运行实例,它是一个独立、可执行进程,具有自己文件系统、网络和进程空间。 以下是一些Docker容器主要特性: 轻量级: Docker容器与传统虚拟机相比,具有更低资源消耗和更快启动时间。 它支持高可用性、负载均衡等功能,适用于生产环境部署。 Kubernetes(K8s): Kubernetes是由Google开源容器编排平台,用于自动化部署、扩展和管理容器化应用程序。

    3.1K11编辑于 2024-05-24
  • 来自专栏全栈测试技术

    Docker笔记8 | Docker内部以及容器之间如何管理数据?

    数据卷是一个可供一个或多个容器使用特殊目录;类似于 Linux 下对目录或文件进行 mount,镜像中被指定为挂载点目录中文件会复制到数据卷中(仅数据卷为空时会复制)。 1.2 数据卷特性数据卷可以在容器之间共享和重用;数据卷修改立马生效;数据卷更新不会影响镜像;数据卷默认一直存在,即使容器被删除。 :在用 docker run 命令时候,使用 --mount 标记来将 数据卷 挂载到容器里;可挂挂载多个数据卷。 比如:面创建一个名为 tools容器,并加载一个 数据卷 到容器 /usr/share/nginx/tools 目录:docker run -d -P --name tools --mount source volume rm xxx;比如:docker volume rm my-tools;图片注意:**Docker 不会在容器被删除后自动删除;在删除容器时候使用 docker rm -v,同时移除数据卷

    73550编辑于 2023-05-24
  • 来自专栏coder修行路

    Docker容器

    容器管理操作 容器常见命令:查看、创建、启动、终止和删除 创建容器 docker create docker run 二者区别在于docker create创建容器处于停止状态,docker run 创建容器处于启动状态 用docker create创建一个停止状态容器 [root@docker ~]# docker create centos:6.7 Unable to find image Pull complete 2352e8cfa843: Pull complete a8b4df3be85c: Pull complete Digest: sha256:1fbc7ab8bd38dcb1c5b9608ac5358dbc1d3718b8e85c69bf5224d72e5f6d2e22 ~]# 这里也可以验证docker ps 以及docker ps –a区别 docker ps 显示为正在运行容器 docker ps –a 显示所有的容器 docker ps其他参数: docker 查看容器日志 docker logs –f 容器名 可以查看容器日志 参数: -tail 可以查看输入日志行数 -f 将只需输入最新日志 查看容器进程 docker top 容器名 可以查看容器进程

    1.3K70发布于 2018-01-04
  • 来自专栏全栈程序员必看

    docker停止运行中容器(docker关闭容器)

    问题描述: centos 启动一个容器添加了-d 参数,但是docker ps 或者docker ps -a查看却已经退出了 shell>docker run -d centos a44b2b88559b68a2221c9574490a0e708bff49d88ca21f9e59d3eb245c7c0547 shell>docker ps 退出原因 1、docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,就会自行退出 2、容器运行命令如果不是那些一直挂起命令( 运行top ,tail、循环等),就是会自动退出 3、这个是 docker 机制问题 解决方案 方案1: 网上有很多介绍,就是起一个死循环进程,让他不停循环下去,前台永远有进程执行,那么容器就不会退出了,以 ,还占用一个终端 方案2: shell>docker run -dit centos /bin/bash 添加-it 参数交互运行 添加-d 参数后台运行 这样就能启动一个一直停留在后台运行Centos shell>docker ps 容器运行起来了 进入容器方法: 使用exec,不要使用attach命令 attach命令就是使用现有终端,如果你要退出容器操作,那么bash结束,容器也就退出了

    10.5K20编辑于 2022-07-25
  • 来自专栏全栈程序员必看

    docker容器启动(docker容器启动时间)

    大家好,又见面了,我是你们朋友全栈君。 在使用-d参数时,容器启动后会进入后台,用户无法看到容器信息,也无法进行操作。 1、attach命令 attach命令是Docker自带命令,命令格式为: docker attach [–detach-keys[=[]]] [–no-stdin] [–sig-proxy[ 2、exec命令 Docker从1.3.0版本起提供了一个更加方便exec命令,可以在容器内直接执行任意命令。 例如进入到刚创建容器中,并启动一个bash: 可以看到,一个bash终端打开了,在不影响容器内其他应用前提下,用户可以很容易与容器进行交互。 ,可以通过下面的命令获取: PID=$(docker inspect --format "{ { .State.Pid }}" ) 通过这个PID,就可以连接到这个容器: $ nsenter -

    4.4K30编辑于 2022-07-30
  • 来自专栏运维开发故事

    【K8S专栏】Docker容器技术剖析

    容器本质上是在解决资源隔离问题。所以在技术萌芽期,主要是在解决隔离哪些资源以及如何隔离问题。 从技术发展来看,可以将资源隔离大致分为五种。 进程隔离:OS以进程作为Task运行过程抽象,进程拥有独立地址空间和执行上下文,本质上OS对进程进行了CPU和内存虚拟化。 Kubernetes容器编排服务:Google 是理所当然最早试水 Kubernetes 容器编排服务大厂,也较早开展了 K8s 容器编排服务。 发展态势可以概括为: 行业对容器接受程度已经很高,容器化普及率也是逐年提升。 容器编排系统已经一战定江山,K8s 成为事实上容器编排之王。 如果我们在当前操作系统上创建一个容器,进容器查看进程,如下: # docker run -d --name busybox busybox sleep 3000 b776c8105860a5d46046365ca03b71ec13dac9e1dbe4b8d392e468d49a42020f

    1K20编辑于 2022-09-15
  • 来自专栏喵叔's 专栏

    Docker极简教程》--Docker容器--Docker容器创建和使用

    二、管理Docker容器 2.1 启动和停止容器 启动和停止容器是使用 Docker 运行容器时常见操作。 使用这些命令,你可以方便地控制 Docker 容器启动和停止。 2.2 查看容器状态 要查看容器状态,你可以使用 docker ps 命令。这个命令用于列出当前正在运行容器。 四、Docker容器部署与扩展 4.1 Docker Compose Docker Compose 是一个用于定义和运行多容器 Docker 应用程序工具。 4.2 使用Docker Swarm进行集群部署 Docker Swarm 是 Docker 官方提供容器编排工具,它允许你将多个 Docker 主机组合成一个虚拟容器集群,以便于部署、管理和扩展容器化应用程序 4.3 Kubernetes与Docker容器整合 Kubernetes(通常简称为 K8s)是一个开源容器编排平台,用于自动化容器化应用程序部署、扩展和管理。

    15.8K00编辑于 2024-05-24
  • 来自专栏全栈程序员必看

    docker启动mysql容器失败_docker容器

    大家好,又见面了,我是你们朋友全栈君。 什么是 Docker? Docker 是一种工具,它让容器创建,部署和运行应用程序变得更加容易。 容器使开发人员可以将应用程序与所需所有部分(如库和其他依赖项)打包在一起,并将其作为一个包进行部署。 这样,借助容器,开发人员可以放心,该应用程序可以在任何其他Linux机器上运行,而不用管该机器环境配置。 启动 MySQL 容器 创建一个 Docker Volume,Volume 是用来储存状态,这里就是用来存储数据。 如此一来,就算我们不小心移除了 MySQL 容器,数据依然会保留下来: $ docker volume create tinylearn-vol 复制代码 启动容器: $ docker run --name

    5.6K20编辑于 2022-11-10
  • 来自专栏运维猫

    docker容器概念

    Docker 架构: Docker 是一种容器实现方式,受到多家公司支持,红帽在红帽 企业 Linux Atomic Host 平台中提供支持 Docker Hub 提供大量由社区开发容器 Docker 采用 CS 架构: - 客户端:docker 命令负责与服务器通信,通过 RESTful API 操作 - 服务器端:docker 服务作为守护进程运行,承担创建、运行和下 载容器镜像任务 Docker 内核: 容器DockerDocker 格式容器镜像创建,通过 Linux 内 核若干功能相互隔离。 每个容器 进程放入唯一类别中,从而互相隔离 Docker 容器镜像: Docker 中每个容器由一系列层(layer)组成,组成虚拟文件系 统。 Docker 容器镜像具只读;添加额外层会覆盖其内容,但不会更改。

    1.5K30发布于 2019-09-23
领券