AWS 初心者の学習に AWS Quick Start っていうコンテンツがあったんだ
Marcin Losik - Emotional Phrasing
とてもよい
Amazon Music内でMarcin LosikのEmotional Phrasingを見る https://music.amazon.co.jp/albums/B00VZ0STT8?ref=dm_sh_PzWx1lTR3MYiRPpFALBCKzIkI
Kubernates Tutorial 1
Minikube をダウンロード&インストールする
~/H/kubernates-tutorial ❯❯❯ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64 && \ cmdand> chmod +x minikube && \ cmdand cmdand> sudo mv minikube /usr/local/bin/ % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 40.5M 100 40.5M 0 0 7278k 0 0:00:05 0:00:05 --:--:-- 9106k Password: ~/H/kubernates-tutorial ❮❮❮
xhyve をインストールする。ここではやくもエラー。既存の docker-machine コマンドと衝突した。
~/H/kubernates-tutorial ❯❯❯ brew install docker-machine-driver-xhyve ==> Installing dependencies for docker-machine-driver-xhyve: docker-machine, libev ==> Installing docker-machine-driver-xhyve dependency: docker-machine ==> Downloading https://homebrew.bintray.com/bottles/docker-machine-0.14.0.high_sierra.bottle.tar.gz ######################################################################## 100.0% ==> Pouring docker-machine-0.14.0.high_sierra.bottle.tar.gz Error: The `brew link` step did not complete successfully The formula built, but is not symlinked into /usr/local Could not symlink bin/docker-machine Target /usr/local/bin/docker-machine already exists. You may want to remove it: rm '/usr/local/bin/docker-machine' To force the link and overwrite all conflicting files: brew link --overwrite docker-machine To list all files that would be deleted: brew link --overwrite --dry-run docker-machine Possible conflicting files are: /usr/local/bin/docker-machine -> /Applications/Docker.app/Contents/Resources/bin/docker-machine ==> Caveats Bash completion has been installed to: /usr/local/etc/bash_completion.d zsh completions have been installed to: /usr/local/share/zsh/site-functions To have launchd start docker-machine now and restart at login: brew services start docker-machine Or, if you don't want/need a background service you can just run: docker-machine start ==> Summary 🍺 /usr/local/Cellar/docker-machine/0.14.0: 11 files, 32.1MB ==> Installing docker-machine-driver-xhyve dependency: libev ==> Downloading https://homebrew.bintray.com/bottles/libev-4.24.high_sierra.bottle.tar.gz ######################################################################## 100.0% ==> Pouring libev-4.24.high_sierra.bottle.tar.gz 🍺 /usr/local/Cellar/libev/4.24: 12 files, 432.8KB ==> Installing docker-machine-driver-xhyve ==> Downloading https://homebrew.bintray.com/bottles/docker-machine-driver-xhyve-0.3.3.high_sierra.bottle.1.tar.gz ######################################################################## 100.0% ==> Pouring docker-machine-driver-xhyve-0.3.3.high_sierra.bottle.1.tar.gz ==> Caveats This driver requires superuser privileges to access the hypervisor. To enable, execute sudo chown root:wheel /usr/local/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve sudo chmod u+s /usr/local/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve ==> Summary 🍺 /usr/local/Cellar/docker-machine-driver-xhyve/0.3.3: 3 files, 10.5MB ~/H/kubernates-tutorial ❯❯❯
overwrite するとなにかあるかもなので、中止。
Kubernates Tutorial メモ
はじめに
Docker と Docker Swarm の復習をしたので、今度は Kubernates を調べる。Docker イメージ/コンテナの運用を Swarm でやるの面倒そうだし、Docker イメージ/コンテナの稼働/運用ツールのデファクトスタンダードが Kubernates なので、遅ればせながらやる。
なにをやる
これをやる。
docker やり直しメモ(5) Stacks
サービスにアプリを追加する。
docker-compose.txt を更新する
version: "3" services: web: # replace username/repo:tag with your name and image details image: username/repo:tag deploy: replicas: 5 restart_policy: condition: on-failure resources: limits: cpus: "0.1" memory: 50M ports: - "80:80" networks: - webnet visualizer: image: dockersamples/visualizer:stable ports: - "8080:8080" volumes: - "/var/run/docker.sock:/var/run/docker.sock" deploy: placement: constraints: [node.role == manager] networks: - webnet networks: webnet:
更新した docker-compose を service に反映する。
~/H/docker5 ❯❯❯ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS myvm1 - virtualbox Stopped Unknown myvm2 - virtualbox Stopped Unknown ~/H/docker5 ❯❯❯ docker-machine env myvm1 Error checking TLS connection: Host is not running ~/H/docker5 ❯❯❯ docker-machine restart myvm1 ⏎ Restarting "myvm1"... Starting "myvm1"... (myvm1) Check network to re-create if needed... (myvm1) Waiting for an IP... Machine "myvm1" was started. Waiting for SSH to be available... Detecting the provisioner... Waiting for SSH to be available... Detecting the provisioner... Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command. ~/H/docker5 ❯❯❯ docker-machine restart myvm2 Restarting "myvm2"... Starting "myvm2"... (myvm2) Check network to re-create if needed... (myvm2) Waiting for an IP... Machine "myvm2" was started. Waiting for SSH to be available... Detecting the provisioner... Waiting for SSH to be available... Detecting the provisioner... Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command. ~/H/docker5 ❯❯❯ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS myvm1 * virtualbox Running tcp://192.168.99.100:2376 v18.05.0-ce myvm2 - virtualbox Running tcp://192.168.99.101:2376 v18.05.0-ce ~/H/docker5 ❯❯❯ eval $(docker-machine env myvm1) ~/H/docker5 ❯❯❯ docker stack deploy -c docker-compose.yml getstartedlab Updating service getstartedlab_web (id: nuigb1fokw9ryei8v9ygyppfw) Creating service getstartedlab_visualizer ~/H/docker5 ❯❯❯
新しく追加した visualizer のプロセス(コンテナ)が稼働している。
~/H/docker5 ❯❯❯ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cabd5ef4f45a dockersamples/visualizer:stable "npm start" About a minute ago Up About a minute 8080/tcp getstartedlab_visualizer.1.2ijfurtaxb4p6k88wyxv2gq1i 00c32794b3f2 me/get-started:part2 "python app.py" About a minute ago Up About a minute 80/tcp getstartedlab_web.3.bhvt6rtjp6xevxfpheo5m98x0 a8491d81ad2e me/get-started:part2 "python app.py" About a minute ago Up About a minute 80/tcp getstartedlab_web.1.rsm3ejgwtz50fqavmfyh4fx8t
Webブラウザで 8080ポートに接続すると visualizer, 80ポートに接続すると従来のWebアプリを表示できるように変更された。
http://192.168.99.100:8080
gyazo.com
http://192.168.99.100:80
gyazo.com
サービスにDB(Redis)を追加する
docker-compose.txt に redis を追記。
version: "3" services: web: # replace username/repo:tag with your name and image details image: username/repo:tag deploy: replicas: 5 restart_policy: condition: on-failure resources: limits: cpus: "0.1" memory: 50M ports: - "80:80" networks: - webnet visualizer: image: dockersamples/visualizer:stable ports: - "8080:8080" volumes: - "/var/run/docker.sock:/var/run/docker.sock" deploy: placement: constraints: [node.role == manager] networks: - webnet redis: image: redis ports: - "6379:6379" volumes: - "/home/docker/data:/data" deploy: placement: constraints: [node.role == manager] command: redis-server --appendonly yes networks: - webnet networks: webnet:
swarm manager のなかに data ディレクトリをつくる
docker-machine ssh myvm1 "mkdir ./data"
新しい docker-compose.txt をデプロイする
~/H/docker5 ❯❯❯ eval $(docker-machine env myvm1) ~/H/docker5 ❯❯❯ docker stack deploy -c docker-compose.yml getstartedlab Updating service getstartedlab_visualizer (id: r2qmkaa6o5slmt8jhzwmcr4ti) Creating service getstartedlab_redis Updating service getstartedlab_web (id: nuigb1fokw9ryei8v9ygyppfw)
redis のプロセスが追加されて稼働を開始した。
~/H/docker5 ❯❯❯ docker service ls ID NAME MODE REPLICAS IMAGE PORTS lvucco4osp67 getstartedlab_redis replicated 1/1 redis:latest *:6379->6379/tcp r2qmkaa6o5sl getstartedlab_visualizer replicated 1/1 dockersamples/visualizer:stable *:8080->8080/tcp nuigb1fokw9r getstartedlab_web replicated 5/5 me/get-started:part2 *:80->80/tcp
Redis にデータを保存するようになったので、アクセスカウンターが動くようになった。
docker やり直しメモ(4) 横道
# マシン再起動の後 ~/H/docker4 ❯❯❯ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS myvm1 - virtualbox Stopped Unknown myvm2 - virtualbox Stopped Unknown # DOCKER* の環境変数は設定されていない状態 ~/H/docker4 ❯❯❯ env|ag DOCKER # 前述の2つのVM(Swarm の node)を起動する ~/H/docker4 ❯❯❯ docker-machine restart myvm1 Restarting "myvm1"... Starting "myvm1"... (myvm1) Check network to re-create if needed... (myvm1) Waiting for an IP... Machine "myvm1" was started. Waiting for SSH to be available... Detecting the provisioner... Waiting for SSH to be available... Detecting the provisioner... Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command. ~/H/docker4 ❯❯❯ docker-machine restart myvm2 ⏎ Restarting "myvm2"... Starting "myvm2"... (myvm2) Check network to re-create if needed... (myvm2) Waiting for an IP... Machine "myvm2" was started. Waiting for SSH to be available... Detecting the provisioner... Waiting for SSH to be available... Detecting the provisioner... Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command. # docker-machine の起動状態を確認 ~/H/docker4 ❯❯❯ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS myvm1 - virtualbox Running tcp://192.168.99.100:2376 v18.05.0-ce myvm2 - virtualbox Running tcp://192.168.99.101:2376 v18.05.0-ce ~/H/docker4 ❯❯❯ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ~/H/docker4 ❯❯❯ docker stack ls Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again. ~/H/docker4 ❯❯❯ docker-machine env myvm1 ⏎ export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.168.99.100:2376" export DOCKER_CERT_PATH="/Users/satoru/.docker/machine/machines/myvm1" export DOCKER_MACHINE_NAME="myvm1" # Run this command to configure your shell: # eval $(docker-machine env myvm1) # 手元から myvm1(swarm manager)の中にはいる ~/H/docker4 ❯❯❯ eval $(docker-machine env myvm1) # myvm1(swarm manager)の中でスタックの確認 ~/H/docker4 ❯❯❯ docker stack ls NAME SERVICES getstartedlab 1 # myvm1(swarm manager)の中でコンテナ稼働中。 ~/H/docker4 ❯❯❯ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b559f4feca31 me/get-started:part2 "python app.py" 2 minutes ago Up 2 minutes 80/tcp getstartedlab_web.1.jibwht3xvh0nccpanxhe0e7f3 2f912f6c0e01 me/get-started:part2 "python app.py" 3 minutes ago Up 3 minutes 80/tcp getstartedlab_web.3.8bk7vrtv5s20l14p9bv03l3x7 0731ecaad1ed me/get-started:part2 "python app.py" 3 minutes ago Up 3 minutes 80/tcp getstartedlab_web.2.tr8aftd3w451d4twq8s39rndr ~/H/docker4 ❯❯❯
アプリが稼働している。 host が myvm1 gyazo.com
host が myvm2 gyazo.com
~/H/docker4 ❯❯❯ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b559f4feca31 me/get-started:part2 "python app.py" 2 minutes ago Up 2 minutes 80/tcp getstartedlab_web.1.jibwht3xvh0nccpanxhe0e7f3 2f912f6c0e01 me/get-started:part2 "python app.py" 3 minutes ago Up 3 minutes 80/tcp getstartedlab_web.3.8bk7vrtv5s20l14p9bv03l3x7 0731ecaad1ed me/get-started:part2 "python app.py" 3 minutes ago Up 3 minutes 80/tcp getstartedlab_web.2.tr8aftd3w451d4twq8s39rndr
停止する
~/H/docker4 ❯❯❯ docker-machine stop myvm2 Stopping "myvm2"... Machine "myvm2" was stopped. ~/H/docker4 ❯❯❯ docker-machine stop myvm1 Stopping "myvm1"... Machine "myvm1" was stopped.