Dockerコマンド ~学習メモ書き


前提

・導入メモになります。
・いろいろ試してみたが、やっぱりHyperVがいい

準備するもの

アプリケーション側

アプリケーション側はnodejs を使用します。
今回はnode の公式リポジトリを使用するための、Dockerfile

app-server/Dockerfile
FROM node:5
RUN npm -g install redis
ENV NODE_PATH C:\nodejs\node_modules

ENTRYPOINT ["node", "app.js"]
app-server/src/app.js
var redis = require('redis');
var redis_client = redis.createClient(6379, "noderedis");
var listen_port = 10080;

require('http').createServer(function (request, response) {
    redis_client.incr('counter', function(error, reply) {
        response.writeHead(200, {'Content-Type': 'text/plain'});
        response.end("You accessed here " + reply + " times.\n");
    });
}).listen(listen_port, '0.0.0.0');
console.log("Server is running on port " + listen_port + ".");

Docker compose ファイルの作成

docker-compose.yml
nodeapp:
  build: "./app-server"
  container_name: "nodeapp"
  working_dir: "/usr/src/app"
  ports:
   - "10080:10080"
  volumes:
   - "$PWD/app-server/src:/usr/src/app"
  links:
   - "noderedis"
noderedis:
  image: "redis:3"
  container_name: "noderedis"

コンテナ一覧を確認

$ docker ps

実行中のコンテナ一覧

$ docker ps -a

コンテナ起動

$ docker-compose up 

コンテナ停止

$ docker stop *contenaID*

おまけ

コンテナ削除

$ docker rm *contenaID*
$ docker-compose kill

マウントできない時に疑うポイント

参考になったURL

https://qiita.com/jusotech10/items/cb8077efb9b7a74dfdcc

まとめ

もともとインストールしてるoracleの仮想マシーンとDocker toolbox の相性が合わない⇒ 一旦両方ともアンインストールして、入れ直すときに、仮想マシーンにチェックして入れ直すとうまくいく

Windowsのドッカーのツールボックスのマウントは、
C:¥Users直下とマウントされるみたいです。

お金に余裕あるなら、Windows10proを最初に買ってHyperVの仮想環境を使うのが手っ取り早いし起動も早い。。仕事上はproなので環境周りが楽でした。ダッシュボードでコンテナ管理が使えるので便利かと思います。

前に作ったVagrantfile環境の整理したら、オラクルもドッカーもアンインストールしてモジュール置くためのディレクトリのマウントに再挑戦してみようと思います。。