以前的gRPC例子忽然报错,排错以后确认是etcd的服务被关闭.而后别人建议本身在docker上建一个etcd服务,最近就看了一下<Docker 技术入门与实践>这本书,里面也讲到了etcd.有限的理解,记一下笔记.后期整理成一整套方案.python
搜索debian的镜像 docker search debian
golang
拉debian镜像下载 docker pull debian
web
查看镜像 docker images
docker
删除镜像 docker rmi
ubuntu
进入容器并不退出
centos
docker run —name mydocker -it centos /bin/bash
bash
退出容器 exitapp
持续启动镜像并指定容器,会返回一个容器curl
id docker run -d —name mydocker2 ubuntu
post
docker run -i -t ubuntu /bin/bash 语句中,后面加/bin/bash的用处:
容许用户进行交互: 这是表示载入容器后运行bash ,docker中必需要保持一个进程的运行,要否则整个容器就会退出。
建立一个容器 docker create -it ubuntu:latest
查看全部容器 docker ps -a
启动容器 (持久-i) docker start containerId
关闭容器 docker stop containerId
容器重命名 docker rename oldname newname
获取容器长ID docker inspect -f '{{.Id}}' golang001
数据卷容器
数据卷容器也是一个容器,可是它的目的的专门用来提供数据卷供其余容器挂载.即由他直接挂载到本地路径,其余容器经过挂载上它来获取本地路径的文件.
建立一个数据卷容器dbdata,并挂载到 /dbdata
docker run -it -v /dbdata --name dbdata ubuntu
其余容器使用--volumes-from来挂载dbdata容器中 数据卷
docker run -it --volumes-from dbdata --name db2 ubuntu
如今dbdata跟db2容器都挂载到同一个数据卷的/dbdata目录.
端口映射实现访问容器 -p
docker run -d -p 5000:6000 ubuntu python app.py
容器之间的互联
建立一个新的web容器,并将它链接到db容器
docker run -d -P --name web --link db:db ubuntu python app.py
在docker跑一个etcd:
docker run -p 2379:2379 -p 2380:2380 -v /etc/ssl/certs/:/etc/ssl/certs/ quay.io/coreos/etcd:v3.0.4
etcdctl客户端命令:
(不经过etcdctl客户端,也能够经过http来运行命令,具体看: 开始使用etcd - 服务发现与配置共享)
设置某个键的值为给定值
etcdctl set /testdir/testkey "Hello world"
get 获取指定键的值
update 当键存在时,更新值的内容
rm 删除某个键值
etcdctl watch testkey
监测一个键值的变化,一旦键值发生更新,就会输出最新的值并退出.
支持的选项包括:
--forever 一直监测,知道用户按'CTRL+C'退出
--after-index '0' 在指定index以前一直监测
--recursive 返回全部的键值和子键值
exec-watch
监测一个键值的变化,一旦键值发生更新,就执行给定的命令
例如,一旦监测到testkey键值被更新,则执行ls命令:
etcdctl exec-watch testkey -- sh -c 'ls'
ls 列出目录下的键或者子目录
mkdir 若是给定的键目录不存在,则建立一个新的键目录.
Etcd集群管理--动态发现
CoreOS提供了一个公开的Etcd发现服务,地址在https://discovery.etcd.io
建立的集群申请一个独一无二的UUID,须要提供集群中节点的个数(大于等于3且为奇数)
curl https://discovery.etcd.io/new?size=3
https://discovery.etcd.io/792h8h9h329hr9329rh23
经过uuid来设置各个节点