Mac OSX系统 Docker启用Docker远程API功能

在Mac OSX系统的Docker机上启用Docker远程API功能

Docker守护进程提供了一套远程REST API,具体可以参考文档:

https://docs.docker.com/engine/reference/api/docker_remote_api/

这套API是提供给客户端与Docker引擎通信时使用,这套API也可以由其他工具调用,比如curl或Chrome浏览器的Postman REST客户端工具。

如果是在Mac OSX Mavericks系统上使用Docker机创建Docker守护进程,那么要启用Docker远程API功能需要一定的技巧。下面一一道来。

可以使用curl工具连接到安全的Docker端口,命令如下:

$ curl https://$HOST:2376/images/json
 --cert ~/.docker/cert.pem
 --key ~/.docker/key.pem
 --cacert ~/.docker/ca.pem

此命令存在一定的问题。主要有:

1)命令可能不工作,因为每一个Docker机的证书存储在.docker/machine/machines/目录。
2)即使命令根据路径做了修改,比如:

curl https://192.168.99.100:2376/images/json --cert $DOCKER_CERT_PATH/cert.pem --key $DOCKER_CERT_PATH/key.pem --cacert $DOCKER_CERT_PATH/ca.pem

执行命令仍然会得到错误信息:

curl: (58) SSL: Can't load the certificate "/Users/arungupta/.docker/machine/machines/couchbase/cert.pem" and its private key: OSStatus -25299

解决方法是需要更新curl工具。总的来说,最新版的curl工具使用了Apple的安全传输层API(Secure Transport API),取代了原先的OpenSSL API。这意味着证书必须是p12格式。

下面可以这样修复命令:

1)进入Docker机存放证书的目录,比如.docker/machine/machines/couchbase目录
2)生成*.p12格式的证书

openssl pkcs12 -export
-inkey key.pem
-in cert.pem
-CAfile ca.pem
-chain
-name client-side
-out cert.p12
-password pass:mypass

现在可以调用REST API了:

curl https://192.168.99.100:2376/images/json --cert $DOCKER_CERT_PATH/cert.p12 --pass mypass --key $DOCKER_CERT_PATH/key.pem --cacert $DOCKER_CERT_PATH/ca.pem

注意,–cert参数现在指向了生成的p12证书,证书的密码使用–pass参数进行指定。

然后会得到如下结果:

[{"Id":"sha256:d38beda529d3274636d6cb1c9000afe4f00fbdcfa544140d6cc0f5d7f5b8434a","ParentId":"",
"RepoTags":["arungupta/couchbase:latest"],"RepoDigests":null,"Created":1450330075,"Size":374824677,
"VirtualSize":374824677,"Labels":{}}]

现在可以尝试启动CouchBase服务器:

~ > docker run -d -p 8091-8093:8091-8093 -p 11210:11210 arungupta/couchbase
42d1414883affd0fbb272cb1378c2f6b5118acf3ed5cb60cbecdc42f95602e3e

再调用另一个REST API来查看容器的细节内容:

~ > curl https://192.168.99.100:2376/containers/json --cert $DOCKER_CERT_PATH/cert2.p12 --pass mypass --key $DOCKER_CERT_PATH/key.pem --cacert $DOCKER_CERT_PATH/ca.pem
[{"Id":"42d1414883affd0fbb272cb1378c2f6b5118acf3ed5cb60cbecdc42f95602e3e","Names":["/admiring_pike"],"Image":"arungupta/couchbase","ImageID":"sha256:d38beda529d3274636d6cb1c9000afe4f00fbdcfa544140d6cc0f5d7f5b8434a","Command":"/entrypoint.sh /opt/couchbase/configure-cluster.sh","Created":1454850194,"Ports":[{"IP":"0.0.0.0","PrivatePort":8092,"PublicPort":8092,"Type":"tcp"},{"PrivatePort":11207,"Type":"tcp"},{"IP":"0.0.0.0","PrivatePort":11210,"PublicPort":11210,"Type":"tcp"},{"PrivatePort":18092,"Type":"tcp"},{"PrivatePort":18091,"Type":"tcp"},{"IP":"0.0.0.0","PrivatePort":8093,"PublicPort":8093,"Type":"tcp"},{"IP":"0.0.0.0","PrivatePort":8091,"PublicPort":8091,"Type":"tcp"},{"PrivatePort":11211,"Type":"tcp"}],"Labels":{},"Status":"Up 2 seconds","HostConfig":{"NetworkMode":"default"},"NetworkSettings":{"Networks":{"bridge":{"IPAMConfig":null,"Links":null,"Aliases":null,"NetworkID":"","EndpointID":"6feaf4c1c70feaf0ba240ce55fb58ce83ebb84c8098bef9171998e84f607fa0b","Gateway":"172.17.0.1","IPAddress":"172.17.0.2","IPPrefixLen":16,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:ac:11:00:02"}}}}]

感谢阅读,希望能帮助到大家,谢谢大家对本站的 支持!

(0)

相关推荐

  • Mac上将brew安装的MySql改用Docker执行操作过程

    docker是最近大热的技术,堪称技术界的网红.本着技术人折腾的本性,尝试将本地的MySql服务器改成用docker执行,本文记录折腾过程,以作备忘. 步骤如下: 1:安装docker 自己找文档去 2:使用mysql官方发布的docker image,命令如下 docker pull mysql/mysql-server:5.7.16 ##(这是本文发布时候MySql最新稳定版,并且最好和本地的Mysql版本一致,否则第三步可能会有问题.) 因为GFW的缘故,这个过程有点漫长.命令执行完之后,

  • mac 中docker安装mysql的图文教程

    今天在Docker中安装了MySQL ,是自己打的docker包. 首先新建Dockerfile 内容如下: FROM mysql:latest MAINTAINER abel.yang <527515025@qq.com> LABEL Descripttion="This image is build for MAC to use mysql" Vendor="GitHub" Version="latest" RUN apt-get

  • MacBookPro下docker的安装与使用教程

    今天实习入职美团∙点评,排队领了 MacBookPro15 (所以我的 MacbookPro13 就闲置了),在平台前端基础技术团队里,需要装 Docker ,平台运行测试在 Docker 里,于是有了下文的 Docker 入坑记. 下载 Docker官网地址 各种系统版本(Windows/MacOS/Linux) 装好后,就是个小鲨鱼的图标, 使用 一般使用是在 终端 里,所以打开终端,先运行三条命令,测试下 docker 安装情况: $ docker --version Docker ver

  • Mac系统上用Docker搭建lamp环境

    前言 docker终于出来mac版本了,赶紧去下载,安装步骤,以前没有Mac版本的时候还要装docker toolbox,现在直接下载安装就好了. 安装好了的样子 状态栏 docker的提示 这个时候就可以到终端里面输入docker命令 $ docker --version Docker version 1.13.0-rc3, build 4d92237 $ docker-compose --version docker-compose version 1.9.0, build 2585387

  • 在Mac OS X安装Docker教程

    Mac OS X用户使用Docker Toolbox安装Docker软件, Docker Toolbox包含了下列的Docker 工具: Docker CLI客户端, 用来运行Docker Engine,并创建镜像和容器 Docker Machine, 在Mac OS X终端运行Docker Engine命令 Docker Compose, 用来运行docker-compose命令 Kitematic, Docker图形用户界面 Docker QuickStart, 快速启动Docker命令行环

  • 在Mac OS上安装Vagrant和Docker的教程

    当听到很多人在说Docker是多么多么的棒,很多新潮的孩子都在使用它时,我决定在我的开发环境上也来尝试下.在下面的这篇文章中,我将讲解在Mac OS X怎样建立Postgres,Elasticsearch和Redis. 什么是Docker Docker用轻量容器把一个APP从它运行的OS中隔离开.它把APP放入到一个孤立的盒子中,对外只呈现需要使用的文件夹和端口. 这样,基于建立和使用APP的容器是可重用,共享的.目前,在Docker集中已经存在了15,000种以上的容器.Docker就像一个商

  • Mac上使用Docker如何快速启动MySQL测试

    本文主要讨论使用Docker快速启动 MySQL 测试的方法,包括Mac环境.一起看看吧! 近来业界有很多对Docker的讨论,其生态系统发展得很快,然而,从简单的"入门"或"引导"类的文章中能容易地找到成熟的技术,但Docker不然.我在Mac上试玩过Docker,但Mac绝对是Docker界的二等公民.当我在Giuseppe的博客上看到关于在Mac上使用新Docker beta<Docker for Mac beta and MySQL>一文时,决定

  • MAC下安装docker教程

    序 由于云主机很快就要到期了,还是在mac上先搭一下docker环境吧. 安装brew curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz -C/usr/local --strip 1 boot2docker方式(将要废弃) 安装docker sudo brew install boot2docker boot2docker init 启动 boot2docker up 按提示更新环境变量 export

  • 详解MAC OSX Docker开发环境搭建

    MAC OSX  Docker 开发环境搭建 1. 安装Virtualbox 下载地址:https://www.virtualbox.org/ VirtualBox简体中文版下载安装(图解教程)http://www.jb51.net/article/95311.htm 2. 安装boot2docker $ brew install boot2docker # 也可以手工安装: $ curl https://raw.github.com/steeve/boot2docker/master/boot

  • Mac OSX系统 Docker启用Docker远程API功能

    在Mac OSX系统的Docker机上启用Docker远程API功能 Docker守护进程提供了一套远程REST API,具体可以参考文档: https://docs.docker.com/engine/reference/api/docker_remote_api/ 这套API是提供给客户端与Docker引擎通信时使用,这套API也可以由其他工具调用,比如curl或Chrome浏览器的Postman REST客户端工具. 如果是在Mac OSX Mavericks系统上使用Docker机创建D

  • Mac OSX 打开原生自带读写NTFS功能(图文)

    最近买了一个移动硬盘,发现在mac osx上可读不可写,以为移动硬盘有问题,但是却可在我的windows本上完美读写,于是百度了一下.发现其实最早在OSX 10.5的时候,OSX其实原生就支持直接写入NTFS的盘的,后来由于微软的限制,mac关闭了这个功能,所以接下来我们要通过命令行打开这个ntfs读写功能. 一.查看磁盘的Volume Name 打开 terminal 执行diskutil list 查看volume name 可以看到我的volume name是My Passport 二.更

  • 在Windows系统下安装docker窗口的配置过程

    前言 目前对docker支持最好的是Ubuntu系统,docker不支持在windows上运行,必须借助docker-machine.docker提供了toolbox用于在windows和mac平台安装docker. 工具箱包括: docker machine Docker Engine Kitematic docker命令行运行环境 Oracle VM VirtualBox 安装之前需要检查BIOS中虚拟化的设置是否已打开,参考此页面 1.下载安装文件 https://www.docker.c

  • Docker启用TLS实现安全配置的步骤

    前言 之前开启了docker的2375 Remote API,接到公司安全部门的要求,需要启用授权,翻了下官方文档 Protect the Docker daemon socket 启用TLS 在docker服务器,生成CA私有和公共密钥 $ openssl genrsa -aes256 -out ca-key.pem 4096 Generating RSA private key, 4096 bit long modulus ..................................

  • Docker部署mysql远程连接 解决2003的问题

    连接MySQL 这里我使用navicat远程连接,连接MySQL前需要防火墙开放端口或者关闭防火墙. 开放端口 firewall-cmd --add-port=3306/tcp --permanent // --permanent 永久生效,没有此参数重启后失效 firewall-cmd --reload // 重新载入 关闭防火墙 systemctl stop firewalld systemctl enable iptables // 设置开机启动 firewall-cmd --reload

  • centos7系统下搭建docker本地镜像仓库的方法

    系统环境: CentOS 7.2 192.168.0.179:Docker仓库 192.168.0.60:客户端 安装并启动docker yum -y install docker systemctl start docker systemctl enable docker 搭建私有仓库 179上下载registry镜像 docker pull registry 防火墙添加运行5000端口 iptables -I INPUT 1 -p tcp --dport 5000 -j ACCEPT 下载完

  • 在Linux系统中安装Docker的过程

    在这篇博客中,我将引导您通过简单的步骤完成安装 Docker 的过程,安装docker只是小菜一碟,你只需要运行几条命令就大功告成了! 本文用的Linux为Ubuntu,让我们直接开始! 第 1 步:要在 Ubuntu 机器上安装 docker,首先让我们更新软件包. sudo apt-get update 输入密码: 第 2 步:现在在安装 docker 之前,我需要安装推荐的软件包: sudo apt-get install linux-image-extra-$(uname -r) lin

  • 解决vscode docker插件docker.socket权限问题

    解决办法, 将系统中(如果使用了remote-ssh, 则为远程服务器)所有的.vscode相关进程kill 这些进程都是在 .vscode 文件夹下, 因此可以直接搜索.vscode来kill他们, 然后再重启vscode, 就解决问题了. 知识点扩展: vscode中docker插件无法连接 报错Failed to connect. Is Docker running Error: connect EACCES /var/run/docker.sock 原因分析 原因是docker使用uni

随机推荐