Docker容器技术
文章平均质量分 65
本专栏主要介绍docker容器技术
绝域时空
这个作者很懒,什么都没留下…
展开
-
利用Docker快速部署hadoop、hive和spark
文章目录一、配置文件yml1.docker-compose.yml二、执行脚本1.启动脚本run.sh2.关闭脚本stop.sh一、配置文件yml1.docker-compose.ymlversion: '3.4' services: namenode: image: test/hadoop-namenode:1.1.0-hadoop2.8-java8 container_name: namenode volumes: - ./data/namenode:/h原创 2022-11-08 22:57:22 · 2476 阅读 · 0 评论 -
基于Docker-compose搭建TensorFlow
docker和kubernetes搭建TensorFlow容器原创 2022-11-07 22:38:22 · 635 阅读 · 0 评论 -
Docker-Compose构建spark集群
知道我的兄弟朋友们可能知道,我最近工作中,我们老大叫我利用Docker构建大数据开发环境。今天真的十分开心,我利用Docker-Compose构建出Kafka-Spark-MySQL的云平台大数据开发环境,并利用自己撰写的spark streaming程序实现了实时数据的处理。本篇文章主要介绍利用Docker-Compose构建出Spark的运行环境,和前面的Kafka和MySQL相似,本次搭建的Spark集群还是采用Bitnami的镜像进行构建。...原创 2022-08-09 20:37:19 · 1185 阅读 · 1 评论 -
基于Docker构建MySQL主从复制数据库
本次带来的是基于Docker-compose构建出MySQL单节点和主从复制的MySQL环境,本次使用的依旧是bitnami的第三方镜像资源。希望通过这个文章对于学习和使用Docker搭建MySQL的你提供帮助。原创 2022-08-08 16:37:15 · 750 阅读 · 1 评论 -
基于Docker-compose构建Kafka集群
首先,先向大家道个歉。由于前段时间的工作调整,导致我一直没有进行更新。现在工作逐渐走上正轨,现在决定继续更新自己学习的内容。希望对于学习或者从事大数据开发的你提供一些帮助。本次更新的内容为如何使用Docker-compose技术进行Kafka集群的构建。...原创 2022-07-31 20:59:13 · 1831 阅读 · 2 评论 -
Docker基础操作之高级网络设置
一、Docker的高级网络设置下面是一个跟 Docker 网络相关的命令列表。-b BRIDGE 或 --bridge=BRIDGE 指定容器挂载的网桥--bip=CIDR 定制 docker0 的掩码-H SOCKET... 或 --host=SOCKET... Docker 服务端接收命令的通道--icc=true|false 是否支持容器之间进行通信--ip-forward=true|false 请看下文容器之间的通信--iptables=true|false 是否允许 Docker原创 2021-11-30 19:48:29 · 1650 阅读 · 0 评论 -
Docker基础之网络通信
一、外部访问容器容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射,此时Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。使用 docker container ls 可以看到,开放的端口号。#生成服务开放端口docker run -d -P 路径 服务#查看开放端口docker ps -l同样的,可以通过 docker logs 命令来查看应用的信息。#查看应用的信息 docker logs -f no原创 2021-11-30 08:17:18 · 132 阅读 · 0 评论 -
Docker基本操作之数据管理
本文主要介绍Docker 内部以及容器之间管理数据,在容器中管理数据主要有两种方式:1、数据卷(Volumes)2、挂载主机目录 (Bind mounts)一、数据卷数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:数据卷可以在容器之间共享和重用对数据卷的修改会立马生效对数据卷的更新,不会影响镜像数据卷默认会一直存在,即使容器被删除1、创建一个数据卷创建一个数据卷的指令如下:#创建一个数据卷docker volume create my-vol原创 2021-11-29 23:28:31 · 144 阅读 · 0 评论 -
Docker基本操作之联网仓库仓库和本地仓库的搭建
仓库(Repository)是集中存放镜像的地方。一、Docker HubDocker 官方维护了一个公共仓库 Docker Hub,其中已经包括了数量超过 15,000 的镜像。大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。1、注册你可以在Docker官网 https://cloud.docker.com 免费注册一个 Docker 账号。2、 登录注册完成后,我们就可以利用下面的命令进行登录登出#入用户名及密码来完成在命令行界面登录 Docker Hubdocke原创 2021-11-29 19:45:01 · 504 阅读 · 0 评论 -
Docker基本操作之容器操作
一、Docker的基本操作本专栏前面部分详细的介绍了Docker的实现原理,这些对于我们认识和了解Docker的工作原理有很大的帮助,本文主要介绍Docker的基本操作以及一些基本的操作,供使用者使用,本文主要介绍Docker容器的相关操作,本文主要介绍如何管理一个容器,包括创建、启动和停止等。二、启动容器启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。1、新建并启动新建并启动容器的操作命令为#-t 选项让Docker分配一个伪终端(原创 2021-11-29 08:08:25 · 600 阅读 · 0 评论 -
Docker基本操作之镜像操作
一、Docker的基本操作本专栏前面部分详细的介绍了Docker的实现原理,这些对于我们认识和了解Docker的工作原理有很大的帮助,本文主要介绍Docker的基本操作以及一些基本的操作,供使用者使用。二、使用 Docker 镜像这一节主要介绍如何使用Docker镜像1、从仓库获取镜像2、 管理本地主机上的镜像;3、 介绍镜像实现的基本原理。...原创 2021-11-29 00:00:18 · 1050 阅读 · 0 评论 -
Docker基础之containerd的monitor
containerd的核心是Supervisor构造函数,在创建Supervisor的时候会创建一个type Monitor struct对象来负责监视host主机上所有容器中的进程。一、Monitor构造函数// 负责监视容器中的进程,进程超时显示type Monitor struct { m sync.Mutex receivers map[int]interface{} exits chan runtime.Process ooms chan strin原创 2021-11-29 00:00:09 · 655 阅读 · 0 评论 -
Docker基础之runc start命令
一、startCommandstartCommand的执行步骤如下:1、从context中获取id,再获取指定的容器2、启动处于Created状态的容器var startCommand = cli.Command{ Name: "start", Usage: "executes the user defined process in a created container", ArgsUsage: `<container-id>Where "<container-id&g原创 2021-11-28 15:23:09 · 290 阅读 · 0 评论 -
Docker基础之runc初始化命令
一、initCommand下面,我们进入runc的初始化指令的源码介绍:var initCommand = cli.Command{ //现在已经进入之前clone出来的一个namespace隔离的子进程在子进程中调用`runc init`来进行初始化设置 Name: "init", Usage: `initialize the namespaces and launch the process (do not call it outside of runc)`, Action: func(c原创 2021-11-28 15:17:51 · 931 阅读 · 0 评论 -
Docker基础之runc create命令
runc create命令docker start命令,经历了containerd,container-shim的中转之后,最后会调用三个runc命令:runc create/proc/self/exe init runc start其实ctr start {containerID}调用的也是这三个命令。本文先讲解runc creata命令,其实执行runc create的时候,会自动调用/proc/self/exe init,然后通过FIFO管道来实现阻塞的效果。createCommand原创 2021-11-28 14:40:06 · 907 阅读 · 0 评论 -
Docker基础之文件输入输出管道(FIFO)
一、FIFO管道和pipe管道Docker的runc中用到了匿名管道pipe和有名管道FIFO来进行通信和流程控制。pipe是一个匿名管道,匿名管道应用的一个重大限制是它没有名字,因此,只能用于具有亲缘关系的进程间通信。Go语言中通过os.Pipe()来创建。FIFO管道就像一个公共通道,能把两个不相关的进程联系起来。 本文通过一个例子看来看看FIFO的使用。二、client端实现的功能是往一个fifo管道中间隔5s写入数据,下面是Client.sh的内容:#!/bin/bashtmp_fif原创 2021-11-28 13:30:02 · 813 阅读 · 0 评论 -
Docker基础之AUFS
一、AUFSAUFS是一种Union File System,所谓UnionFS就是把不同物理位置的目录合并mount到同一个目录中。UnionFS的一个最主要的应用是,把一张CD/DVD和一个硬盘目录给联合 mount在一起,然后,你就可以对这个只读的CD/DVD上的文件进行修改。二、AUFS的介绍1、环境搭建环境挂载指令如下:uname -a2、创建好各个layer目录结构如下,其中mnt是挂载点,查看文件结构指令如下:tree ./3、联合挂载mount -t aufs -o原创 2021-11-28 13:11:50 · 489 阅读 · 0 评论 -
Docker基础之containerd的shim
一、shimcontainerd下的shim是充当containerd和runc之间的中间件,用来组装runc命令的参数,负责容器中进程的启动。containerd中调用shim时执行的命令如下:/root/lib-containerd/containerd/bin/containerd-shim {containerID} {bundleDirPath} runc其中三个参数如下:1、Arg0:容器Id2、Arg1:路径3、Arg2:执行时间二、主函数main()func main()原创 2021-11-28 13:00:23 · 4588 阅读 · 0 评论 -
Docker基础之containerd的两个组件:container和process
一、container结构体函数type container struct { // 存储运行时状态信息的路径 root string //containerd的工作目录 id string bundle string runtime string runtimeArgs []string shim string processes map[string]*process labels []string oo原创 2021-11-28 11:50:55 · 766 阅读 · 0 评论 -
Docker基础之containerd管理的基本流程
一、containerd的main函数containerd建立Server并提供服务的主要流程分析如下:1、 创建了一个 App结构体函数对象,代表了containerd2、 声明了app.Action方法,之后运行daemon()函数,在app.Run(os.Args)中会得到调用3、 最后执行app.Run(os.Args)func main() { logrus.SetFormatter(&logrus.TextFormatter{TimestampFormat: time.RFC原创 2021-11-28 11:25:20 · 865 阅读 · 0 评论 -
Docker基础之标准化容器执行引擎(runc)
一、容器的标准OCF容器标准化的目标:操作标准化、内容无关、基础设施无关。 runc是OCF的其中一个具体实现,下面从runc的角度来介绍OCF,这并不是OCF的全部标准1、容器标准包(bundle)现在的runc下的bundle包含了两个部分,rootfs目录必须与config.json文件同时存在容器目录最顶层。1、 /rootfs目录,根文件系统目录,包含了容器执行所需的必要环境依赖,如/bin、/var、/lib、/dev、/usr等目录及相应文件。2、 配置文件config.json,包原创 2021-11-28 09:39:36 · 1170 阅读 · 0 评论 -
Docker基础之文件的上传与下载(gRPC)通信
一、从源文件中安装1、可以在官网:https://github.com/google/protobuf进行源码下载2、依赖关系(mac os)brew install automakebrew install libtool3、 protocol buffers编译安装cd protobuf./autogen.sh./configuremakemake checkmake installprotoc --version4、关于 golang/protobuf安装,下载地址为:原创 2021-11-28 00:32:51 · 876 阅读 · 1 评论 -
Docker基础之container start命令
一、postContainersStartdaemon的路由定义如下:router.NewPostRoute("/containers/{name:.*}/start", r.postContainersStart),查看handler函数postContainersStart得知,postContainersStart的执行步骤如下:1、 解析request2、调用daemon启动ContainerStart()、s.backend.ContainerStart(vars[“name”], h原创 2021-11-27 23:38:57 · 2976 阅读 · 0 评论 -
Docker基础之容器(container)创建命令
Table of Contents用法postContainersCreateContainerCreatefunc createnewContainerBaseContainertype CommonContainer struct创建一个container的RWLayerMountPoints的设置用法# docker container create --name myetcd etcd_cluster:gc4.0 create命令完成的工作:在hots主.原创 2021-11-27 21:17:50 · 6262 阅读 · 0 评论 -
Docker基础之VolumeStore初始化
一、VolumeStore初始化VolumeStore结构体函数记录着所有的卷volumes,同时跟踪它们的使用情况,相当于volume的一个cache,其文件目录为:/var/lib/docker/volumes,同时metadata.db记录volume的元数据, 是一个文件型的数据库,其文件地址为:/var/lib/docker/volumes/metadata.db,二、创建一个VolumeStore对象 // Configure the volumes driver /* Volum原创 2021-11-27 17:51:01 · 978 阅读 · 0 评论 -
Docker基础之 ImageStore初始化
ImageStore,根据所有layer来构建image,维护所有image的元数据。ImageStore创建一个type fs struct对象 ifs根据StoreBackend ifs和 layerStore来创建一个imageStore // /var/lib/docker/image/${graphDriverName}/imagedb 这个目录是用来记录镜像元数据 ifs, err := image.NewFSStoreBackend(filepath.Join(imageRoo原创 2021-11-26 22:32:11 · 720 阅读 · 0 评论 -
Docker基础之LayerStore 初始化
层级存储仓库(LayerStore)存储docker容器镜像的基础单位,一个镜像是由多个Layer组成,各个存储体之间有重叠的部分,这两个部分之间存储有差别化信息,这些来自于用户的修改。下面我将从Layer的构造函数和NewStoreFromOptions函数的角度来了解LayerStore的初始化。一、LayerStore构造函数layerStore结构体记录一个hots主机上面存储着的所有的layer层信息,包括只读layer和读写layer。其工作目录是/var/lib/docker/image原创 2021-11-26 15:23:55 · 462 阅读 · 0 评论 -
Docker基础之Daemon的创建
一、daemon的创建过程本文介绍如何创建一个daemon的创建的过程,下面我将从Daemon结构体对象和创建新的Daemon的文件结构两个方面来介绍daemon的创建过程。二、Daemon结构体对象//Daemon基本信息type Daemon struct { ID string //daemon的编号 repository string containers container.S原创 2021-11-25 16:48:32 · 933 阅读 · 0 评论 -
Docker基础之Client端与Daemon端的通信
Client端与Daemon端的通信docker Client端type DockerCli struct前面说到会生成一个type DockerCli struct对象,见/cli/command/cli.godocker Client解析了命令行之后,会通过其中的client.APIClient和docker Server端进行通信// DockerCli represents the docker command line client.// Instances of the client原创 2021-11-25 15:47:06 · 2114 阅读 · 0 评论 -
Docker命令行
版本说明v1.13.1命令行分类docker现在采用也是"github.com/spf13/cobra"来管理其命令结构,和k8s是一样的。来看看docker的命令行分类,见/moby-1.13.1/cli/command/commands/commands.go// AddCommands adds all the commands from cli/command to the root commandfunc AddCommands(cmd *cobra.Command, dockerCl原创 2021-11-25 07:42:27 · 1403 阅读 · 0 评论 -
Docke基础之docker镜像存储
本文主要研究 docker 是如何存储一个镜像的。 主要是docker工作目录下的/image和/overlay目录Docker镜像设计上将镜像元数据和镜像文件的存储完全分开,Docker在管理镜像层元数据时采用的是从上至下repository,image,layer三个层次。因为docker以分层的形式存储镜像,因此repository和image这两类元数据没有物理上的镜像文件与之对应,而layer则存在物理上的镜像文件与之对应。环境和准备工作centos 7docker version: 1原创 2021-11-24 23:10:57 · 1706 阅读 · 0 评论 -
Docker基础之搭建ceph环境
基础环境配置# ifconfigenp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.56.101 netmask 255.255.255.0 broadcast 192.168.56.255 inet6 fe80::2407:e89c:1adc:1272 prefixlen 64 scopeid 0x20<link> ether原创 2021-11-24 08:41:13 · 1190 阅读 · 0 评论 -
Docker基本操作之创建Cgroups
一、DockerDocker作为一个开源的镜像,我们可以很简单的在GitHub上下载到docker的镜像文件,但是对于刚接触到Docker的人来说,我们很难知道Docker源码文件及其包括的内容。下面我将详细介绍Docker源码的文件结构。二、文件介绍...原创 2021-11-23 23:41:04 · 1160 阅读 · 0 评论 -
Docker指令
管理命令app* Docker App (Docker Inc., v0.9.1-beta3)builder Manage buildsbuildx* Build with BuildKit (Docker Inc., v0.6.3-docker)config Manage Docker configscontainer Manage containerscontext Manage contextsimage Manage im原创 2021-11-21 16:22:15 · 635 阅读 · 1 评论 -
Centos 7安装Docker详细介绍
一、安装前准备1、系统要求Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无法使用,并且部分功能可能不太稳定。2、载旧版本旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本:sudo yum remove docker sudo yum remove docker-common sudo yum原创 2021-11-21 12:46:10 · 720 阅读 · 0 评论 -
Docker容器技术
一、Docker概述Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker三大核心概念就是:镜像、容器和仓库。下面我将介绍Docker的三个概念。二、镜像Docker镜像是创建容器的基础,类似于虚拟机快照,可以理解为是一个面向Docker的只读模板。Docker提供了简单的机制来创建和更新现有的镜像,用户也可以在网上原创 2021-11-21 12:27:53 · 432 阅读 · 0 评论