LoginSignup
34
43

More than 5 years have passed since last update.

Dockerで、既存のイメージを少しだけ変えて再コミットする

Last updated at Posted at 2014-08-18

主にDokkuの運用で便利。

とりあえず、当該イメージをアップデートする。

docker pull progrium/buildstep

docker run -ti でインストールコマンドを実行する。そうすると実行結果のコンテナがタグなしでできる。正常終了を見届ける。

docker run -ti progrium/buildstep /bin/bash -c "apt-get -y update; apt-get -y install libmecab-dev mecab-ipadic-utf8; apt-get -y clean"

最後に実行した結果の CONTAINER ID は docker ps -l で出てくるので確認する。

root@dokku001:~# docker ps -l
CONTAINER ID        IMAGE                       COMMAND                CREATED             STATUS                     PORTS               NAMES
1b9143e89867        progrium/buildstep:latest   /bin/bash -c 'apt-ge   2 seconds ago       Exited (0) 1 seconds ago                       distracted_feynman   

このコンテナのIDを既存のイメージのlatestとひもづける。

docker commit 1b9143e89867 progrium/buildstep:latest

これでOK。 docker commit は、gitなどと同様、ローカルのイメージの状態に対しコミットして、リモート(Docker Hub)にあるイメージには一切触れないので気軽に状態を変えることができる。

インストール結果の確認とかは、普通に docker run -ti とかで大丈夫。 docker run を実行してもコミットしない限りはもとのイメージは変更されないことに留意したい。

root@dokku001:~# docker run -ti progrium/buildstep /bin/bash -c "dpkg -L libmecab-dev"
/.
/usr
/usr/include
/usr/include/mecab.h
/usr/lib
/usr/lib/libmecab.a
/usr/share
/usr/share/doc
/usr/share/doc/libmecab-dev
/usr/share/doc/libmecab-dev/copyright
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/mecab-config.1.gz
/usr/bin
/usr/bin/mecab-config
/usr/lib/libmecab.so
/usr/share/doc/libmecab-dev/README
/usr/share/doc/libmecab-dev/AUTHORS
/usr/share/doc/libmecab-dev/changelog.Debian.gz

大々的に変える場合は別途Dockerfileを作った方が良いと思う。少し変えたい場合はこんな感じでぽちぽちとやっている。

34
43
0

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
34
43