Docker手動(Dockerfileを使わない)でのDockerイメージの作成(CE対応)今回は、ApacheがインストールされているDockerイメージを作成したいと思います。PHPもインストールして、アプリケーションサーバとしても利用できるようにします。Dockerイメージを作成する際は、DockerfileというDockerイメージを作成するための作業手順を記載したテキストファイルを作成し、そのファイルをdockerコマンドで読み込ませてDockerイメージを作成する、という手順で通常は行います。本記事ではDockerfileを利用しない手順を説明します。そのほうがDockerfile、さらにはDockerについても理解を深める早道になると思うからです。最後までお付き合いいただければ幸いです。ver17.12.1で確認しております。今回作成するDockerイメージから起動されたDockerコンテナは、以下の構成になります。作成するDockerイメージの構成一覧を示します。用するDockerイメージ作成作業について作業は以下の流れで進めていきます。※以下の作業はroot、若しくはDocker管理ユーザ(Dockerグループに所属しているユーザ)で行います。1.ベースイメージの取得まずは、作成するDockerコンテナのベースとなるOSのイメージを入手する必要があります。以下のコマンドにてCentOSの公式Dockerイメージを取得します。※既にCentOSの公式Dockerイメージをお持ちの場合は、本手順は省略可能です。centos以下のコマンドで取得したイメージを確認します。images以下のような内容が出力されます。MBこれがCentOSの公式Dockerイメージになります。以下のコマンドで、取得したCentOSイメージを実行します。initこれで、CentOSのDockerコンテナが起動されました。以下のコマンドで、起動されているDockerコンテナを確認します。ps以下のような内容が出力されます。zen_thompson「IMAGE」の部分に「centos」と表示されているのが確認できると思います。CentOSコンテナにApacheをインストールするためには、起動したCentOSコンテナ内でシェルを起動して、そのシェルでコマンドを実行する必要があります。CentOS内にはsshなどのリモートログイン用のサービスは起動されてないですし、ログインサービス自体も起動されてません。Dockerコンテナ内でシェルを起動し、そのシェルとコマンドのやりとりを可能にするためには、以下のコマンドを実行します。bash<コンテナID>の部分には、Dockerコンテナ起動時にユニークに割り振られる<コンテナID>を指定します。ps」コマンドにて確認できます。前に、起動したコンテナの確認を行いましたので、自分のDocker環境でのCentOSのコンテナIDは既に出力されていると思います。私の場合は、「c1dc73608166」でしたので、以下のコマンドを実行します。各自コンテナIDの部分を変更して実行してください。bash実行すると、プロンプトが変わったと思います。私の場合は以下の通りです。/]#このプロンプトは、CentOSコンテナ内で実行されているシェルのプロンプトです。これで、CentOSコンテナにログインしたのと同じ状態になりました。■3.CentOSコンテナにApacheをインストール起動したCentOSコンテナにApacheをインストールします。ここからは、LinuxにApacheをインストールされた経験のある方は、いつもどおりのLinux(今回はCentOS)内のオペレーションを行っていただければと思います。Apacheデーモン用のユーザ/グループを作成します。apache次に「yum」コマンドにてApacheをインストールします。httpdこれでCentOSコンテナへのApacheのインストールは終わりです。簡単に動作確認を行います。以下のコマンドでApacheを起動しましょう。/usr/sbin/httpd起動時に以下のような名前解決関係のメッセージが出力されるかもしれませんが、Apacheの起動には問題ありませんので、とりあえず無視で大丈夫です。messagepsコマンドでプロセスが起動されているか確認してください。-ef起動されている場合は以下のように出力されます。-ef起動したhttpdが複数起動されていることが確認できました。apacheユーザ権限で起動されていますね。httpによる動作確認は、PHPアプリケーションの動作確認と合わせて行いますので、ここでは省略させて下さい。■4.CentOSコンテナにPHPをインストールCentOSコンテナにApacheをインストールしましたので、次はPHPをインストールします。php-common念のため、起動確認します。-v以下のようなPHPのバージョン情報が表示されたかと思います。Technologies一旦Dockerホストに戻って、CentOSコンテナを停止します。次の手順でDockerイメージを行いますので、静的なイメージを取得するという意味での停止になります。「exit」コマンドで戻れます。stop」コマンドでCentOSコンテナを停止します。<コンテナID>これでPHPのインストールまで完了しました。5.Apache+PHPコンテナのイメージの作成これまで、CentOSイメージを起動して、そこにApacheとPHPをインストールしました。CentOSコンテナの環境設定を変更したり、不測の事態が発生してCentOSコンテナが壊れてしまったなどの場合、イメージとしてはCentOSイメージしか残っていないので、また再度ApacheとPHPのインストールを行わなければいけなくなります。同じコンテナを別のDockerホスト上で起動する場合も、また再度インストール作業を行う必要が出てきます。現状のCentOSコンテナの内容を基に新しいイメージを作成すれば、いつでも必要な時に現状の状態のDockerコンテナを作成することが可能になります。以下のコマンドを実行すると、指定したDockerコンテナの内容が、イメージとして保存されます。my-httpd-phpを実行します。images」コマンドでDockerイメージの一覧を出力し、保存したDockerイメージが存在するか確認してみてください。■6.Apache+PHPコンテナの起動では、今保存したDockerコンテナ(以下、Apache+PHPコンテナ)を起動してみましょう。その際、最初に示した構成概要図の通りになるようにオプションを付けて起動します。psコマンドで起動確認を行います。loving_williamsこれでDockerホスト外の端末からアクセス可能な状態で「Apache+PHPコンテナ」が起動されました。可能でしたら、外部のPCからブラウザで「Apache+PHPコンテナ」の8080番ポートにアクセスしてみてください。URL:http://<DockerホストのIPアドレス>:8080/7.PHPアプリケーションのインストールPHPをインストールしましたので、サンプルプログラムを使って「Apache+PHPコンテナ」の動作確認を行いたいと思います。PHP言語で超簡単なIPアドレスとホスト名を表示させるアプリケーションを作成します。Dockerホスト内の任意の場所に以下の内容のファイルを作成してください。ファイル名は「myapp.php」としましょう。</html>出来ましたら、それを以下のコマンドで「Apache+PHPコンテナ」にコピーします。<Apache+PHPコンテナのコンテナID>:/var/www/html/これは、「myapp.php」を「Apache+PHPコンテナ」内の「/var/www/html/」にコピーするコマンドになります。私の環境では以下のコマンドを実行しました。eddd79c47f4b:/var/www/html/念のために、以下のコマンドでファイルの存在確認を行いましょう。/var/www/html/」を実行するコマンドです。/var/www/html/8.動作確認では最後に動作確認を行います。Dockerホスト外のPCのブラウザから以下のURLにアクセスしてみましょう。URL:http://<DockerホストのIPアドレス>:8080/myapp.phpいかがですか?「Apache+PHPコンテナ」のホスト名とIPアドレスおよび接続元のIPアドレスとが表示されましたか?以上で終わります。別記事「Dockerfileを使用したDockerイメージの作成」で、今回行った作業手順をDockerfileというファイルに記載し、そのファイルをDockerに読み込ませることでイメージを作成する方法をご紹介しております。よろしかったご利用ください。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。テニス、作品鑑賞(映画、アニメ、ドラマ、絵画など)、讃岐うどん食べ歩き。コンピュータ業界に身を置く中年おやじです。世の中にはまだ自分が知らない情報があふれていて、知っているつもりでも全体の半分も知らないことがいっぱいあります。見つけた情報はGoogleKeepにメモる毎日です。ある日、自分が良いと思うことは、同じように感じる方も、数は少ないかもしれないけどいるはず、と思いまして、そのことが本サイト「めもたんす」を作るきっかけとなりました。自分がいいなと思ったことを記事にまとめたサイトです。technology.。