docker
文章平均质量分 87
跟派大星学编程
从HelloWorld到改变世界
展开
-
七天用Go写个docker(网络篇)
0.docker网络实现docker网络分为两部分,一部分是docker与宿主机之间的通信,另一部分是docker与外部网络之间的通信。docker与宿主机之间的通信是通过veth和bridge虚拟网络接口实现的,而与外部网络通信是通过 iptables 流量转发实现的。1. veth和bridgeveth是一个虚拟的网络设备,它都是成对出现的,你可以把它理解成马里奥里面的水管,马里奥从一个水管进去,会从另一个水管里面出来,在这里,马里奥就是流量,这两个水管就是一对veth,我们看下实际操作先创原创 2021-02-15 07:31:04 · 638 阅读 · 0 评论 -
七天用Go写个docker(完结篇)
今天是最后一天了,我们最后将容器的停止,删除功能实现一下容器停止在上一节中,我们通过config.json 记录了容器的基本信息,其中就有一个status字段用来记录容器的状态,和一个PID字段记录容器的init进程在宿主机上的Pid,我们停止容器,也就是将该pid进程杀死,并更新status状态即可// 停止容器,修改容器状态func StopContainer(containerName string) { info, err := getContainerInfo(container.原创 2020-07-06 20:41:40 · 867 阅读 · 0 评论 -
七天用Go写个docker(第六天)
今天主要来实现一下 go-docker ps 的功能,也就是查看当前有哪些容器,简单说下思路,当我们启动一个容器时就为该容器创建一个文件夹用来保存该容器的一些信息,如果我们给容器指定了名字,那么该文件夹名字就是我们指定的名字,如果未指定,就用我们自动生成的容器ID作为文件夹名,同时在该文件夹中创建config.json用来保存容器信息文件夹结构go-docker└── 容器名/容器ID ├── config.json └── container.logconfig.json.原创 2020-07-05 18:10:24 · 886 阅读 · 0 评论 -
七天用Go写个docker(第五天)
通过前面四天,我们其实已经基本实现了docker的最核心的功能,后面几天,我将带大家实现一些docker的其他命令,今天我们主要是来实现一下 docker logs 功能,也就是查看docker内部日志写日志说下总体思路,这个功能其实比较简单,说白了,就是之前往控制台输出,现在改成往文件里面输出就好了,我们通过docker logs 查看日志,也就是打开该文件,显示该文件里面的内容开...原创 2020-04-18 17:57:07 · 889 阅读 · 0 评论 -
七天用Go写个docker(第四天)
镜像前面我们用namespace和cgroup构建了一个简单的容器,但是我们可以发现容器内的目录还是当前运行程序的目录,这里就缺少了镜像这么一个重要的特性。这里我们先用docker拉一个最精简的镜像busybox,它是一个集合了非常多unix工具的箱子,提供了一个非常完整而且小巧的系统。# 拉取busyboxdocker pull busybox# 运行docker run -d b...原创 2020-03-21 17:43:25 · 791 阅读 · 0 评论 -
七天用Go写个docker(第三天)
项目源码:点击查看项目源码前面两天我们了解完docker原理之后,今天我们动手把项目的结构给搭起来,先总体看一下项目结构整个文件调用过程如下我们最终达到的效果实现下面这个命令,该命令会启动一个隔离的容器,并在该容器中运行第一个命令为 topgo-docker run -ti topmain.go程序的入口,主要是接收命令行参数,接收命令行参数处理使用的第三方工具包为gith...原创 2020-03-19 18:10:21 · 991 阅读 · 0 评论 -
七天用Go写个docker(第二天)
1. Cgroup概念Linux Cgroup提供了对一组进程及子进程的资源限制,控制和统计的能力,这些资源包括CPU,内存,存储,网络等。通过Cgroup,可以方便的吸纳之某个进程的资源占用,并且可以实时监控进程和统计信息。Cgroup完成资源限制主要通过下面三个组件cgroup: 是对进程分组管理的一种机制subsystem: 是一组资源控制的模块hierarchy: 把一组c...原创 2020-03-18 18:24:06 · 1220 阅读 · 1 评论 -
七天用Go写个docker(第一天)
1. docker详解很多人刚接触docker的时候就会感觉非常神奇,感觉这个技术非常新颖,其实并不然,docker使用到的技术都是之前已经存在过的,只不过旧酒换了新瓶罢了。简单来说docker本质其实是一个特殊的进程,这个进程特殊在它被Namespace和Cgroup 技术做了装饰,Namespace将该进程与Linux系统进行隔离开来,让该进程处于一个虚拟的沙盒中,而Cgroup则对该进程...原创 2020-03-17 18:33:14 · 1352 阅读 · 0 评论 -
使用docker安装rabbitmq
1. 拉取镜像docker pull rabbitmq:management带有mangement的是包含web管理页面的2. 启动容器docker run -d --hostname rabbitmq --name rabbitmq -p 5672:5672 -p15672:15672 -v D://www/rabbitmq:/var/lib/rabbitmq rabbitmq:ma...原创 2019-05-23 13:56:02 · 232 阅读 · 0 评论 -
使用docker安装consul服务发现
1. 拉取consul镜像docker pull consul:latest2. consul参数详解–net=host docker参数, 使得docker容器越过了net namespace的隔离,免去手动指定端口映射的步骤-server consul支持以server或client的模式运行, server是服务发现模块的核心, client主要用于转发请求-advertis...原创 2019-05-24 19:18:57 · 8302 阅读 · 3 评论 -
docker高级使用
PS: 你可以把镜像理解为一个Java类,而容器则是这个类创建的一个实例。查询镜像# 搜索跟centos相关的镜像docker search centos 拉取镜像docker pull centos启动容器docker run -dit -name 容器名 镜像名 /bin/bash端口映射 #本地端口:容器端口 docker run -dit -p 8080:8080...原创 2019-03-05 15:26:12 · 483 阅读 · 0 评论 -
使用docker部署SpringBoot项目
1.新建一个SpringBoot项目自己写吧。。。。我放个测试的package com.pibigstar.web;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springfram...原创 2018-06-29 19:42:43 · 17203 阅读 · 5 评论 -
docker打包springboot项目成镜像
1. 项目结构2. 创建Dockerfile文件3. 编译镜像4. 运行镜像5. 查看容器运行日志1. 项目结构2. 创建Dockerfile文件# 拉取基础镜像FROM 139.199.64.253:5000/java# 维者信息MAINTAINER pibigstar# 将JDK复制到镜像中,如果镜像已经有了JDK环境则无需配置此...原创 2018-04-19 17:14:48 · 5076 阅读 · 0 评论 -
Linux搭建docker环境并简单实用
搭建 Docker 环境安装与配置 Docker安装 DockerDocker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker,只需要运行下面的 yum 命令:yum install docker-io -y直接yum安装,安装成功后查看版本docker -v启动dockerservice docker start设置开机启动chkconfig do...转载 2017-12-28 16:58:58 · 8383 阅读 · 2 评论 -
制作springboot项目运行的docker镜像
docker——Dockerfile创建镜像写在前面:今天学习用Dockerfile创建镜像,并在上面搭建java环境,跑一个spring boot小项目。Dockerfile:Dockerfile由一行行命令语句组成,并且支持用“#”开头作为注释,一般的,Dockerfile分为四部分:基础镜像信息,维护者信息,镜像操作指令和容器启动时执行的指令。Dockerfile指令:1、FROM格式:FR...转载 2018-04-18 20:46:39 · 5449 阅读 · 2 评论 -
docker搭建本地仓库并制作自己的镜像
1. 搭建本地仓库1.1 下载仓库镜像1.2 启动仓库容器2. 在CentOS容器中安装JDK2.1 创建Linux容器:2.2 将JDK复制到myCentos容器中2.3 进入容器2.4 解压JDK2.5 配置环境变量2.5.1 刷新环境变量2.5.2 设置开机自动执行source2.5.3 重启容器2.6 将容器提交到镜像里3. 将新制作的镜像推送到...原创 2018-04-19 14:47:16 · 4024 阅读 · 0 评论