首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏跟我一起学 K8s

    Docker源码解读

    由于github网站速度太慢,可以采用码云上的代码路径: moby:https://gitee.com/mirrors/moby.git 开启Docker学习之路,需要脚踏实地,从源码开始;网上也有一些关于 Docker源码的学习的资料,但是分析的源码都是比较老的版本,所以这里就班门弄斧一下,将自己学习Docker的总结一下,也是方便自己复习; Goland代码配置: 在GOPATH的目录下:src/github.com /docker/: git clone https://gitee.com/mirrors/moby.git 然后在Goland中添加对应的目录:

    1.3K10发布于 2020-04-26
  • 来自专栏程序人生 阅读快乐

    Docker源码分析

    本书是一本引导读者深入了解Docker实现原理的技术普及读物,主要目标是通过对Docker架构和源代码的详细讲解和解剖,帮助读者对Docker的底层实现有一个全面的理解。 作者通过大量的流程图和代码片段对Docker的架构、Docker的重要模块,特别是对Swarm、Machine和Compose这三个模块进行了详细介绍和深度剖析,无论是Docker的使用者还是开发者,通过阅读此书都可以对 Docker有更深刻的理解,能够更好的使用或者开发Docker

    56320发布于 2018-10-10
  • 来自专栏算法之美

    Docker源码分析(一):Docker架构

    文章来源: InfoQ推出了《Docker源码分析》系列文章。 本系列文章从源码的角度出发,详细介绍Docker的架构、Docker的运行以及Docker的卓越特性。本文是Docker源码分析系列的第一篇­­­——Docker架构篇。 1.2 Docker版本信息 本文关于Docker架构的分析都是基于Docker源码Docker相应版本的运行结果,其中Docker为最新的1.2版本。 的源码并不是一个枯燥的过程,反而可以从中理解Docker架构的设计原理。 6 总结 本文从Docker 1.2的源码入手,分析抽象出Docker的架构图,并对该架构图中的各个模块进行功能与实现的分析,最后通过两个docker命令展示了Docker内部的运行。

    2.1K140发布于 2018-04-13
  • 来自专栏Kubernetes

    docker volume源码分析

    这是在docker v1.10.3版本的使用过程中,使用convoy 作为volume driver,在一次docker volume remove失败时,使我不得不对docker volume 的源码做一次分析 当时考虑是 docker 缓存没有及时清理的问题,于是得去分析下相关代码。 ##docker volume create源码分析: ? 如果此时,convoy和docker daemon缓存信息不同步,则create操作不能如愿了。 ##docker volume remove源码分析: ? 如果此时convoy 中volume数据和docker daemon 缓存中volume数据不一致,也不会得到纠正。 ##docker volume list源码分析: ? 之后docker再收到删除该volume的请求时,docker会调用convoy删除,而convoy中已经没有这个volume了,于是向docker返回失败的信息,因而docker也返回失败。

    1.4K60发布于 2018-04-13
  • 来自专栏golang算法架构leetcode技术php

    golang 源码分析(16):Docker CE 18.03源码

    比如是否设置了"always"呀 ├── runconfig ├── vendor # go的vendor机制 └── volume # volume相关 负责存储配置的一般都叫 xx Store Docker 的设计是单机的,不是分布式的 Docker的设计是Client-Server模式的,平时我们用的docker这个命令被分散到 https://github.com/docker/cli 这个仓库去了 从命令行进入 入口在 cmd/dockerd/docker.go: func newDaemonCommand() *cobra.Command { opts := newDaemonOptions FullTimestamp: true, }) // LCOW: Linux Containers On Windows. ref: https://blog.docker.com 那我们要找一个新的入口点去跟踪 代码,所以我选择 docker run。从 docker/cli 库翻了翻,发现最后是调用 containers/create 这样一个接口。

    60420编辑于 2022-08-02
  • 来自专栏Docker

    Docker】RocketMQ 源码构建 Docker 镜像(基于 ARM 64 架构)

    如果您有其他想要了解的,欢迎私信联系我~ 背景介绍 接上篇,笔者完成公司 MySQL 适配 ARM 64 架构工作后,马上又着手推进 RocketMQ 适配 ARM 64 架构,同样由于 Docker alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage" dfimage - 解决方案是:修改源码中 broker、client、openmessaging、remoting、tools 等 distribution 下的相关源码并重新编译。 4.9.4.tar.gz 2.3、编译源码生成 jar 包 tar -xzvf rocketmq-all-4.9.4.tar.gz cd rocketmq-rocketmq-all-4.9.4 # 修改以下源码文件中的超时时间为 4.9.4.jar ├── rocketmq-rocketmq-all-4.9.4.tgz ├── runbroker-customize.sh └── runserver-customize.sh docker

    1.2K10编辑于 2024-09-02
  • 来自专栏Docker

    Docker】MySQL 源码构建 Docker 镜像(基于 ARM 64 架构)

    Dockerfile 这里需要说明的是,该 Dockerfile 中是通过 yum 安装 mysql 服务,经过实测其指定的 yum 源也未提供 5.7.40 版本的 ARM 64 rpm文件,因此还需要使用源码自行编译生成 附 yum 源地址:https://repo.mysql.com/yum 2、编译源码生成 rpm 2.1、在 ARM 环境安装依赖 yum install -y cmake time libaio-devel zlib-devel \ cyrus-sasl-devel openldap-devel perl-Env gcc gcc-c++ make rpm-build autoconf perl-JSON 2.2、下载源码 -5.7.40-1.el7.src.rpm rpm -ivh mysql-community-minimal-5.7.40-1.el7.src.rpm 2.3、修改源码配置 cd /root/rpmbuild build_configurations/compiler_options.cmake tar -czvf mysql-5.7.40.tar.gz mysql-5.7.40 --remove-files 2.4、编译源码生成

    2K10编辑于 2024-09-02
  • 来自专栏golang算法架构leetcode技术php

    golang 源码分析(17):cobra docker

    命令,并且不匹配其它子命令时,则这个根命令将得到执行,也即打印docker命令的用法。 cmd.AddCommand(newDaemonCommand()) 将DaemonCommand添加为根命令的子命令,这样docker daemon命令即可启动docker daemon。 newDaemonCommand函数定义在cmd/docker/daemon_unix.go里。 Client命令行示例 这里我拿一个非常简单的子命令示例,来说明Docker客户端是如何运行的。 上面我仅分析了docker system info的执行过程,其它命令也很类似。

    66730编辑于 2022-08-02
  • 来自专栏along的开发之旅

    使用Docker编译Android系统源码

    安装完成后执行以下命令检查docker版本: $ sudo docker --version 配置Docker < 此步骤可以跳过 > 使用Docker加速器 由于官网在国外,速度不是很理想,因此国内有推出加速服务 原来需要安装 ia32-libs,目前被以下三个库取代) >> $ sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 添加编译Android源码需要的依赖 hours ago 971 MB ubuntu 14.04 b969ab9f929b 5 weeks ago 188 MB 使用镜像编译Android系统源码 1> 准备系统源码 在宿主机上,创建源码目录,如 /home/android 目录,并放入Android系统源码。 2> 挂载源码目录到docker容器中 $ docker run -it -v /home/android:/home/android 49df00985bd1 /bin/bash 3> 开始编译源码

    2.3K10发布于 2019-05-26
  • 来自专栏NebulaGraph 技术文章

    使用 Docker 构建 Nebula Graph 源码

    开发环境构建 Nebula Graph 依赖较多,且一些第三方库需本地编译安装,为了方便开发者本地编译项目源码, Nebula Graph 官方为大家提供了一个预安装所有依赖的 docker 镜像。 $ docker pull vesoft/nebula-dev 运行 Docker 并挂载 Nebula 源码目录到容器的 /home/nebula 目录 $ docker run --rm 容器之后,重新键入上述的命令,我们在 vesoft-inc/nebula-dev-docker 中提供了一个简单的 build.sh 脚本,可通过 . 使用 cmake 构建 Nebula 工程 docker> mkdir _build && cd _build docker> cmake .. && make -j2 docker> 修改后,点击 Apply & Restart 按钮, 重启 Docker

    1.1K40发布于 2019-09-06
  • 来自专栏Kubernetes

    docker-monitor-injector源码分析

    1.工具介绍 docker-monitor-injector是携程开源的一个修正docker容器内监控数据的工具,通过劫持open,fopen等linux库函数,重算/proc/meminfo,/proc 下面将对其进行源码分析,并整理出各个数据的监控修正算法。 2.原理 图片描述 ? 3.函数调用关系 ? tot_ticks, rq_ticks); 6.参考项目 https://linuxcontainers.org/lxcfs/introduction/ https://github.com/CtripCloud/docker-monitor-injector

    1.1K90发布于 2018-04-13
  • 来自专栏Kubernetes

    docker stats命令源码分析结果

    本文是基于docker 1.10.3版本的源码,对docker stats命令进行源码分析,看看docker stats命令输出的数据是从cgroups fs中怎么怎么计算出来的。 $ docker stats nginx-test |CONTAINER|CPU % |MEM USAGE / LIMIT|MEM %|NET I/O |BLOCK I/O | |---|---|--- client相关代码入口可参考:/docker/docker/api/client/stats.go#141 docker daemon相关代码入口可参考:/docker/docker/daemon/ daemon.go#1474 ##源码分析结果 ###Cpu数据: docker daemon会记录这次读取/sys/fs/cgroup/cpuacct/docker/[containerId]/cpuacct.usage /blkio/docker/[containerId]/blkio.io_service_bytes_recursive的值返回; 如果没有,就去读取/sys/fs/cgroup/blkio/docker

    3.8K80发布于 2018-04-13
  • 来自专栏golang算法架构leetcode技术php

    golang 源码分析(14)docker NewDaemon

    源码的角度,NewDaemon函数的执行完成了Docker Daemon创建并加载daemon的任务,最终实现统一管理Docker Daemon的资源。 3. NewDaemon源码分析 Docker Daemon中NewDaemon的执行流程主要包含12个独立的步骤:处理配置信息、检测系统支持及用户权限、配置工作路径、加载并配置graphdriver、创建Docker NewDaemon具体实现 在《Docker源码分析》系列第三篇中,有一个重要的环节:使用goroutine加载daemon对象并运行。 Graphdriver用于完成Docker容器镜像的管理,包括存储与获取。 4.4.1. 创建graphdriver 这部分内容的源码位于. 由于在Docker架构中,网络是极其重要的一部分,因此Docker网络篇会安排在《Docker源码分析》系列的第六篇。 4.6.

    99420编辑于 2022-08-02
  • 来自专栏jeremy的技术点滴

    docker源码分析-Daemon创建及启动

    上一篇分析了Docker Client的源码运行逻辑,本篇接着分析Docker Daemon的运行逻辑。Docker Daemon的运行逻辑很复杂,大家看着来要有耐心了。 Docker Daemon的执行 Docker Daemon的入口在cmd/dockerd/docker.go,先看main函数。 与docker-containerd通信的模块源码在libcontainerd目录,这个目录里文件不是太多,简单来说就是提供了下列接口方法,供daemon程序调用以控制管理容器的运行。 总结 Docker Daemon的运行逻辑属于Docker的核心,它相关的组件很多,代码理起来很复杂,但如果仔细看还是能看明白它的条理的。 另外在看docker源码的过程中发现docker中有三块还是比较有意思的,这三块分别是:容器的创建与启动过程、镜像的存储过程、容器网络的创建过程。后面抽空将这三部分也写个文档分析一下。

    2.3K50发布于 2018-05-10
  • 来自专栏跟我一起学 K8s

    第五章 Docker源码分析

    Docker Daemon作为Docker架构中的主体部分,首先提供Server的功能使其可以接受Docker Client的请求; Engine执行Docker内部的一系列工作,每一项工作都是以一个Job 5.1 下载源码 Docker源码是保存在github.com上的,目前已经更名为moby。 5.1.1 fork Docker源码 首先通过之前注册的github的免费账户登录到github,搜索 moby 的仓库,Docker源码都保存在github上。 如图 5-1-1所示: image.png 5.1.2 拉取fork的代码 在本地创建一个存储Docker源码的路径,用于提交修改的代码: librant@ubuntu:~/gowork 的源码提交修改后的代码时,就需要在新建的分支上修改,分支的名称可以根据具体的修改命名。

    2.7K70发布于 2018-12-01
  • 来自专栏Kubernetes

    docker v1.11 源码重构分析

    基于docker v1.12的源代码,对docker engine v1.11中重构后的源码结构进行分析,涵盖dockerd, containerd, containerd-shim, runC。 / 注意,containerd和runc的源码并不直接在docker源码中,而是已经拆分出来。 在docker编译的时候,会在github上拉取containerd和runc的源码并编译生成containerd和runc的二进制文件,包括docker-containerd、docker-containerd-shim 代码在docker的Dockerfile文件中: ? 同样,会从github上拉取runc的源码并编译生成runc的二进制文件docker-runc。代码在docker的Dockerfile中: ? ##docker1.12源码结构分析 dockerd和docker的主函数入口分别在cmd/dockerd和cmd/docker。首先来分析dockerd的启动流程。

    1.7K80发布于 2018-04-13
  • 来自专栏Linux云计算网络

    Docker 基础技术之 Linux namespace 源码分析

    上篇我们从进程 clone 的角度,结合代码简单分析了 Linux 提供的 6 种 namespace,本篇从源码上进一步分析 Linux namespace,让你对 Docker namespace

    2.1K40发布于 2018-04-16
  • 来自专栏容器云生态

    基于Docker环境中源码部署容器Nginx

    docker容器中源码安装nginx: [root@465d13a11ffa  ~]# mkdir /Nginx-1.8/ [root@465d13a11ffa  Nginx-1.8]# ls         mkdir -p '/export/server/nginx/logs' make[1]: Leaving directory `/Nginx-1.8/nginx-1.8.0 Nginx源码编译成功 esac exit $RETVAL 外网测试: [root@xuxuebiao ~]# curl http://10.0.0.2/index.html 465d13a11ffa (思考:在Docker

    86450发布于 2018-02-26
  • 来自专栏跟我一起学 K8s

    Docker】第一个 commit 源码

    1、在 GitHub 上查找 docker 的第一个 commit: -- docker 中间经过一次改名:moby https://github.com/moby/moby 当前最新提交: 图片 复制最新 after=4eb1c5bd52afa08595d9a082a9ba05c81f79be07+44186 这个链接就是 docker 的第一次提交 commit ID 信息: 图片 a27b4b8cb8e838d03a99b6d2b30f76bdaf2f9e5d

    34140编辑于 2022-06-26
  • 来自专栏Kubernetes

    docker container DNS配置介绍和源码分析

    本文主要介绍了docker容器的DNS配置及其注意点,重点对docker 1.10发布的embedded DNS server进行了源码分析,看看embedded DNS server到底是个啥,它是如何工作的 说明: 如果docker run时不含--dns=IP_ADDRESS..., --dns-search=DOMAIN..., or --dns-opt=OPTION...参数,docker daemon 说明: 如果docker run时不含--dns=IP_ADDRESS..., --dns-search=DOMAIN..., or --dns-opt=OPTION...参数,docker daemon embedded DNS server源码分析 所有embedded DNS server相关的代码都在libcontainer项目中,几个最主要的文件分别是/libnetwork/resolver.go 到这里,关于embedded DNS server的源码分析就结束了。当然,其中还有很多细节,就留给读者自己走读代码了。

    7.4K70发布于 2018-04-13
领券