Dockerの基本的操作メモ
こんにちは。花粉症で目鼻が辛くて、取り外して洗える仕組みにならないかなーと毎年思っているなべくらです。
今回はDockerについて一通り学習したので、今後の自分用メモとして使い方を書き残しておこうと思います。
基本概念
Dockerはコンテナ型仮想を実現するアプリケーション(またはプラットフォーム)の一種。他の仮想化と違って
ゲストOSが無く起動が早い
仮想サーバーではないので、1つのコンテナに複数のアプリケーションをインストールしない(できるが非推奨)
という特徴がある。
ちなみにコンテナにゲストOSは含まれないが、あたかもLinuxを起動しているかのように見せてくれる。
ただ、あくまで見せてくれるだけなので、実際に使っているのはホストOS。そのためホストOSが異なれば挙動が異なることがある(例:M1MacとIntelモデルのMacで挙動が異なることがある)
コンテナに関する理解
コンテナとは、特定のコマンドを実行するためにホストマシン上に作られる隔離された領域のこと。イメージをもとにつくられ、Docker Engine(Linux で動くソフトウェア)上で生成や停止といった操作ができる。複数のコンテナは互いに独立していて影響しない。
ちなみに停止済みのコンテナは再起動できるが、ほとんど再起動することはないので用が済んだら削除してしまって問題無い。
Dockerを操作する基本的なコマンド
Dockerのコンテナを起動する
基本形
$ docker container run <image>
終了
$ exit
対話操作を行えるようにするオプション
$ docker container run \
--interactive \ ホストマシンのターミナルからの入力を受け付ける
--tty \ コンテナの擬似的な出力先を割り当てる
<image>
コンテナをバックグラウンドで起動するオプション
$ docker container run \
--detach \ バックグラウンドでの実行
<image>
コンテナを停止した際に自動で削除するオプション
$ docker container run \
--rm \ 停止済コンテナを自動で削除
<image>
コンテナに名前を設定するオプション
$ docker container run \
--name test-server \ 名前設定
<image>
コンテナ一覧を確認する
基本形
$ docker container ls
起動していないコンテナも含め全てを表示するオプション
$ docker container ls --all
コンテナを停止する
$ docker container stop <container>
コンテナを削除する
停止済みのコンテナを削除する
$ docker container rm <container>
停止せずに削除するオプション
$ docker container rm --force <container>
起動していないコンテナも含め全てを表示するオプション
イメージに関する理解
イメージとはコンテナの実行に必要なパッケージで、ファイルやメタ情報を集めたもの。レイヤーというものからなる情報のことで、ファイルが存在するわけではない。情報としては、何をインストールしているか、どういった設定ファイルを配置しているか、といったことが含まれる。Docker Hubというサービスで公開されている。具体的なレイヤーもDocker Hubから確認が可能。
イメージを操作する基本的なコマンド
<image>はIMAGE IDやREPOSITORY:TAG等で指定できる
ローカルに取得済みのイメージ一覧を確認する
$ docker image ls <image>
(一覧に無い場合)イメージの取得
$ docker image pull <image>
Dockerfileに関する理解
Dockerfileとは既存のイメージにさらにレイヤーを積み重ねるためのテキストファイル。公開されているイメージは最低限しかレイヤーが積み上がっていないので、更に自分好みのものにするために作成する。
Dockerfileに関連するコマンド
Dockerfileがある場合、イメージをそこからビルドする必要がある。
イメージをビルドする
基本形
$ docker image build <path>
タグをつけるオプション(呼び出し時に便利)
$ docker image build \
--tag my-ubuntu:date \
.
イメージのレイヤーを確認する
$ docker image history <image>
Dockerfileの基本命令
FROM…ベースイメージの指定
RUN…コマンド実行
COPY…ファイルをイメージに追加
CMD…デフォルト命令を指定