ラベル Linux の投稿を表示しています。 すべての投稿を表示
ラベル Linux の投稿を表示しています。 すべての投稿を表示

2018/06/10

Docker Universal Control Plane を CentOS7 で起動してみる

前回の記事では CentOS7 に Docker EE を入れました。
さて、何故入れたかと言えば Docker Universal Control Plane(UCP) を使ってみたかったからです。

Unix User を dockergroup に所属させることで、複数のユーザが root でなくても docker を利用できます。
しかし、他人が run した container に attach 可能。場合によってはよろしくない。
何か解決策が無いかと調べたところ UCP を見付けました。

UCP には Permission Control があって、Full Control の権限をユーザに与えても
The user can view and edit volumes, networks, and images, They can create containers without any restriction, but can't see other users' containers.
とのことで、別のユーザのコンテナは見られない。
なので、root でない複数ユーザが、相互に干渉せず docker を使えそうです。


環境

  • OS: CentOS Linux release 7.4.1708 (Core)
  • Kernel: 3.10.0-693.5.2.el7.x86_64
  • Docker: docker-ee-17.03.0.ee.1-1.el7.centos.x86_64
  • Docker Universal Control Plane: 2.2.6


run UCP

公式の document に従って UCP のイメージを run します。
  • $ docker image pull docker/ucp:2.2.6
  • $ docker container run --rm -it --name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp:2.2.6 install --host-address 127.0.0.1 --interactive
    • --interactive が付いてるので適宜入力します
    • 具体的には Admin username や password とかですね
さてこれで起動……しません。
INFO[0000] Initializing a new swarm at 127.0.0.1     
FATA[0034] the following required ports are blocked on your host: 12385, 12376, 12383, 443, 12384, 12379, 12387, 12386, 12381, 12382, 2376, 12380.  Check your firewall settings 
と言われました。おお、結構な数の port 使うな。

ということで firewall に穴を開けます。
  • # for i in 12376 4789 12386 2376 443 12381 12380 12382 12383 12384 12385 12379 12387 ; firewall-cmd --add-port=$i/tcp --permanent
  • # firewall-cmd --reload
くらいかな。

そして再度 run してみる。今度は
FATA[0031] The following required ports are already in use on your host - 2377.  You may specify an alternative port number to 2377 with the --swarm-port argument.
と言われた。あれ。何が 2377 使ってるんだ?
  • $ netstat -lntp
すると確かに 2377 が listen になってる。 process name は dockerd か。

結論から言うと、一回目で起動した swarm が生きてたのが原因でした。なので
  • $ docker swarm leave --force
して抜ける。さて三度目のトライ。コマンドは変わらず
  • $ docker run -it --rm --name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp:2.2.6 install --interactive
で実行します。お、起動したっぽいですね。三度目の正直。
INFO[0007] Generating UCP Client Root CA
INFO[0007] Deploying UCP Service
INFO[0035] Installation completed on raven (node abcdefghijklmnopqrstuvwxy)
...
INFO[0035] Login to UCP at https://127.0.0.1:443
https//127.0.0.1 にアクセスすると UCP の画面が出てきました。ログインも可能。良し良し。


参考

2018/06/03

Docker EE を CentOS 7 に install する

Enterprise Edition の Docker を CentOS 7 に入れてみたのでそのメモ


環境

  • OS: CentOS Linux release 7.4.1708 (Core)
  • Kernel: 3.10.0-693.5.2.el7.x86_64
  • Docker: docker-ee-17.03.0.ee.1-1.el7.centos.x86_64


yum-config-manager --add-repo

まずは公式のドキュメントに従います。
Enterprise Edition の Docker は無料では使えないので、 subscription を買う必要があります。
なのですが、一ヶ月無料お試しもできるので、s

trial が始まるとユーザアカウント固有の URL が貰えます。
  • $ export DOCKERURL="<DOCKER-EE-URL>"
のところですね。ちなみに具体的なURL は
  • $ export DOCKERURL='https://storebits.docker.com/ee/centos/<uuid>'
でした。たぶん uuid は user ごとに違いそうなのでここには書きません。

DOCKERURL も分かったので、後は公式ドキュメント指示通りに続けます。
  • $ sudo -E sh -c 'echo "$DOCKERURL/rhel" > /etc/yum/vars/dockerurl'
  • $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  • $ sudo -E yum-config-manager --add-repo "$DOCKERURL/rhel/docker-ee.repo"
  • $ sudo yum -y install docker-ee
でインストール……されないですね。
[Errno 14] curl#6 - "Could not resolve host: storebits.docker.com; Unknown error"
と言ってきますが、 dig では storebits.docker.com は返ってくる。謎。


DOCKERURL

結論から言うと、 DOCKERURL が間違っていました。
RHEL のドキュメントの DOCKERURL は
  • $ sudo -E yum-config-manager --add-repo "$DOCKERURL/rhel/docker-ee.repo"
ですが、store.docker.com から提供された URL は
  • https://storebits.docker.com/ee/centos/<uuid>
なので、どうも帳尻が合っていない。
いろいろ試した結果、 CentOS 用のキュメントは RHEL とは別にありました。
おお、そこまで区別してるのか。 sensitive だ。

ということで CentOS 用のドキュメントに従って
  • $ sudo -E yum-config-manager --add-repo "$DOCKERURL/centos/docker-ee.repo"
  • $ sudo yum -y install docker-ee
で Install できました。良し。


おまけ: docker-ee.repo

ちなみに DOCKERURL をブラウザで開くとファイル一覧が見られます。
ちょっと見た結果 yum の repo と rpm が置かれていました。
にしても、 yum の repo の仕様なのか、 docker-ee.repo が
  • DOCKERURL/docker-ee.repo
  • DOCKERURL/centos/docker-ee.repo
みたいに2つあって、どっちが正しいのか悩んだり。両方とも正しい可能性もあるな。



参考

2018/04/08

CentOS7 で root 以外のユーザも Docker を操作できるようにする

基本的に Docker を使う時は root です。
しかし複数人数で Docker を利用したい場合、全員に root をあげるのは良くない。
調べたところ docker というグループに所属させることで、 root でなくても Docker を操作できるらしい。


環境

  • OS:CentOS Linux release 7.4.1708 (Core) 
  • Kernel: 3.10.0-693.5.2.el7.x86_64
  • Docker: version 17.06.2-ee-7, build 925df35


dockerroot group

さて docker group の gid でも見るかと
  • $ cat /etc/group | grep docker
    • dockerroot:x:985:
すると docker group が無い。
が、 dockerroot というものがある。
  • $ sudo gpasswd -a atton dockerroot
して所属させてみる。
しかし、
  • $ docker ps 
すると見られない。


Socket の Owner

どうやら /var/run/docker.sock の owner は root:root らしい。
docker を yum install したら dockerroot group を作るのに何故 owner は root のみなんだろ。
まー root 以外に操作させないように念のため、ってことなのかな。

とりあえず dockerroot が読み書きできるように変更。
  • $ sudo chown root:dockerroot /var/run/docker.sock
そして一旦 exit して
  • $ docker ps
すると見られた。
  • $ docker -it run ubuntu:16.04 bash
しても動く。良し良し。


権限とか

ちなみにコンテナ内部で
  • $ whoami
すると root と言われる。
あと、他人が起動したコンテナも操作できてしまう。

なので
複数人数で Docker 操作+他人のコンテナに干渉しない
場合は wrapper を作るか、他の手段に頼る必要がありそう。


参考