今更ながら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の確認
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