Changes between Version 44 and Version 45 of linux/docker


Ignore:
Timestamp:
2016/09/08 10:31:36 (8 years ago)
Author:
yuna
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • linux/docker

    v44 v45  
    313313 
    314314/var/lib/docker/devicemapper ディレクトリを削除すると、サービスが起動するようになります。devicemapperで起動していたコンテナは削除されるので、古いバージョンに戻りexportでコンテナの移行などをしてください。 
    315  
    316  
    317 = Swarmの設定 
    318  
    319 詳しくは[ここ https://docs.docker.com/swarm/install-manual/]に書いてある。構成は、次のような構成を考えておく。 
    320  
    321 {{{ 
    322 swarm    consul  swarm      consul  swarm 
    323 manager  server  join       agent   join 
    324 +------------------------+  +---------------------+ 
    325 | DockerHost1            |  | DockerHost2         |   ... 
    326 | 192.168.100.1          |  | 192.168.100.2       | 
    327 | 管理ノード&Dockerホスト|  | Dockerホスト        | 
    328 +------------------------+  +---------------------+ 
    329 }}} 
    330  
    331 DockerHost1は管理ノード兼Dockerホスト、DockerHost2はDockerホストとする。管理ノードをDockerホストとして利用しないのであれば、DockerHost1上のswarm joinは不要。 
    332  
    333  
    334 == 事前準備 
    335  
    336 最初にクラスタのトークンを作成する。 
    337  
    338 {{{ 
    339 # docker pull swarn 
    340 # docker run --rm swarm create 
    341 a8440712cd4709e5edbf701506189c3c 
    342 }}} 
    343  
    344 以下、ノードを起動する際には、上記のトークンを利用するので、メモしておく。 
    345  
    346 === VMコピー時の注意 
    347  
    348 VMをコピーしてDockerホストを複数作成すると正しくクラスタに登録できない。 
    349 /etc/docker/key.jsonファイルでDockerは自身のIDを識別するようになっている。 
    350 VMをコピーしてDockerホストを作成した場合、下記のように、キーを削除して 
    351 Dockerを再起動する。 
    352  
    353 {{{ 
    354 # rm /etc/docker/key.json 
    355 # service docker restart 
    356 }}} 
    357  
    358 == 管理ノード(consulサーバの起動) 
    359  
    360 次のようなconsule-server.jsonファイルを作成し、consulサーバを起動する。 
    361 {{{ 
    362 { 
    363   "datacenter": "docker", 
    364   "addresses" : { 
    365     "http": "0.0.0.0" 
    366   }, 
    367   "bind_addr": "192.168.100.1", 
    368   "node_name": "dockerhost1", 
    369   "domain": "consul", 
    370   "server": true, 
    371   "bootstrap_expect": 1, 
    372   "data_dir": "/var/lib/consul" 
    373 } 
    374 }}} 
    375  
    376 {{{ 
    377 # mkdir -p /var/log/consul 
    378 # consul agent -config-file consul-server.json  >> /var/log/consul/consul.log 
    379 }}} 
    380  
    381 == 各ノードの設定 
    382  
    383 === Consulクライアントの設定 
    384  
    385 次のようなconsule-client.jsonファイルを作成し、consulエージェントを起動する。bind_addrには、Dockerホストの各IPを設定する。 
    386 (consulサーバを起動したノードでは実行しないので注意!)a 
    387 {{{ 
    388 { 
    389   "datacenter": "docker", 
    390   "addresses" : { 
    391     "http": "0.0.0.0" 
    392   }, 
    393   "bind_addr": "192.168.100.2", 
    394   "node_name": "dockerhost2", 
    395   "domain": "consul", 
    396   "retry_join": [ "192.168.100.1"], 
    397   "server": false, 
    398   "data_dir": "/var/lib/consul" 
    399 } 
    400 }}} 
    401  
    402 {{{ 
    403 # mkdir -p /var/log/consul 
    404 # consul agent -config-file consul-client.json  >> /var/log/consul/consul.log 
    405 }}} 
    406  
    407 /etc/default/dockerに下記の設定を追加しホストの2375ポートを 
    408 コンテナにバインドできるようにする。 
    409 {{{ 
    410 DOCKER_OPTS="--cluster-store=consul://localhost:8500 --cluster-advertise=192.168.100.1:2376 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock" 
    411 }}} 
    412  
    413 Swarmエージェントを起動する。ホストIDは、ノードのIP。 
    414  
    415 {{{ 
    416 # docker run -d swarm join --addr=<ホストIP>:2375 token://<トークンID> 
    417 }}} 
    418  
    419 例えば、次のような感じ。 
    420  
    421 {{{ 
    422 # docker run -d swarm join --addr=192.168.100.2:2375 token://a8440712cd4709e5edbf701506189c3c 
    423 }}} 
    424  
    425 == 管理ノード(クラスタマネージャの設定) 
    426  
    427 管理ノードで下記のコマンドを実行し、クラスタマネージャを起動する。 
    428 Dockerホストのどこかのノードでもよい。 
    429  
    430 {{{ 
    431 # docker run -d -p 2376:2375 swarm manage token://a8440712cd4709e5edbf701506189c3c 
    432 }}} 
    433  
    434 == 動作確認 
    435  
    436 起動できたら下記のコマンドでクラスタの動作を確認できる。 
    437  
    438 {{{ 
    439 # docker -H tcp://192.168.100.1:2376 info 
    440 Containers: 9 
    441 Images: 4 
    442 Role: primary 
    443 Strategy: spread 
    444 Filters: health, port, dependency, affinity, constraint 
    445 Nodes: 2 
    446  dockerhost1: 192.168.100.1:2375 
    447   └ Status: Healthy 
    448   └ Containers: 8 
    449   └ Reserved CPUs: 0 / 1 
    450   └ Reserved Memory: 0 B / 1.018 GiB 
    451   └ Labels: executiondriver=native-0.2, kernelversion=3.19.0-28-generic, operatingsystem=Ubuntu 14.04.1 LTS, storagedriver=aufs 
    452  dockerhost2: 192.168.100.2:2375 
    453   └ Status: Healthy 
    454   └ Containers: 1 
    455   └ Reserved CPUs: 0 / 1 
    456   └ Reserved Memory: 0 B / 1.018 GiB 
    457   └ Labels: executiondriver=native-0.2, kernelversion=3.19.0-28-generic, operatingsystem=Ubuntu 14.04.1 LTS, storagedriver=aufs 
    458 CPUs: 2 
    459 Total Memory: 2.037 GiB 
    460 Name: 49a004525d21 
    461 }}} 
    462315 
    463316= Dockerでnetperfを使う