LoginSignup
275
238

More than 3 years have passed since last update.

Dockerの作業済みコンテナからイメージを作って移植を楽にする

Last updated at Posted at 2016-01-16

tuboneです。
前回はDockerのnode.jsイメージを利用してnode.jsが動くコンテナを作り、そこからhubotを導入しました。

Dockerでは通常、イメージからコンテナを生成、起動するのが一般的ですが
前回のように、コンテナ内で作業をしてしまった場合、せっかくでしたらイメージとして保存し、別環境に簡単に移植できた方が便利です。
イメージを作る方法としてはDockerfileが定番ですが、
Dockerにはコンテナからイメージを作るCommitというコマンドがあるので今回はこちらをつかったイメージ作成をしてみたいと思います。

dockerコンテナに接続する

補足:コンテナからの抜け方の違い

(冗長このうえないので知っている人は無視してください)

dockerのコンテナでbashなどを起動している場合はexitで抜けるとコンテナのbashがExit(停止)して元の環境に移行しますが、バックで動かしたまま抜ける方法もあります。
Cntl + p , Cntl + q で プロセスをExitせず抜けることができます。

Exit(停止)していないコンテナに再接続するには attach を利用します。

root@localhost:/# docker attach hubot1

停止しているコンテナを起動するにはstartを利用します。

root@localhost:/# docker start hubot1
hubot1

Dockerコンテナを終了させる

dockerのコンテナに接続している場合はコンテナのbash上でexitすれば大丈夫です。

root@811aa8ed56dd:/# exit
exit

psコマンドで停止したことが確認できました。

root@localhost:/# docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                     PORTS               NAMES
811aa8ed56dd        node                "/bin/bash"            40 hours ago        Exited (0) 7 seconds ago                       hubot1

また、コンテナが動いている状態でコンテナに接続されていない場合はstopコマンドでいけます。

root@localhost:/# docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                    PORTS               NAMES
811aa8ed56dd        node                "/bin/bash"            40 hours ago        Up 5 seconds                                  hubot1

このようにpsコマンドで動いている状態のコンテナを確認し…
stopコマンドで… コンテナを停止させます。

root@localhost:#/ docker stop hubot1
hubot1

exitしていることが確認できました。

root@localhost:/# docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                     PORTS               NAMES
811aa8ed56dd        node                "/bin/bash"            40 hours ago        Exited (0) 4 seconds ago                       hubot1

停止したDockerコンテナからイメージを作る

停止したコンテナからイメージを作るときはcommitコマンドを使います。

root@localhost:/# docker commit hubot1 hubot:tubone
292281c11f0c2adf2a052b2b30625df0f48d81d3ab523635eb97b360f03096b4

imagesコマンドで確認してみます。

root@localhost:/# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
hubot               tubone              292281c11f0c        49 seconds ago      691 MB
node                latest              8c599b26d97b        2 days ago          643 MB

hubot:tuboneができていることが確認できました。

作ったDockerイメージからコンテナを作る

runでコンテナを生成起動します。
ここらへんは前回と同じです。

名前は便宜上hubot2にしました。

root@localhost:/# docker run -it --name "hubot2" hubot:tubone /bin/bash
root@f1bff93c0d2c:/#

お疲れ様でした。

275
238
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
275
238