Docker for Macでさくっとイメージ作成

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