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 |
バックグラウンドで実行(docker container createでは指定不可) |
--dns |
カスタムDNSサーバーを設定する |
--env 環境変数名=値 |
環境変数を指定する. 複数指定時は--env をそれぞれに記述する |
--gpus |
コンテナーに追加する GPU デバイスを指定する |
-i |
アタッチされていなくても STDIN を開放し続ける |
--mount |
ファイルシステムをマウントする |
--name [コンテナ名] |
コンテナ名を指定 |
-p [ホストのポート番号]:[コンテナのポート番号] |
ホストとコンテナのポートフォワード設定 |
--restart |
コンテナー終了時に適用する再起動ポリシー. always を指定すると、Docker起動時にコンテナを自動起動する |
--rm |
終了時に中間コンテナを自動的に削除する |
--runtime |
利用するランタイム |
-t |
擬似 TTY を割り当てる. 通常は-i とセットで-it と指定する |
-v [ホストのディレクトリ]:[コンテナのディレクトリ] |
ホストとコンテナでマウント(共有)するボリューム(ディレクトリ)を設定する. 複数指定時は-v をそれぞれに記述する |
コマンド例
docker container run -d --name python-sample -p 8080:8080 python
docker container run -i -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]
コンテナ名を変更する
コンテナ名の変更はdocker container rename
コマンドを使用します。コンテナを停止してから、名前を変更することが推奨されています。
docker container rename [旧コンテナ名] [新コンテナ名]
ホストとコンテナ間でファイルをコピーする
コンテナは停止中でもOKです。
コンテナからホストへファイルをコピーする
docker cp [コンテナ名]:[ファイルパス] [ホストのディレクトリ]
# 例
docker cp sample-container:/images/banana.jpg ./
ホストからコンテナへファイルをコピーする
docker cp [ホストのファイルパス] [コンテナ名]:[ファイルパス]
# 例
docker cp banana.jpg sample-container:/images/banana.jpg