Docker+etcd 笔记

3,905 阅读3分钟

之前的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来设置各个节点