Contents
はじめに
MacでDockerをさくさく試してきて、どんな使い方をすればいいのか、だいぶイメージができてきた。前回までDocker Hubのイメージからコンテナ起動をして使っていたが、そのコンテナに設定を追加してイメージにすれば、同じ状態のコンテナを再利用できる。
Dockerイメージ作成方法
Dockerイメージの作成は以下の2パターンがある。
1.各種設定を行ったコンテナを使ってDockerイメージを作成
2.Dockerfileを使ってDockerイメージを作成
今回試すのは「1」の方法。Docker Hubのイメージからコンテナ起動。必要な設定を行い、そのコンテナからDockerイメージを作成する。これは簡単と思ったが実際試してみると結構苦労した。コンテナを一度停止しないといけないので、再起動後にまた設定が必要だったりする。なので基本的には「2」の方法を使うことがメインになるかと思う。
「2」の方法はベースとなるDockerイメージに対する変更をコード化したもの。コード管理のためどんな操作がされて、どのような状態なのか把握できるし、再現性も担保される。「2」の方法に関しては次回試したいと思います。
どんなDockerイメージを作る?
Docker HubのCentOS 7イメージにApache入れて、コンテナ起動時にApacheが起動するDockerイメージを作ってみる。
コンテナで各種設定
ホスト側
Docker HubのCentOS7イメージからコンテナを作る。
$ docker run -it -d --name apache -p 8080:80 centos:7
次のコマンドでコンテナの中に入る。
$ docker exec -it apache bash
コンテナ内
コンテナの中からhttpdをインストールする。
# yum install -y httpd
コンテナの中からhttpdを実行する。
systemdで起動したいところですが、コンテナの中でsystemdを使う必要はないので、httpdを直接実行させます。
# /usr/sbin/httpd -DFOREGROUND &
http://127.0.0.1:8080/ でApacheの画面が表示されればOK。exitでコンテナから抜けます。
Dockerイメージ作成
コンテナを停止。
$ docker stop apache
コンテナ名を指定して、 Dockerイメージ作成。
(docker commit <コンテナ名> <作成するDockerイメージ名>)
$ docker commit apache image-apache
イメージができていることを確認。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE image-apache latest 0f6f2373d163 24 seconds ago 319MB centos 7 5182e96772bf 5 days ago 200MB
作成したイメージを使ってコンテナ起動してみる。同時にhttpdも起動するようにコマンドを渡します。
$ docker run -it -d --name apache2 -p 8081:80 image-apache /usr/sbin/httpd -DFOREGROUND
今回はポート変えたので http://127.0.0.1:8081 で確認
おしまい
参考
https://blog.takekoshi.net/docker-centos7-httpd/
https://qiita.com/muddydixon/items/d2982ab0846002bf3ea8
https://ja.stackoverflow.com/questions/31280/dockerfile%E3%81%A7%E3%81%AEsystemctl%E5%AE%9F%E8%A1%8C%E6%96%B9%E6%B3%95%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6