之前的gRPC例子突然报错,排错之后确认是etcd的服务被关闭.然后别人建议自己在docker上建一个etcd服务,最近就看了一下<Docker 技术入门与实践>这本书,里面也讲到了etcd.有限的理解,记一下笔记.后期整理成一整套方案.
Docker基础命令
搜索debian的镜像 docker search debian
拉debian镜像下载 docker pull debian
查看镜像 docker images
删除镜像 docker rmi
进入容器并不退出
docker run —name mydocker -it centos /bin/bash
退出容器 exit
持续启动镜像并指定容器,会返回一个容器
id
docker run -d —name mydocker2 ubuntu
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
etcd笔记
在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来设置各个节点