以前的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來設置各個節點