0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dockerの基本操作について

Last updated at Posted at 2025-02-19

Docker基本コマンドの備忘録

Dockerについて学習したのでDockerコマンドに関してまとめました。

コンテナ操作の基本はDockerコマンド

コンテナを操作するコマンド文は、すべて「docker」コマンドから始まる。
dockerと書いてから「何を」「どうする」「対象」等を記述し、[Enter]キーを押すと実行される。

dockerコマンドの基本

docker ~

dockerコマンドの基本形

docker コマンド (オプション) 対象 (引数)

コンテナ操作関連コマンド(上位コマンドは「container」)

docker container (副コマンド) (オプション)
副コマンド 内容 省略 主なオプション
start コンテナを開始する -i
stop コンテナを停止する 特になし
create Dockerイメージからコンテナを作成する --name -e -p -v
run Dockerイメージをダウンロードし、コンテナを作成して起動する --name -e -p -v -d -i -t
rm 停止したコンテナを削除する -f -v
exec 実行中のコンテナ内でプログラムを実行する -i -t
ls コンテナ一覧を表示する docker ps -a
cp DockerコンテナとDOckerホスト間でファイルをコピーする 特になし
commit Dockerコンテナをイメージに変換する 特になし

イメージ操作関連コマンド(上位コマンドは「image」)

docker image (副コマンド) (オプション)
副コマンド 内容 省略 主なオプション
pull Docker Hubなどのリポジトリからイメージをダウンロードする 特になし
rm Dockerイメージを削除する docker rmi 特になし
ls 自分がダウンロードしたイメージ一覧を表示する 不可 特になし
build Dockerイメージを作成する -t

ボリューム操作関連コマンド(上位コマンドは「volume」)

docker volume (副コマンド) (オプション)
副コマンド 内容 省略 主なオプション
create ボリュームを作る 不可 --name
inspect ボリュームの詳細情報を表示する 不可 特になし
ls ボリュームの一覧を表示する 不可 -a
prune 現在マウントされていないボリュームをすべて削除する 不可 特になし
rm 指定したボリュームを削除する 不可 特になし

ネットワーク操作関連コマンド(上位コマンドは「network」)

docker network (副コマンド) (オプション)
副コマンド 内容 省略 主なオプション
connect コンテナをネットワークに接続する 不可 特になし
disconnect コンテナをネットワークから切断する 不可 特になし
create ネットワークを作る 不可 特になし
inspect ネットワークの詳細情報を表示する 不可 特になし
ls ネットワークの一覧を表示する 不可 特になし
prune 現在コンテナがつながっていないネットワークをすべて削除する 不可 特になし
rm 指定したネットワークを削除する 不可 特になし

その他上位コマンド

上位コマンド 内容
checkpoint 現在の状態を一時的に保存し、後でその時点に戻ることができる。実験的な機能
node Docker Swarmのノードを管理する機能
plugin プラグインを管理する機能
secret Docker Swarmのシークレット情報を管理する機能
service Docker Swarmのサービスを管理する機能
stack Docker SwarmやKubernetesでサービスをひとまとめにしたスタックを管理する
swarm Docker Swarmを管理する機能
system Docker Engineの情報を取得する

単独コマンド

単独コマンド 内容 主なオプション
login Dockerレジストリにログインする -u -p
logout Dockerレジストリからログアウトする 特になし
search Dockerレジストリで検索する 特になし
version Docker Engineおよびコマンドのバージョンを表示する 特になし

コンテナの作成・削除と起動・停止

コンテナの起動には「docker run」コマンドを使う。
このコマンドは、Dockerのコンテナを作成し、起動するコマンド。
コンテナの作成には、イメージが必要で、イメージがない場合はイメージのダウンロードも行う。

docker run (オプション) イメージ (引数)

主なオプション

オプションの書式 内容
--name コンテナ名 コンテナ名を指定する
-p ホストのポート番号:コンテナのポート番号 ポート番号を指定する
-v ホストのディスク:コンテナのディレクトリ ボリュームをマウントする
--net=ネットワーク名 コンテナをネットワークに接続する
-e 環境変数名=値 環境変数を指定する
-d バックグラウンドで実行する
-i コンテナに操作端末(キーボード)をつなぐ
-t 特殊キーを使用可能にする
-help 使い方を表示する

コンテナを停止するコマンド

docker stop コンテナ名

コンテナを削除するコマンド

docker rm コンテナ名

動いているコンテナの一覧を表示する

docker ps

存在するコンテナの一覧を表示する

docker ps -a

docker ps実行結果の見方

項目 内容
CONTAINER ID コンテナID。ランダムな数字が振られる。本来のIDは64文字だが、先頭12文字のみ表記
IMAGE 元となったイメージ名
COMMAND コンテナにデフォルトで起動するように構成されているプログラム名。あまり意識することはない
CREATED 作られてから経過した時間
STATUS 現在のステータス。動いている場合は「Up」動いていない場合は「Exited」と表記される
PORTS 割り当てられているポート番号が「ホストのポート番号->コンテナのポート番号」の形式で表示される
NAMES コンテナ名

イメージの削除

コンテナは削除していても、イメージはたまり続けている。
イメージは増えてくるとストレージを圧迫してしまうので、不要になったものはどんどん削除すること

docker image rm イメージ名
# 複数指定する場合
docker image rm イメージ名 イメージ名 イメージ名

イメージ一覧を表示する

docker image ls

イメージ一覧の見方

項目 内容
REPOSITORY イメージ名
TAG バージョン情報。イメージをダウンロードするときに指定していないと「latest(最新版)」をダウンロードしたことになる
IMAGE ID イメージID。本来のIDは64文字だが、先頭12文字のみの表記。12文字のみでもIDとして使用できる
CREATED 作られてから経過した時間
SIZE イメージのファイルサイズ

ボリュームのマウント

Dockerに記憶領域をマウントする方法は「ボリュームマウント」と「バインドマウント」の2種類がある。

ボリュームマウント

ボリュームマウントは、Docker Engineが管理している領域内にボリュームを作成し、ディスクとしてコンテナにマウントする。
名前だけで管理できるため手軽に扱える半面、ボリュームに対して直接操作しづらい。
「仮で使いたい場合」や「滅多に触らないが、消してはいけないファイル」を置くのに使うことが多い。

バインドマウント

バインドマウントは、Dockerをインストールしたパソコンのディレクトリなど、Docker Engineの管理していない場所の既に存在するディレクトリをコンテナにマウントする。
ディレクトリだけでなく、ファイル単位でマウントすることもできる。ディレクトリに対して直接ファイルを置いたり開いたりできるため、頻繁に触りたいファイルは、ここに置く。

マウントの違い
項目 ボリュームマウント バインドマウント
記憶領域 ボリューム ディレクトリやファイル
マウントの場所 Docker Engine管理下 どこでも可能
マウントの動作 ボリュームを作成してマウント 既存のファイルやフォルダをマウント
内容の編集 Dockerコンテナを経由して行う 普通のファイルとして扱う
バックアップ 複雑な手順 普通のファイルとして扱う

ボリューム作成

docker volume create ボリューム名

ボリューム削除

docker volume rm ボリューム名

記憶領域をマウントするコマンド

# バインドマウントの記述例
docker run (省略) -v 実際の記憶領域パス:コンテナの記憶領域パス (省略)

# ボリュームマウントの記述例
docker run (省略) -v ボリューム名:コンテナの記憶領域パス (省略)

コンテナのイメージ化

既にあるコンテナを利用すれば、誰でも簡単にイメージを作ることができる。
オリジナルのイメージを作成することで、同じ構成のコンテナを量産でき、他のパソコンやサーバに移動させることもできる。
イメージの作成方法は「commit」でイメージの書き出しをする方法と、「Dockerfile」でイメージを作る方法がある。

  1. commitでイメージを書き出す
    コンテナを用意して、それをイメージに書き出す。コンテナがあればコマンド1つで作成できるので手軽。
    ただしコンテナを作り込む必要がある。すでにあるコンテナを複製したい、移動したいなどの用途に便利。

    docker commit コンテナ名 作成するイメージ名
    
  2. Dockerfileでイメージを作成する
    「Dockerfile」という名前のファイルを用意して、それを「build」することでイメージにする。
    Dockerfileには、元となるイメージや、実行したいコマンドなどを記載する。編集はテキストエディタで行う。

    docker build -t 作成するイメージ名 材料フォルダのパス
    

主なDockerfileコマンド

コマンド 内容
FROM 元にするイメージを指定する
ADD イメージにファイルやフォルダを追加する
COPY イメージにファイルやフォルダを追加する
RUN イメージをビルドするときにコマンドを実行する
CMD コンテナを起動するときに実行する既定のコマンドを指定する
ENTRYPOINT イメージを実行するときのコマンドを強要する
ONBUILD ビルド完了したときに任意の命令を実行する
EXPOSE 通信を想定するポートをイメージの利用者に伝える
VOLUME 永続データが保存される場所をイメージの利用者に伝える
ENV 環境変数を定義する
WORKDIR RUN、CMD、ENTRYPOINT、ADD、COPYの際の作業ディレクトリを指定する
SHELL ビルド時のシェルを指定する
LABEL 名前やバージョン番号、制作者情報などを設定する
USER RUN、CMD、ENTRYPOINTで指定するコマンドを実行するユーザやグループを設定する
ARG docker buildする際に指定できる引数を宣言する
STOPSIGNAL docker stopする際に、コンテナで実行しているプログラムに対して送信するシグナルを変更する
HEALTHCHECK コンテナの死活確認をするヘルスチェックの方法をカスタマイズする 

コンテナの改造

コンテナに対してLinuxのコマンドを命令して、ソフトウェアのインストールや設定ファイルの書き換えをする。
コンテナは、何も指定せずに起動すると、bashが動いていない状態になる。なのでbashを起動して、命令を受け取って貰う状態にする。

# 「exec」コマンドに引数を付けた例
docker exec (オプション) コンテナ名 /bin/bash
# 「run」コマンドに引数を付けた例
docker run (オプション) イメージ名 /bin/bash

# Apacheコンテナにbash引数を付けた例
# exec例
docker exec -it apachesample /bin/bash
# run例
docker run --name apachesample -it -p 8080:80 httpd /bin/bash

Docker Composeファイルについて

構築に関わるコマンド文の内容を1つのテキストファイル(定義ファイル)に書き込んで、一気に実行したり、停止・破棄したりできるのがDocker compose。
Docker Composeでは、構築に関する設定を記述した定義ファイルをYAML形式で用意し、ファイルの中身を「up」したり「down」したりする。
「up」コマンドは、イメージをダウンロードしたり、コンテナを作成・起動したりする。定義ファイルにはネットワークやボリュームについても書けるのでそうした周辺の環境も一緒に作られる。
「down」コマンドは、コンテナとネットワークを停止・削除する。ボリュームとイメージはそのまま。削除せずに停止のみを行いたい場合は「stop」コマンドを使う。

定義ファイルの項目

大項目
項目 内容
services コンテナに関する定義をする
networks ネットワークに関する定義をする
volumes ボリュームに関する定義をする
よく使われる定義内容
項目 docker runでの対応 内容
image イメージ引数 利用するめいーじを指定する
networks --net 接続するネットワークを指定する
volumes -v、--mount 記憶領域のマウントを設定する
ports -p ポートのマッピングを設定する
environment -e 環境変数を設定する
depends_on なし 別のサービスに依存することを示す
restart なし コンテナが停止したときに再試行ポリシーを設定する
restartの設定値
設定値 内容
no 何もしない
always 必ず再起動する
on-failure プロセスが0以外のステータスで終了したときは再起動する
unless-stoppend 停止していたときは再起動しない。それ以外は再起動する
その他の定義項目
項目 docker runでの対応 内容
command コマンド引数 起動時の既定のコマンドを上書きする
container_name --name 起動するコンテナ名を明示的に指定する
dns --dns カスタムなDNSサーバを明示的に設定する
env_file なし 環境設定情報を書いたファイルを読み込む
entrypoint --entrypoint 起動時のENTRYPOINTを上書きする
external_links --link 外部リンクを設定する
extra_hosts --add-host 外部ホストのIPアドレスを明示的に指定する
logging --log-driver ログ出力先を設定する
network_mode --network ネットワークモードを設定する
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?