docker

【独断】dockerの1番便利な使い方!!!

はじめに

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つです.

  1. イメージを指定してコンテナ起動
  2. 終了時コンテナ自動破棄オプション
  3. コンテナ内を操作するオプション
  4. マウントオプション
  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を使えば簡単に環境構築ができます.
是非, お試しあれ!!

参考

Empowering App Development for Developers | Docker
Learn how Docker helps developers bring their ideas to life by conquering the complexity of app development.
DockerのVolumeに関して -v --rm -d ゴミが残る問題 コンテナが起動しない - ちょこっとプログラミング
最近Dockerを使い始めたのですが、一つ躓いたのでメモ。Dockerのコンテナを立上げる時、コンテナとは別に実は裏でボリュームと言う物も立ち上がっています。 (立上げる時に使うイメージによって違うかもしれませんがMysqlを立上げたら勝手に立ち上がるのは確認済みです) イメージ的にはこんな感じです: 公式ドキュメント...
そーたの技術ブログ

コメント

タイトルとURLをコピーしました