はじめに
dockerにはいろいろな使い方があります. 常につけっぱにするサーバとしてだったり, 仲間と全く同じの環境を作成するためだったり, 色々です.
しかし一方で「サーバ?別にレンタルサーバだから要らないし…」「チーム開発あんまりやらない」という人もいると思います.
今回はdocker歴1年の僕が1番便利だと感じたdockerの使い方について紹介します.
この方法は誰でも使う余地があると思いますので是非, 試してみてください!!
環境
windows Linux MacOS … dockerが動く環境全て
目的
…で前振りはいいから結局何すんの?って話なんですが,
dockerでほぼ全ての環境を構築をしましょう.
それこそ最近はオンライン授業で自分のPCに環境を作ってくださいとか言われるかもしれません.
そういう先生に是非言いたい! dockerでやりましょうと.
ということで今回はdockerで環境構築をするのが目的です.
具体例をみていきましょう.
使い方
ストーリー
授業でC言語のプログラムを作ってこいと言われた
C言語の環境ってどうやるの? gcc?なにそれ, 怖いから直接PCに入れたくない!
そこでdockerです.
docker run --rm -it -v $PWD:/workdir gcc bash
このコマンドを打つだけでC言語が動く環境ができました!
手順
コンテナイメージを決定する
まず, 利用するコンテナイメージをググって決定します.
僕は以下のイメージをよく利用しています.
言語 | イメージ |
---|---|
C言語 | gcc |
java | openjdk |
python | python |
Go言語 | golang |
コンテナを起動する
先に見たコマンドを使ってコンテナを起動しましょう.
今回はカレントディレクトリと/workdirをマウントしてgccイメージのコンテナを起動します.
docker run --rm -it -v $PWD:/workdir gcc bash
コンテナ内で操作する
コマンドを打つとコンテナ内に入れたと思います.
それでは「cd /workdir」で正しくマウントできているか確認してください.
あとは通常通り操作するだけです. 例としてgccの場合は以下のようにして実行します.
gcc <ファイル名>.c && ./a.out
使い終わったら
exit
でコンテナから出ます.
それでは利用したコマンドについて説明していきます.
解説
このコマンドでやっていることは大きく分けて5つです.
- イメージを指定してコンテナ起動
- 終了時コンテナ自動破棄オプション
- コンテナ内を操作するオプション
- マウントオプション
- シェルの指定
それぞれ見ていきましょう!
イメージを指定してコンテナ起動
docker run
コンテナイメージを指定してコンテナを起動します.
コンテナイメージとはコンテナを作成するときの元となるものです.
よくクラスとインスタンスの関係で例えられます.
- クラス -> コンテナイメージ
- インスタンス -> コンテナ
またコンテナイメージがローカルにない場合は自動でdocker hubからpullします.
終了時コンテナ自動破棄オプション(–rm)
docker run --rm
コンテナがストップしたときに, 自動でコンテナとコンテナに関連するvolumeを削除するというオプションです. これがないとコンテナを破棄してもvolumeの繋がりが残ってしまい, 無駄にメモリ消費を消費してしまうことがあります.
コンテナ内を操作するオプション(-it)
docker run -it
正確にはiオプションが標準入力を開けるもの, tオプションが擬似端末を割り当てるオプションです.
しかし実際ほとんど一緒に使われるので -it でコンテナ操作できるオプションと覚えていいと思います.
マウントオプション(-v)
docker run -v $PWD:/workdir
ホストOSのディレクリとコンテナ内のディレクトリをつなげるオプションです.
この例だと$PWDとコンテナ内のルートディレクトリにあるworkdirディレクトリを繋げます.
$PWDはprint working directoryの略で今開いているディレクトリへのパスです.
具体的になんなの?という人は端末を開いて「echo $PWD」と打って試してみてください.
コンテナ内を操作するシェル指定(bash)
docker run -it bash
itオプションで開くときのシェルをbashに指定します.
おわりに
dockerを使えば簡単に環境構築ができます.
是非, お試しあれ!!
コメント