Docker入門:コンテナ作成と実行の手順
前回の記事では、サンプルのコンテナを実行するだけでした。今回は自分でコンテナを作って実行する方法を解説します。
利用するイメージの取得
Docker Hubからイメージを取得します。
docker image pull [イメージ名]
# または (旧コマンド)
docker pull [イメージ名]
コマンド例
docker image pull python
イメージ一覧を表示し、指定したイメージが正しくpullできているか確認します。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
python latest 33ce09363487 35 hours ago 925MB
コンテナを作成し実行する
次のコマンドでコンテナの作成と実行が行えます。イメージがローカルにない場合は、Docker Hubからダウンロードします。
docker container run [オプション] [イメージ名]
私がよく使うオプションは以下。その他のオプションは公式を参照ください。
指定方法 | 内容 |
---|---|
-d |
バックグラウンドで実行 |
--env 環境変数名=値 |
環境変数を指定する. 複数指定時は--env をそれぞれに記述する |
-i |
アタッチされていなくても STDIN を開放し続ける |
--name [コンテナ名] |
コンテナ名を指定 |
-p [ホストのポート番号]:[コンテナのポート番号] |
ホストとコンテナのポートフォワード設定 |
--rm |
終了時に中間コンテナを自動的に削除する |
-t |
擬似 TTY を割り当てる. 通常は-i とセットで-it と指定する |
-v [ホストのディレクトリ]:[コンテナのディレクトリ] |
ホストとコンテナでマウント(共有)するボリューム(ディレクトリ)を設定する. 複数指定時は-v をそれぞれに記述する |
コマンド例
docker container run -d --name python-sample -p 8080:8080 python
コンテナを作成する
次のコマンドでコンテナを作成します。
docker container create [オプション] [イメージ名]
# または (旧コマンド)
docker create [オプション] [イメージ名]
コマンド例
docker container create -i --name python-sample python
コンテナ一覧を表示し、作成したコンテナが正しく作成できているか確認します。
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a7cca4d84404 python "python3" 49 seconds ago Created python-sample
コンテナを起動する
Createしたコンテナや停止中のコンテナは、次のコマンドで実行します。
docker container start [オプション] [コンテナ名]|[コンテナID]
# または (旧コマンド)
docker start [オプション] [コンテナ名]|[コンテナID]
オプションは、
-i
や-a
など。create時に指定した-v
オプションなどは有効になっています。
コンテナ一覧を表示し、起動したコンテナのSTATUS
がUP
であればコンテナが起動しています。
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a7cca4d84404 python "python3" About a minute ago Up 3 seconds python-sample
docker container create
時に-i
オプションが無かった場合は起動してすぐに停止するため、STATUS
がExited
になります。コンテナを停止する
docker container stop [コンテナ名]|[コンテナID]
ホストとコンテナ間でファイルをコピーする
コンテナは停止中でもOKです。
コンテナからホストへファイルをコピーする
docker cp [コンテナ名]:[ファイルパス] [ホストのディレクトリ]
# 例
docker cp sample-container:/images/banana.jpg ./
ホストからコンテナへファイルをコピーする
docker cp [ホストのファイルパス] [コンテナ名]:[ファイルパス]
# 例
docker cp banana.jpg sample-container:/images/banana.jpg