このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Docker超入門:Dockerコンテナからイメージを作る流れ①:取得・実行・操作

Dockerコンテナからイメージを作る流れ①:取得・実行・操作
Dockerでは、既存のイメージからコンテナを作り、そこに手を加えることで新しいイメージを作成することができます。ここではその前半部分、つまり ①イメージの取得 → ②コンテナの作成と実行 → ③コンテナの操作 を順に体験していきましょう。

全体の流れ
コンテナからイメージを作る流れは以下のとおりです。
- イメージの取得(pull)
- コンテナの作成と実行(run)
- コンテナの操作(ファイルの追加や変更)
- イメージの作成(commit)
- イメージの公開(push)
今回は①~③の部分を扱います。

① イメージの取得
まずはベースとなるUbuntuの最新イメージを取得します。
コマンドの書式
docker image pull <イメージ名>:<タグ>実行例
docker image pull ubuntu:latestタグを省略した場合は、自動的に :latest が指定されます。
出力例
PS C:\Users\joeac> docker image pull ubuntu:latest
latest: Pulling from library/ubuntu
Digest: sha256:353675e2a41babd526e2b837d7ec780c2a05bca0164f7ea5dbbd433d21d166fc
Status: Image is up to date for ubuntu:latest
docker.io/library/ubuntu:latest実行結果の確認
docker image ls出力例
PS C:\Users\joeac> docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu-echo latest 83e81b62b3c4 13 days ago 117MB
infralinux1/ubuntu-smp 1.0 83e81b62b3c4 13 days ago 117MB
ubuntu latest 353675e2a41b 13 days ago 117MBこれでUbuntuイメージが取得できました。
② コンテナの作成・実行
次に、取得したイメージからコンテナを作成して実行します。
コマンドの書式
docker container run --name <コンテナ名> -it -d <イメージ名>:<タグ>実行例
docker container run --name ubuntu-smp -it -d ubuntu:latest出力例
PS C:\Users\joeac> docker container run --name ubuntu-smp -it -d ubuntu:latest
070315c81ee92397377ece4f03ad1ea7f1656d8bbc5dcfcded1354be6d5cf739--name ubuntu-smp: コンテナにわかりやすい名前を付ける-it: 対話的に操作できるようにする(-i と -t の組み合わせ)-d: デタッチモードでバックグラウンド実行する
オプション解説
| オプション | 説明 |
|---|---|
| -i | 標準入力を開いたままにする。 |
| -t | 疑似端末(tty)を割り当てる。 |
| -it | 対話的にコンテナを操作できる。 |
| -d | デタッチモードでバックグラウンド実行 |
コンテナ確認
docker container ls -a出力例
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
070315c81ee9 ubuntu:latest "/bin/bash" 2 minutes ago Up 2 minutes ubuntu-smp
bc9be182e8a6 ubuntu-echo "echo 'Hello Ubuntu'" 11 hours ago Exited (0) 11 hours ago cranky_dijkstraSTATUSが「Up」になっていれば、コンテナが動作中です。
③ コンテナの操作
次に、作成したコンテナに手を加えてみます。
ホストからコンテナにファイルをコピー
ホストのファイルをコンテナにコピーするには docker container cp を使います。
【構文】
docker container cp <ホストのファイル> <コンテナ名>:<パス>実行例
echo "Ubuntu Sample" > sample.txt
docker container cp sample.txt ubuntu-smp:/root出力例
PS C:\Users\joeac> echo "Ubuntu Sample" > sample.txt
PS C:\Users\joeac> docker container cp sample.txt ubuntu-smp:/root
Successfully copied 2.05kB to ubuntu-smp:/rootコピーできたかを確認します。
docker exec ubuntu-smp ls /root出力例
PS C:\Users\joeac> docker exec ubuntu-smp ls /root
sample.txtコンテナ内の変更を確認
コンテナで行われたファイルの変更は docker container diff で確認できます。
【構文】
docker container diff <コンテナ名>実行例
docker container diff ubuntu-smp出力例
PS C:\Users\joeac> docker container diff ubuntu-smp
C /root
A /root/sample.txt- C : 変更されたディレクトリやファイル
- A : 新しく追加されたファイル
- D : 削除されたファイル
このように、sample.txt が /root に追加されたことが確認できます。
まとめ
ここまでで、Ubuntuイメージを取得し、コンテナを作成・実行し、その中でファイルを操作する流れを学びました。次のステップでは、このコンテナをベースにして新しいDockerイメージを作成・公開する方法に進んでいきます。
