雷って幻想的だよね?

宗教:C#、ラノベ好きの戯言です。※Google Analytics 埋め込みを利用しています。

今更ながらDockerのチュートリアルをやってみた。

gradleもそうだけど、まず、触ってみる必要があるよね、知ったときに忘れないようにしないと・・・
自分のメモをかねて。

Docker チュートリアル(part1~4)
Get Started, Part 1: Orientation and setup | Docker Documentation

docker --version

ヘルプは

--help

をつける

実行

docker run hogehoge

イメージリスト

docker image ls --all

サーバーを立てて起動

docker run --interactive --tty ubuntu bash

起動中のDockerの確認

docker container ls --all

デタッチ

docker run --detach --publish 80:80 --name webserver nginx

コンテナのストップ

docker container stop hogehoge

lsのNameをせっとする

コンテナの削除

docker rm hogehoge

上記のストップ時のhogehogeと同じ

ビルド

docker build --tag=hogehoge

ポートを指定して起動

docker run -p 4000:80 friendlyhello

ログイン(イメージのプッシュなどで利用する)

docker login

タグ付け
docker tag イメージ名 リポジトリ名:タグ名
例:

docker tag friendlyhello taketakekaho/get-started:part2

プッシュ

docker push リポジトリ名:タグ名

Dockerのロードバランサーの初期化

docker swarm init

アプリに名称をつけて、Dockerへデプロイする

docker stack deploy -c docker-compose.yml getstartedlab

例:

docker stack deploy -c docker-compose.yml getstartedlab

サービスの一覧(バランサーの一覧???)

docker service ls

サービスタスクの一覧を表示

docker service ps getstartedlab_web

サービスを停止して切り離す

docker stack rm getstartedlab


【環境準備】

↑をするためにはVMの作成が必要 windows10/Hyper-V
Hyper-Vマネージャーを起動
PC名を選択状態にして、メニューの操作から「仮想スイッチマネージャー」を選択
「外部」を選択して「仮想スイッチの作成」を行う
が、「docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1」のコマンドでも良いらしい

・名前を「myswitch」にする。(サンプルコマンドを動かすため)
ネットワークアダプターの共有のチェックボックスがチェックされていることを確認する


配置(Hyper-Vに配信):コマンドプロンプトを管理者権限にする

docker swarm init
↑もしかしたらいらないかも(環境準備していなくてエラーになっていたので・・・)
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm2

VMのリスト表示

docker-machine ls

swarmの初期化と、ノードの追加

docker-machine ssh myvm1 "docker swarm init --help"
docker-machine ssh myvm1 "docker swarm init --advertise-addr マシンのIPアドレス:2376"
※例:
 docker-machine ssh myvm1 "docker swarm init --advertise-addr 192.168.99.100:2376"

docker-machine ssh myvm2 "docker swarm join \

    • token \

<マシンのIPアドレス>:2377"
↑改行はなくすこと

docker-machine ssh myvm1 "docker node ls"

解放する場合は

docker swarm leave

コマンドで行う(2つとも)

クラスター群にデプロイする
「docker-compose.yml」を作成したフォルダに移動して、以下のコマンド行う(Part3で作ってるはず)

docker-machine env myvm1

※ポート番号には注意!(後で開かなくて???となってたので)

なんかサンプルと違うけど以下のコマンドを実行する
@FOR /f "tokens=*" %i IN ('docker-machine env myvm1') DO @%i
※このコマンドは一つ前のコマンドの実行結果で表示されている内容です。
これでアクティブになった。

デプロイする

docker stack deploy -c docker-compose.yml getstartedlab
docker stack ps getstartedlab

または、ログインして持ってくる

docker login
docker stack deploy --with-registry-auth -c docker-compose.yml getstartedlab

docker-machine ls
でIPを確認して、ブラウザで開く
※ポートはそのままの流れで来ていると4000番なので注意

削除

docker stack rm getstartedlab

開始と停止

docker-machine stop myvm1
docker-machine start myvm1
docker-machine restart myvm1

参考:
https://qiita.com/taketakekaho/items/62aee171c942af323b4c
↑途中で諦めてる・・・残念

※以下のサイトの<>でくくられているところは置き換え前提の箇所とのこと(by:https://github.com/docker/machine/issues/4303
https://docs.docker.com/get-started/part1/
https://docs.docker.com/get-started/part2/
https://docs.docker.com/get-started/part3/
https://docs.docker.com/get-started/part4/
swarmに関して
http://docs.docker.jp/swarm/overview.html
docker stackに関して
https://medium.com/@Akitsuyoshi/docker-%E3%81%AEstack%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6-f58db0202673