【インフラ_21日目】Docker_1冊目
こんにちは投資ロウトです。
背景
・過去に簡単にDockerの学習を行っておりましたが、環境構築を行なっていく必要があり、急ピッチでDockerを習熟してサービスをリリースしていかなければいけない背景があります。
Redmineの構築
LAMP環境・・・Linux + Apache + MySQL + PHPのこと
※「Linux + Webサーバ + データベース + プログラム実行環境」
Wordpressとほぼ一緒で、
①ネットワークの構築
②MySQLの構築
③Redmineを構築
これらを順番に行えば構築は可能とのこと。
※作成は省略
画面は以下
応用
Dockerを使う人と作る人で、習熟できなければならないレベルは違うとのこと。サーバエンジニアやセキュリティエンジニアは基礎だけではなく、応用部分も理解していく必要があるとのことでした。
ファイルのコピー
コンテナから別のマシンへや、別のマシンからコンテナにファイルをコピーする方法だそうです。
docker cp コピー元 コピー先
【余談】
Apacheはアクセスすると、初期画面が表示されるが、index.htmlを置くと、そちらが優先されて表示される。
まずはindex.htmlを作成
※作成内容は何でも良い
<html>
<meta charset="utf-8" />
<body>
<div>Doshirote works!</div>
</body>
</html>
Apacheコンテナの作成
docker run --name doshiapa001 -d -p 8081:80 httpd
コンテナが起動されているか確認
docker ps
localhost:8081にアクセス
Apacheのデフォルト画面が表示
Apacheに送信
docker cp /path/index.html doshiapa001:/usr/local/apache2/htdocs/
その後F5を押して画面を再度更新すると
きちんとApacheの表示ファイルが切り替わっておりました。
今度はコンテナからホストへコピーする
docker cp doshiapa001:/usr/local/apache2/htdocs/index.html /path/index.html
無事ファイルが来ていることを確認しました。
※元のファイルと同じ場所に移動させる場合は、元のindex.htmlファイル名を変更する必要があります。
ボリュームのマウント
ボリューム・・・コンテナとホストマシンの間でデータを永続化および共有するためのメカニズム
今までコンテナを作ってきましたが、実際にコンテナを使いたいのであれば、記憶領域のマウントが必要になるとのことです。
※コンテナのバージョンが変わった時に、コンテナは作っては捨てるものなので、記憶領域は切り離しておく必要性があるため。
【Dockerには2種類のマウントがある】
・ボリュームマウント・・・Dockerが管理する専用のストレージを使ってコンテナとホストの間でデータを共有する方法
※直接操作しづらいデメリットあり。
※ただ慣れればとにかく手軽で、Docker社も推奨とのこと。
※ただし無理に変更を加えると、ボリュームが破損するかもしれないとのこと。
・バインドマウント・・・ホストマシン上の特定のディレクトリやファイルを、コンテナ内の特定のパスに直接マウントする方法
※頻繁に触りたいファイルはここにおく。
【マウントの手順】
①記憶領域を作る
②コンテナを作る時にマウントする
ボリュームの作成
docker volume create ボリューム名
バインドマウントをする
マウント用のフォルダを作成
mkdir 対象のフォルダ
# 対象フォルダに遷移
cd 対象フォルダ
# 現在のディレクトリを確認
pwd
Apacheを起動時にマウントも一緒にする
docker run --name doshi000ex1 -d -p 8081:80 -v 先ほど作成したフォルダ:/usr/local/apache2/htdocs httpd
ファイルが配置されていないので、以下が表示される。
再度そのフォルダにindex.htmlを配置する。その後F5で更新
と短いですが、以上で学習を区切りたいと思います。ご精読ありがとうございました。焦らずコツコツ頑張っていきたいと思います。
Discussion