使用golang和docker守护进程交互

开发语言 golang

使用 unix domain socket 和 docker 守护进程交互,查询 镜像列表

package main

import (

"fmt"
"net"
"io/ioutil"
"encoding/json"

)

type Image struct {

Created uint64
Id string
ParentId string
RepoTags []string
Size uint64
VirtualSize uint64

}

func main() {

addr := net.UnixAddr{"/var/run/docker.sock", "unix"}
conn, err := net.DialUnix("unix", nil, &addr)
if err != nil {
    panic(err)
}

_, err = conn.Write([]byte("GET /images/json HTTP/1.0\r\n\r\n"))
if err != nil {
    panic(err)
}

result, err_conn := ioutil.ReadAll(conn)
if err_conn != nil {
    panic(err_conn)
}

body := getBody(result[:])

var images []Image

err_js := json.Unmarshal(body, &images)
if err_js != nil {
    panic(err_js)
}

fmt.Println("len of images: ", len(images))
fmt.Println("image.Id: ", images[0].Id)

}

func getBody(result []byte) (body []byte) {

for i := 0; i <= len(result) - 4; i++ {
    if result[i] == 13 && result[i+1] == 10 && result[i+2] == 13 && result[i+3] == 10 {
        body = result[i+4:]
        break
    }
}
return

}

时间: 2024-10-16 07:57:20

使用golang和docker守护进程交互的相关文章

docker 学习笔记20:docker守护进程的配置与启动

安装好docker后,需要启动docker守护进程.有多种启动方式. 一.服务的方式 因为docker守护进程被安装成服务.所以,可以通过服务的方式启停docker守护进程,包括查看状态. sudo start docker  //启动 sudo stop docker  //停止 sudo status docker  //查看状态 二.利用docker daemon命令 sudo docker daemon 利用sudo ps -A 可以获取守护进程的进程号 三.让远程api可以访问dock

Docker学习笔记(5-2)Docker守护进程的配置和操作

学习目标:  查看Docker守护进程的运行状态 启动.停止.重启Docker守护进程 Docker守护进程的启动选项 修改和查看Docker守护进程的启动选项 1.# 查看docker运行状态  方法一:ps -ef | grep java 方法二:sudo status docker 返回:docker start/running, process 18479 返回当前已经启动,并且正在运行,同时返回了进程编号 2.# 启动.停止.重启docker守护进程 sudo service dock

supervisor用为golang后台创建守护进程

supervisor是一个unix的系统进程管理软件,可以用它来管理apache.nginx等服务,若服务挂了可以让它们自动重启.下面基于centos 6.6,描述下具体实现: sudo yum install python-setuptools sudo easy_install supervisor 如果没有看到什么报错,那么就安装成功了,可以使用echo_supervisord_conf查看配置详情,而后生成配置文件. sudo echo_supervisord_conf > /etc/s

Docker学习(9) Docker守护进程的配置和操作

原文地址:https://www.cnblogs.com/xiao-xue-di/p/11442422.html

Docker命令行与守护进程如何交互?

译者按: Docker是典型的C/S架构,其守护进程(daemon)与命令行(CLI)是通过REST API进行交互的. 原文: Understanding how the Docker Daemon and Docker CLI Work Together 译者: Fundebug 为了保证可读性,本文采用意译而非直译.另外,本文版权归原作者所有,翻译仅用于学习. Docker并非单体应用,它由多个组件构成.这篇博客将介绍Docker守护进程(daemon)与Docker命令行(CLI).事实

Docker 客户端和守护进程

以上为Docker的C/S架构图,从中摘取出Docker 的客户端与守护进程的关系如下: Docker Host 宿主机: 进行docker操作的虚拟机 Docker daemon 守护进程: 负责各种各样的docker操作的核心程序,比如下载或者运行一个docker容器 Client 客户端: 我们通过Client与Docker daemon进行交互,将docker build.dcoker pull.docker run交与Docker daemon去操作.主要的有以下两种接口: 命令行接口

Docker客户端与守护进程

$ docker -d [ OPTIONS ] (已守护进程的方式运行容器)配置选项:1.运行相关-D,--debug=false-e,--exec-driver="native"-g,--graph="/var/lib/docker"--icc=true-l,--;og-level="info"--label=[]-p,--pidfile="/var/run/docker.pid"2.Docker 服务器连接相关:-G,--

用PHP实现守护进程任务后台运行与多线程(php-resque使用说明)

消息队列处理后台任务带来的问题 项目中经常会有后台运行任务的需求,比如发送邮件时,因为要连接邮件服务器,往往需要5-10秒甚至更长时间,如果能先给用户一个成功的提示信息,然后在后台慢慢处理发送邮件的操作,显然会有更好的用户体验. 为了实现类似的需求,Web项目中一般的实现方法是使用消息队列(Message Queue),比如MemcacheQ,RabbitMQ等等,都是很著名的产品. 消息队列说白了就是一个最简单的先进先出队列,队列的一个成员就是一段文本.正是因为消息队列实在太简单了,当拿着消息

supervisor运行golang守护进程

最近在鼓捣golang守护进程的实现,无意发现了supervisor这个有意思的东西.supervisor是一个unix的系统进程管理软件,可以用它来管理apache.nginx等服务,若服务挂了可以让它们自动重启.当然也可以用来实现golang的守护进程,下面描述下具体实现. 安装supervisor 基于centos 6.4. supervisor使用python编写的,可以用easy_install安装.centos上默认有python的运行环境,安装起来就非常简单了. $ sudo yu