mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
62 lines
2.4 KiB
Markdown
62 lines
2.4 KiB
Markdown
# Run etcd clusters inside containers
|
|
|
|
The following guide shows how to run etcd with rkt and Docker using the [static bootstrap process](clustering.md#static).
|
|
|
|
## Docker
|
|
|
|
In order to expose the etcd API to clients outside of Docker host, use the host IP address of the container. Please see [`docker inspect`](https://docs.docker.com/engine/reference/commandline/inspect) for more detail on how to get the IP address. Alternatively, specify `--net=host` flag to `docker run` command to skip placing the container inside of a separate network stack.
|
|
|
|
```
|
|
# For each machine
|
|
ETCD_VERSION=v3.0.0
|
|
TOKEN=my-etcd-token
|
|
CLUSTER_STATE=new
|
|
NAME_1=etcd-node-0
|
|
NAME_2=etcd-node-1
|
|
NAME_3=etcd-node-2
|
|
HOST_1=10.20.30.1
|
|
HOST_2=10.20.30.2
|
|
HOST_3=10.20.30.3
|
|
CLUSTER=${NAME_1}=http://${HOST_1}:2380,${NAME_2}=http://${HOST_2}:2380,${NAME_3}=http://${HOST_3}:2380
|
|
|
|
# For node 1
|
|
THIS_NAME=${NAME_1}
|
|
THIS_IP=${HOST_1}
|
|
sudo docker run --net=host --name etcd quay.io/coreos/etcd:${ETCD_VERSION} \
|
|
/usr/local/bin/etcd \
|
|
--data-dir=data.etcd --name ${THIS_NAME} \
|
|
--initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://${THIS_IP}:2380 \
|
|
--advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://${THIS_IP}:2379 \
|
|
--initial-cluster ${CLUSTER} \
|
|
--initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}
|
|
|
|
# For node 2
|
|
THIS_NAME=${NAME_2}
|
|
THIS_IP=${HOST_2}
|
|
sudo docker run --net=host --name etcd quay.io/coreos/etcd:${ETCD_VERSION} \
|
|
/usr/local/bin/etcd \
|
|
--data-dir=data.etcd --name ${THIS_NAME} \
|
|
--initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://${THIS_IP}:2380 \
|
|
--advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://${THIS_IP}:2379 \
|
|
--initial-cluster ${CLUSTER} \
|
|
--initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}
|
|
|
|
# For node 3
|
|
THIS_NAME=${NAME_3}
|
|
THIS_IP=${HOST_3}
|
|
sudo docker run --net=host --name etcd quay.io/coreos/etcd:${ETCD_VERSION} \
|
|
/usr/local/bin/etcd \
|
|
--data-dir=data.etcd --name ${THIS_NAME} \
|
|
--initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://${THIS_IP}:2380 \
|
|
--advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://${THIS_IP}:2379 \
|
|
--initial-cluster ${CLUSTER} \
|
|
--initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}
|
|
```
|
|
|
|
To run `etcdctl` using API version 3:
|
|
|
|
```
|
|
docker exec etcd /bin/sh -c "export ETCDCTL_API=3 && /usr/local/bin/etcdctl put foo bar"
|
|
```
|
|
|