コピペコードで快適生活

明日使えるソースを自分のために

Dockerのイメージとコンテナ

イメージ作ったり、イメージからコンテナ作ったり、コンテナからイメージ作ったりのコマンドメモ。

イメージ

# 手元にあるイメージを確認する
# イメージは、リポジトリ&タグの組み合わせで一意になる
docker images

# Dockerfileを元にイメージを作成する
docker build .

# イメージ名指定&キャッシュを使わずにイメージ作成
docker build . --no-cache -t [イメージ名]

# 手元にイメージをDLする   
docker pull [リポジトリURL]

# イメージを削除する
# イメージに紐づくコンテナがある場合は削除できない
# 先に紐づくコンテナをstopしてrmする必要がある
docker rmi [ImageID]

# イメージ情報の取得
docker inspect [リポジトリ名]:[タグ]

# CMDの確認
docker inspect [リポジトリ名]:[タグ] --format='{{.Config.Cmd}}'

コンテナ

# コンテナの一覧を確認
docker ps -a

# イメージからコンテナを作成する
# /sbin/init をつけないともともと設定してあるCMDが実行される
docker run --name [コンテナ名] -d [イメージID] /sbin/init

# イメージからコンテナを作って起動状態を維持する
# i: 標準入力(STDIN)を開いたままにする
# t: 擬似ttyに接続する。ディスプレイ(STDOUT)をつなぐイメージ
# d: デタッチモード バックグラウンドでコンテナ起動
docker run -itd --name [コンテナ名] -d [イメージID] /bin/sh

# docker-composeではこんな感じ
# イメージからコンテナ作ってシェル実行してコンテナ消す
docker-compose run --rm php /bin/bash -c ""

# コンテナからイメージを作る
# まず止めて
docker stop [コンテナ名]
# イメージ作る
docker commit [コンテナ名] [リポジトリ名]:[タグ]

# コンテナ削除
# まず止めて
docker stop [コンテナ名]
# 消す
docker rm [コンテナ名]