今回はdockerのお話。
なんとなくdockerという言葉は聞いたことあるし,漠然とどんなものかを把握していた...つもり。
いい機会だったのでdockerに触れてみました。
基本的な導入の流れ・操作を備忘録しておきます。どうぞ。
dockerとは
開発環境から本番環境に至るまでの一つの流れを作るためのプラットフォーム。
開発者がかんたんにアプリケーションを動かす環境を作ることができます。
メリットとしては,あの煩わしい環境構築の手間を考慮する必要がなくなることです。
以下の記事でほぼほぼdockerの全体図を掴めます。
https://qiita.com/kotaro-dr/items/b1024c7d200a75b992fc
dockerを使う利点
- システム基盤に依存せずにアプリの開発に従事できる。
- コンテナという概念で管理を行うために,作成するアプリごとに環境(コンテナ)を用意するだけで良い。コンテナはプラットフォームに依存しないため,ある環境で構築したものを,別の環境に用意に移動可能。(共同開発が容易)
- MACのOSでもLinuxのubuntuの環境を用意することができる。もちろんWindowsでも動くし,とにかく環境はどうだっていいのだ。
- ソースコードや,システム用ツール,システム用ライブラリなどサーバーのすべてをイメージ化できる。
自分のPCで動いたものが他人のPCでもかんたんに動かすことができる。
環境構築に悩む必要がないので,非常にdocker有能です。なんで最近まで使って来なかったんだろう...。
では,さっそくdockerを使っていきましょう。
dockerの使い方,導入までやってみる
dockerのセットアップ
- Linuxで動かす場合は以下のコマンドでセットアップ可能です。
$ curl -sSL https://get.docker.com/ | sh
または,
$ wget -q0- https://get.docker.com/ | sh
最新の現行バージョンのDockerを利用できます。
セットアップスクリプトが実行され簡単にセットアップしてくれます。
- Macの場合は以下のサイトが大変分かりやすかったです。
DockerをMacにインストールする方法
- Windowsの方はCygwinの導入をおすすめします。
Cygwinを導入後,コマンドの実行を行います。
dockerイメージを導入
dockerイメージを導入するにはdocker hubからの導入が一般的で非常に簡単です。
では,dockerhubからイメージを取得していきます。
今回は例としてdocker/whalesayというイメージを取得していきます。
$ docker pull docker/whalesay
イメージの取得ができたら,イメージ一覧を表示してみましょう。
おそらくpullしてきたイメージが一覧に表示されます。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker/whalesay latest 6b362a9f73eb 4 years ago 247MB
dockerの実行していきます
$ docker run docker/whalesay cowsay hello
cowsayはdocker/whalesayのコマンドです。
helloはそのコマンドの引数(今回はこの引数を出力します。)
おそらくクジラが喋ったのではないでしょうか。
<pre class="wp-block-preformatted"> _______
< hello >
-------
\
\
\
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/ </pre>
イメージを作成する
主にこの2つのコマンドを扱います。
今回はdocker build
を使います。
後ほど説明していきます。
$ docker commit [コンテナID] [イメージ名:タグ]
$ docker build -t [イメージ名:タグ] .
例として,docker/whalesayを改変して,名言チックなことをクジラに喋らせるようなdockerイメージの作成を行っていきます。
(名言を喋らせるためにfortunesパッケージを使います。)
作業用ディレクトリの作成
$ mkdir mydocker
$ cd mydocker
dockerfileの作成
$ vi dockerfile
dockerfileには以下の内容を記述していきます。
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay
FROM…元となるdockerイメージの指定(今回はdocker/whalesayの最新[latest]を指定)
RUN…コマンドの実行(今回はパッケージを最新にした後,fortunesパッケージを導入していきます。)
CMD…コンテナの実行コマンド(今回はfortuneコマンドをcowsayに渡して実行していきます。)
ビルドします。
$ docker build -t mydocker .
コンテナが作成され,イメージがビルドされます。
作成できたか確認は,docker一覧で確認します。
$ docker images
今ビルドしたイメージ名が存在していれば作成完了です。
コンテナの実行
ubntuコンテナの実行をするためには,
$ docker run -i -t ubuntu bash
「-i」標準入力(STDIN)を開き続ける
「-t」疑似ターミナル(pseudo-tty)を割り当てる。この場合はbashを割り当てています。
余談ですが,よく使うnginxコンテナの実行をするためには,
$ docker run -d -p 80:80 ¥ -v /data/:/usr/share/nginx/html nginx:latest
「-d」バックグラウンドで実行する
「-p」ポートの割り当て(ホスト側:コンテナ側)
「-v」ボリュームの割り当て(ホスト側:コンテナ側)
では,作成したdockerイメージを実行していきます。
実行するとこうなる...(オプションは付けなくて結構です)
$ docker run mydocker
____________________________________
/ That's life. \
| |
| What's life? A magazine. |
| |
| How much does it cost? Two-fifty. |
| |
\ I only have a dollar. That's life. /
------------------------------------
\
\
\
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
なんか喋ってる。。。
意味はよく分からんが名言チックなことをしゃべるようになった。
こんな感じでチョチョイのちょいでdockerの導入が終わってしまった。
素晴らしい。
コメント