Docker 基本コマンド
docker run <コンテナ名>[:version | :latest]
# run は以下のコマンド1-3を順に実行している
# 1. イメージ取得
docker pull <コンテナ名>
# 2. コンテナ作成
docker create <コンテナ名>
# 3. コンテナ起動
docker start <コンテナ名>
# コンテナ停止
docker stop <コンテナ名>
# コンテナのディレクトリをホストにコピー
docker cp <コンテナID>:<コンテナのディレクトリ> <ホストのディレクトリ>
# ホストのディレクトリをコンテナのディレクトリにコピー
docker cp <ホストのディレクトリ> <コンテナID>:<コンテナのディレクトリ>
# コンテナへのシェル接続(PID 1プロセスへの接続)
# exitで抜けるとコンテナが停止する。Ctr + p + q でコンテナは起動したまま抜けられる
docker attache <コンテナID>
# コンテナへのシェル接続(新しいプロセスへの接続)
# exitで抜けてもコンテナは起動したまま
docker exec <コンテナID>
docker run オプション
-p <ホストのポート>:<コンテナのポート> :ポートフォワーディング
docker run -p 8080:80 nginx
-d:detachedモード、バックグラウンド実行みたいなこと。ターミナル終了してもプロセスは生きたまま
--name:コンテナ名指定
-v <ホストのディレクトリ>:<コンテナのマウントポイント>:<オプション>
docker run --name sample -v /usr/local/html:/usr/share/nginx/html:ro -d -p 8080:80 nginx
-t:pseudo-TTYを割り当てる
-i:標準入力を保持する
# ダウンロード済みDockerイメージ一覧
docker images
# Dockerイメージの削除コマンド
docker rmi <コンテナ名>
-f : 強制削除
# 実行中のコンテナのリスト表示
docker ps
# 停止中のコンテナを含めて表示
docker ps -a
# コンテナ削除コマンド
docker rm <コンテナ名>
# イメージ詳細
docker inspect <コンテナ名>
# イマージのビルド
# -t <イメージ名>:イメージ名、タグ名の指定
# <ビルドコンテキスト>:ここで指定したディレクトリがDockerデーモンに転送される。
# ドットを指定すると、コマンド実行したディレクトリがビルドコンテキストとなる。
# ビルドコンテキスト上にあるファイルのみがDockerイメージに取り込み可能。
docker build -t <イメージ名> <ビルドコンテキスト>
Dockerfile
Dockerイメージは、Dockerfile を元に作成される
- Dockerfile:イメージ作成の定義ファイル
- Dockerイメージ:コンテナ作成のためのテンプレート
- コンテナ:アプリケーション実行環境
Docker Hub: https://hub.docker.com
命令
FROM
新しいDockerイメージのベースとするイメージを指定する。(ベースイメージ)
RUN
イメージ作成時に実行するコマンドを指定する。
CMD
コンテナを実行した際に、デフォルトで実行されるコマンドを指定する。
docker run コマンドのイメージ名の後にコマンドを指定した場合は、CMD命令を上書きして実行される。
ENTRYPOINT
CMDと異なり、docker run コマンドのイメージ名の後にコマンドを指定した場合は、ENTRYPOINTのコマンド引数に docker run で指定したコマンドが渡されてコマンドが実行される。
ENV
イメージに設定する環境変数を定義する。
ARG
イメージのビルド時に一時的に使用する環境変数。EVNとは異なり、イメージ上には環境変数は保持されない。
USER
コンテナ内のコマンドを実行するユーザを指定する。省略時は、rootユーザで実行する。
WORKDIR
作業ディレクトリを移動するために使用する。
ADD
ローカルファイルをイメージにコピーする指定。
tarファイルやURLも指定可能。
COPY
ローカルファイルをイメージにコピーする指定。
tarファイルやURLは指定できない。
References
- 『ITエンジニアになる!チャレンジDocker仮想環境構築入門』秀和システム