首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏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
  • 来自专栏编程黑洞

    容器本质

    举个例子 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实践(5) 容器插件docker plugin

    插件具有易于理解名称,它们是简短小写字符串。例如, flocker或weave 。 插件可以在容器内部或外部运行。目前建议在容器外运行它们。 5、API设计 插件API是基于HTTPRPC样式JSON,非常类似于webhooks。 请求从 Docker守护程序(Docker daemon)到 该插件。 当将插件打包为容器时,这可能会有所帮助,因为它使插件容器有机会在依赖于它们任何用户容器失败之前启动。 我们此时创建容器指定容器内目录挂接到刚刚创建卷上: 在/nfsshare/vol1 中会有容器内nginx默认发布页: 我们对此默认发布页面进行更改: 此时我们假设这个容器被意外销毁了(直接删除) : 我们模拟此时该容器被集群迁移到了另外一个节点,我们以相同命令在server2上创建相同容器: 可以看到此时用户访问所看到页面是不变,因为两个节点间创建容器挂接卷是相同,数据是同步

    2.8K10编辑于 2023-12-10
  • 来自专栏全栈测试技术

    Docker笔记5 | 容器基本操作

    1 启动容器 1.1 启动方式 两种启动方式: 新建容器并启动; 终止状态容器重新启动。 分配一个伪终端并绑定到容器标准输入上 -i 让容器标准输入保持打开 1.3 docker run时运行过程 图片 图片 1.4 启动已终止容器 命令:docker container start 导出容器 命令:docker export; 图片 4.2 导入容器 命令:docker import; 图片 5 删除容器 命令:docker container rm; 图片 这个命令是删除没有运行容器 ; 如果删除运行中容器,会提示容器正在运行,无法删除: noamanelson@noamanelson-Virtual-Machine:~$ docker container ls CONTAINER ,可以加-f参数: 图片 删除所有处于终止状态容器,使用命令docker container prune: 使用docker container ls -a可以查看终止容器 图片 使用清除命令:

    44030编辑于 2023-05-11
  • 来自专栏多选参数

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

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

    66610发布于 2020-12-03
  • 来自专栏finleyMa

    docker学习系列5 nginx 容器

    本节通过学习 docker nginx 镜像,容器使用。以及如何映射文件。 运行容器 docker run --name my-nginx -d -p 8088:80 --rm nginx:1.15 -d:在后台运行 -p :容器80端口映射到 宿主机 8088 - -rm:容器停止运行后,自动删除容器文件 --name:容器名字为 my-nginx ? image.png docker run 其实等于 docker create + start 因为tag为 1.15 nginx 镜像并不在本地,会先下载再运行 浏览器打开 locahost 运行容器 docker run -d -p 80:80 my-nginx:ng-test 注意我映射端口不再是8088,这样 本地浏览器就能访问 ng.test 了 停止容器: 先 docker

    72320发布于 2018-09-10
  • 来自专栏盛开在夏天的太阳

    5.docker容器数据卷

    容器和宿主机之间共享数据 在容器中创建数据, 宿主机可以共享. 在宿主机创建数据, 容器可以共享到. 4. 容器停止退出后, 主机修改数据依然共享 5. docker run -it -v /宿主机绝对路径目录:/容器绝对路径目录:ro 镜像id 这里ro表示是read only, 只读 这是我们使用docker inspect 容器id查看挂在详情 运行容器 查看镜像 docker images ? 我们看到了刚刚生成镜像. 这个镜像就是带有挂载目录镜像. 我们可以通过运行容器查看挂载目录 docker run -it 5a8ecf996d8d ? 进来直接就可以看到挂载目录. 那么在容器和宿主机创建目录, 都可以被共享 比如: 我们在/dataVolumeContainer1中创建一个文件 ? 5.

    59220发布于 2020-09-27
  • 来自专栏老司机的技术博客

    docker实战入门(5)安装mysql容器

    更改镜像源,让下载飞 如果你用docker默认镜像源下载的话,肯定很慢。 推荐使用docker官网中国区镜像。 方法是在在 /etc/docker/目录下新建daemon.json文件。 注意最新版docker默认是没有这个文件,而且进入这个目录需要用root权限。 然后选择5.6版本mysql进行拉取 docker pull mysql:5.6 换了国内镜像源之后拉取速度飞快 安装并运行mysql docker run -p 3306:3306 --name ps 指令查看正在运行容器 配置mysql连接权限 进入mysql容器bash:docker exec -it mysql bash 进入mysql:mysql -uroot -p GRANT start mysql 重启容器

    1.2K110发布于 2018-04-16
  • 来自专栏五分钟学K8S

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

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

    53220编辑于 2024-04-30
  • 来自专栏菩提树下的杨过

    docker学习(5) 在mac中创建mysql docker容器

    github上有一个专门docker-libary项目,里面有各种各样常用docker镜像,可以做为学习示例,今天研究下其中mysql镜像用法,国内镜像daocloud.io也能找到mysql镜像 ,但根据其参考文档在mac上尝试了数次,将mysql数据库文件存储在mac本机时,启动总是报错,大意是docker容器运行时,容器的当前用户mysql,由于权限不足无法mac本机上创建文件,stackoverflow build完成后,可用docker images ls确认下是否在本机生成了名为yjmyzz/mysql-osx镜像,接着就可以创建mysql容器了,示例如下: docker run -d -h mysql mac上连接验证: mysql -h192.168.99.100 -uroot -p123456  上面的ip地址,大家换成自己虚拟机defaultIP mysql参数调整: 先进入容器 docker 因为mysql stop完成瞬间,没有命令在运行,容器生命周期结束),需要在mac机上执行 docker start mysql 上传镜象 为了以后使用方便,可以将mac版mysql镜像上传到daocloud.io

    3.4K80发布于 2018-01-18
  • 来自专栏喵叔's 专栏

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

    一、Docker容器基本概念 1.1 Docker容器是什么? Docker容器是一种轻量级、可移植虚拟化技术,用于打包、运输和运行应用程序及其所有依赖项。 1.2 Docker镜像与容器关系 Docker镜像和容器之间有着密切关系,它们是Docker技术中两个核心概念,相辅相成,共同构建了Docker容器环境。 Docker容器Docker容器Docker镜像运行实例,它是一个独立、可执行进程,具有自己文件系统、网络和进程空间。 工作原理: 当用户运行一个Docker容器时,Docker引擎会根据指定镜像创建一个新容器实例。 以下是一些Docker容器主要特性: 轻量级: Docker容器与传统虚拟机相比,具有更低资源消耗和更快启动时间。

    3.1K11编辑于 2024-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 ~]# 这里也可以验证docker ps 以及docker ps –a区别 docker ps 显示为正在运行容器 docker ps –a 显示所有的容器 docker ps其他参数: docker 都会尝试重启容器 --restart=on-failure:5 :表示接收到一个非0返回代码时最多可以重启5次 终止容器 交互型容器退出容器方法: ctrl+d exit 交互型容器以及后台型容器都可以通过 查看容器日志 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
  • 来自专栏喵叔's 专栏

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

    二、管理Docker容器 2.1 启动和停止容器 启动和停止容器是使用 Docker 运行容器时常见操作。 CREATED STATUS PORTS NAMES abcdef123456 nginx:latest "nginx -g 'daemon of…" 5 minutes ago Up 5 minutes 80/tcp my-nginx-container 123456abcdef mysql:latest "docker-entrypoint.s 四、Docker容器部署与扩展 4.1 Docker Compose Docker Compose 是一个用于定义和运行多容器 Docker 应用程序工具。 例如: docker service scale my-web-app=5 这个命令将增加 my-web-app 服务副本数量到 5 个。

    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
  • 来自专栏NetCore 从壹开始

    2-5 安装容器Web工具:Docker Portainer

    现在已经习惯了容器化了,不仅可以很快配合CICD来实现部署,同时主要是也能解决一些疑难杂症,比如在Linux中经常会有各种图形图像依赖包问题。特别是内网环境。 1、安装Docker基础环境 #Step 1 步骤: 安装必要一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 docker-ce docker-ce-cli containerd.io #Step 4 步骤: 开启Docker服务 sudo service docker start #Step 5 步骤: --version 2、安装容器Web管理工具平台 有时候一个合适管理工具平台,可以达到事半功倍效果,可以实时查看日志等等, 这里推荐个k8s管理工具——LENS,很好用。 管理平台页面整体布局 新版可以直接进入到容器里,方便调试 也可以查看详细日志 也可以查看应用详细内存和CPU占用情况

    95120编辑于 2023-01-09
领券