Top / Docker / 基本コマンド

イメージの操作の超基本

イメージを探す

root@photon-machine [ ~ ]# docker search centos | more
NAME                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                                 The official build of CentOS.                   3050      [OK]

イメージをおとしてくる

root@photon-machine [ ~ ]# docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
root@photon-machine [ ~ ]#

いまはイメージがなにもない状態です。

root@photon-machine [ ~ ]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
Digest: sha256:c577af3197aacedf79c5a204cd7f493c8e07ffbce7f88f7600bf19c688c38799
Status: Downloaded newer image for centos:latest
root@photon-machine [ ~ ]# docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
centos                 latest              67591570dd29        6 weeks ago         191.8 MB
root@photon-machine [ ~ ]#

落ちてきているのが確認出来ました。

イメージを消す

root@photon-machine [ ~ ]# docker rmi centos:latest
Untagged: centos:latest
Untagged: centos@sha256:c577af3197aacedf79c5a204cd7f493c8e07ffbce7f88f7600bf19c688c38799
root@photon-machine [ ~ ]# docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
root@photon-machine [ ~ ]#

消えました。

コンテナの操作の超基本

CentOSを起動して、Hello Worldする

root@photon-machine [ ~ ]# docker pull centos
root@photon-machine [ ~ ]# docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
centos                 latest              67591570dd29        6 weeks ago         191.8 MB
root@photon-machine [ ~ ]# docker run centos echo "hello world"
hello world
root@photon-machine [ ~ ]#

イメージからコンテナが作成され、実行されました。そして終了しました。

コンテナの情報表示

root@photon-machine [ ~ ]# docker ps -a -n=1    ←-a: 終了したモノも表示、 -n=xx 直近 xxコを表示
CONTAINER ID        IMAGE                         COMMAND                  CREATED              STATUS                          PORTS               NAMES
60d7c5d76f05        centos                        "echo 'hello world'"     About a minute ago   Exited (0) About a minute ago                       berserk_wright
root@photon-machine [ ~ ]#

コンテナが作成されたのが分かります。 docker rm 60d7c5d76f05 で削除可能です。

バックグラウンド実行

root@photon-machine [ ~ ]# docker run -d centos free -s 3
94f07d1b91371236b66fdd4ac53143592cf4bc0f64a0dc6c666cfa4cbe57ba1a
root@photon-machine [ ~ ]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
94f07d1b9137        centos              "free -s 3"         10 seconds ago      Up 9 seconds                            jolly_fermi
root@photon-machine [ ~ ]#

 -d でバックグラウンド実行されます。

バックグラウンド実行したモノをフォアグラウンドにもってくる。

フォアグラウンドにもってくる*1には。。

root@photon-machine [ ~ ]# docker attach --sig-proxy=false 94f

              total        used        free      shared  buff/cache   available
Mem:        2053100       75364      342388      275160     1635348     1518696
Swap:             0           0           0

sig-proxy オプションを指定することで Ctrl-C で抜けることができるようになります。

バックグラウンド実行したモノを止める

root@photon-machine [ ~ ]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
94f07d1b9137        centos              "free -s 3"         4 minutes ago       Up 4 minutes                            jolly_fermi
root@photon-machine [ ~ ]# docker stop 94f
94f
root@photon-machine [ ~ ]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
root@photon-machine [ ~ ]#

停止しました。さらに docker start 94f で再度スタートさせることができます。

ついでにいうと docker run は、 docker create(イメージからコンテナ作成) と docker start(開始)をあわせて実施するコマンドのようです。

まとめるとこんな感じみたい。

docker create xx → 作成
docker start [コンテナID] → 開始 (create/start 一緒にやる場合は run )
docker stop [コンテナID]  → 停止
docker ps で確認

docker run -d xx でバックグラウンド実行、指定しないとフォアグラウンド
docker attach --sig-proxy=false [コンテナID]で接続 Ctr-C で切断

バックグラウンドのログを見る

root@photon-machine [ ~ ]# docker logs 94f
              total        used        free      shared  buff/cache   available
Mem:        2053100       69716      348616      275160     1634768     1524396
Swap:             0           0           0

              total        used        free      shared  buff/cache   available
Mem:        2053100       69740      348372      275160     1634988     1524420
Swap:             0           0           0
...
root@photon-machine [ ~ ]#

バックグラウンド実行されているモノのログを見ることができます。

コンテナからイメージを作成する基本

コンテナから新たなイメージを保存してみます。そのために、コンテナの中に入って自由にコマンドが打てないといけないので、

root@photon-machine [ ~ ]# docker run -i -t  centos  /bin/bash
[root@003321389bfe /]#

って -d でも無指定でもない指定で /bin/bashを実行します。 -i はインタラクティブ、-t はターミナルでつなぐって意味ぽいです。

コンソールが返ってきました。中に入ったところですね。

コンテナを修正する

中に入ったので、なんかファイルを作成します。コンテナの中身を変更する作業をやって、んでそのコンテナからイメージを作成します。

[root@003321389bfe /]# touch hogehoge.txt
[root@003321389bfe /]# ls -lrt
total 64
...
-rw-r--r--  1 root root     0 Jan 29 12:18 hogehoge.txt
[root@003321389bfe /]# exit
exit

root@photon-machine [ ~ ]# docker ps -a -n=1
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
003321389bfe        centos              "/bin/bash"         2 minutes ago       Exited (0) 13 seconds ago                       hungry_brown
root@photon-machine [ ~ ]#

イメージからコンテナを作ったオリジナル状態から、ファイルを一個作ったコンテナができあがりました。

修正したコンテナからイメージを作成する。

下記のコマンドでこのコンテナから新たなイメージを作成します。

root@photon-machine [ ~ ]# docker commit 003 masatomix/hoge    ←元のコンテナIDと新たなイメージの名前を指定。
sha256:c2109b07b71b759dd4184a6f3d147581fa68e834d99401c1a30aa680162726ce
root@photon-machine [ ~ ]# docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
masatomix/hoge         latest              c2109b07b71b        4 seconds ago       191.8 MB

作成されました!

中身の確認です。hoge.txtが存在するはずです。

root@photon-machine [ ~ ]# docker run -i -t masatomix/hoge /bin/bash
[root@1f35948112f6 /]# ls -lrt hogehoge.txt
-rw-r--r-- 1 root root 0 Jan 29 12:18 hogehoge.txt
[root@1f35948112f6 /]#

これで「元のイメージからコンテナを作成して、修正してから、イメージを保存する」事ができました。 ようするに誰かのイメージをおとしてきて、それに修正を加えて、新たなイメージとして保存する、という事できるってことですね。

コンテナを止めないで抜ける

ちなみに

root@photon-machine [ ~ ]# docker run -i -t  centos  /bin/bash

これで作成したコンテナに対して exit ってやるとコンテナを終了した結果抜けますが、Ctrl + p + q で、コンテナを停止せずに抜けます。

関連リンク


この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / Docker / 基本コマンド

現在のアクセス:2197


*1 というかバックグラウンド実行したモノに、につなげる

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS