mirror of
https://github.com/yeasy/docker_practice.git
synced 2025-08-02 14:01:49 +00:00
@@ -9,13 +9,13 @@ Constraint 过滤器是绑定到节点的键值对,相当于给节点添加标
|
||||
|
||||
可在启动 Docker 服务的时候指定,例如指定某个节点颜色为 `red`。
|
||||
|
||||
```sh
|
||||
$ sudo docker daemon --label color=red -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
|
||||
```bash
|
||||
$ docker daemon --label color=red -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
|
||||
```
|
||||
|
||||
同样的,可以写在 Docker 服务的配置文件里面(以 Ubuntu 14.04 为例,是 `/etc/default/docker`)。
|
||||
|
||||
```sh
|
||||
```bash
|
||||
DOCKER_OPTS="--label color=red -H 0.0.0.0:2375 -H unix:///var/run/docker.sock"
|
||||
```
|
||||
|
||||
@@ -25,7 +25,7 @@ DOCKER_OPTS="--label color=red -H 0.0.0.0:2375 -H unix:///var/run/docker.sock"
|
||||
|
||||
然后,分别启动两个容器,指定使用过滤器分别为红色和绿色。
|
||||
|
||||
```sh
|
||||
```bash
|
||||
$ docker -H 192.168.0.2:12375 run -d -e constraint:color==red ubuntu:14.04 ping 127.0.0.1
|
||||
252ffb48e64e9858c72241f5eedf6a3e4571b1ad926faf091db3e26672370f64
|
||||
$ docker -H 192.168.0.2:12375 run -d -e constraint:color==green ubuntu:14.04 ping 127.0.0.1
|
||||
@@ -36,7 +36,7 @@ $ docker -H 192.168.0.2:12375 run -d -e constraint:color==green ubuntu:14.04 pin
|
||||
|
||||
查看它们将被分配到指定节点上。
|
||||
|
||||
```sh
|
||||
```bash
|
||||
$ docker -H 192.168.0.2:12375 ps
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
252ffb48e64e ubuntu:14.04 "ping 127.0.0.1" 1 minutes ago Up 1 minutes Host-2/sick_galileo
|
||||
@@ -47,7 +47,7 @@ CONTAINER ID IMAGE COMMAND CREATED
|
||||
|
||||
例如,目前集群中各个节点的信息为:
|
||||
|
||||
```sh
|
||||
```bash
|
||||
$ docker -H 192.168.0.2:12375 info
|
||||
Containers: 5
|
||||
Images: 39
|
||||
@@ -72,26 +72,26 @@ Name: 946d65606f7c
|
||||
|
||||
### Affinity 过滤器
|
||||
Affinity 过滤器允许用户在启动一个容器的时候,让它分配到某个已有容器的节点上。
|
||||
|
||||
|
||||
例如,下面我们将启动一个 nginx 容器,让它分配到已经运行某个 ubuntu 容器的节点上。
|
||||
|
||||
|
||||
在 Constraint 过滤器的示例中,我们分别启动了两个 ubuntu 容器 `sick_galileo` 和 `compassionate_ritchie`,分别在 Host-2 和 Host-3 上。
|
||||
|
||||
现在启动一个 nginx 容器,让它跟容器 `sick_galileo` 放在一起,都放到 Host-2 节点上。可以通过 `-e affinity:container==<name or id>` 参数来实现。
|
||||
|
||||
```sh
|
||||
```bash
|
||||
$ docker -H 192.168.0.2:12375 run -d -e affinity:container==sick_galileo nginx
|
||||
```
|
||||
|
||||
然后启动一个 redis 容器,让它跟容器 `compassionate_ritchie` 放在一起,都放到 Host-3 节点上。
|
||||
|
||||
```sh
|
||||
```bash
|
||||
$ docker -H 192.168.0.2:12375 run -d -e affinity:container==compassionate_ritchie redis
|
||||
```
|
||||
|
||||
查看所有容器运行情况。
|
||||
|
||||
```sh
|
||||
```bash
|
||||
$ docker -H 192.168.0.2:12375 ps
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
0a32f15aa8ee redis "/entrypoint.sh redis" 2 seconds ago Up 1 seconds 6379/tcp Host-3/awesome_darwin
|
||||
|
@@ -6,13 +6,13 @@ Swarm 安装有几种方式,可以基于 Docker Machine 来进行安装,也
|
||||
### 下载镜像
|
||||
Docker 官方已经提供了 Swarm 镜像使用,需要在所有被 Swarm 管理的 Docker 主机上下载该镜像。
|
||||
|
||||
```sh
|
||||
```bash
|
||||
$ docker pull swarm
|
||||
```
|
||||
|
||||
可以使用下面的命令来查看 Swarm 版本,验证是否成功下载 Swarm 镜像。
|
||||
|
||||
```sh
|
||||
```bash
|
||||
$ docker run --rm swarm -v
|
||||
swarm version 1.2.2 (34e3da3)
|
||||
```
|
||||
@@ -22,8 +22,8 @@ Docker 主机在加入 Swarm 集群前,需要进行一些简单配置,添加
|
||||
|
||||
例如,在启动 Docker daemon 的时候通过 `-H` 参数:
|
||||
|
||||
```sh
|
||||
$ sudo docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
|
||||
```bash
|
||||
$ docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
|
||||
```
|
||||
|
||||
*注:Docker 1.8.0 版本之前不支持 daemon 命令,可以用 -d 代替。*
|
||||
@@ -34,7 +34,7 @@ $ sudo docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
|
||||
|
||||
在文件的最后添加:
|
||||
|
||||
```sh
|
||||
```bash
|
||||
DOCKER_OPTS="$DOCKER_OPTS -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
|
||||
```
|
||||
|
||||
@@ -48,7 +48,7 @@ Docker 集群管理需要使用服务发现(Service Discover)功能,Swarm
|
||||
#### 启动 Consul 服务后端
|
||||
启动 consul 服务容器,映射到主机的 8500 端口。
|
||||
|
||||
```sh
|
||||
```bash
|
||||
$ docker run -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap
|
||||
```
|
||||
|
||||
@@ -57,13 +57,13 @@ $ docker run -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap
|
||||
#### 启动管理节点
|
||||
首先,启动一个主管理节点,映射到主机的 4000 端口,并获取所在主机地址为 `<manager0_ip>`。其中 4000 端口是 Swarm 管理器的默认监听端口,用户也可以指定映射为其它端口。
|
||||
|
||||
```sh
|
||||
```bash
|
||||
$ docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise <manager0_ip>:4000 consul://<consul_ip>:8500
|
||||
```
|
||||
|
||||
为了提高高可用性,用户也可以启动从管理节点。假定获取所在主机地址为 `<manager1_ip>`。
|
||||
|
||||
```sh
|
||||
```bash
|
||||
$ docker run -d swarm manage -H :4000 --replication --advertise <manager1_ip>:4000 consul://<consul_ip>:8500
|
||||
```
|
||||
|
||||
@@ -72,7 +72,7 @@ $ docker run -d swarm manage -H :4000 --replication --advertise <manager1_ip>:40
|
||||
|
||||
获取节点的主机地址为 `<node_ip>`,并指定前面获取到的 consul 服务地址。
|
||||
|
||||
```sh
|
||||
```bash
|
||||
$ docker run -d swarm join --advertise=<node_ip>:2375 consul://<consul_ip>:8500
|
||||
```
|
||||
|
||||
|
Reference in New Issue
Block a user