Docker-compose
はじめに
インフラエンジニア初学者のぽれいんと申します。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
<参考>
Docker Compose を使う|初心者が絵で理解する Docker
《滅びの呪文》Docker Composeで作ったコンテナ、イメージ、ボリューム、ネットワークを一括完全消去する便利コマンド - Qiita
docker-compose.ymlの書き方について解説してみた - Qiita
docker-compose の書き方! 分かりやすいDockerFileとの違い | SHURA-SPOT
docker-compose
docker-composeとは複数のコンテナから成るサービスを自動的に構築、起動してくれる便利なツール。コンテナを複数用意するため、管理がしやすい。
・イメージ図
docker-compose インストール
curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
docker-compose.ymlの書き方
・基本構文
version: "3"
services:
web:
container_name: web
build: ./web
ports:
- "80:80"
volumes:
- ./work:/work
db:
container_name: db
build: ./db
ports:
- "3306:3306"
volumes:
- ./work:/work
・基本構文の意味
version: #composeファイル形式の宣言
services: #サービス。これの下にサービスの名称を記入
container_name: #コンテナの名称
build: #Dockerfileのあるディレクトリを指定してイメージをビルド
ports: #公開用のポートの指定
volumes: #作業フォルダの同期
・こういうのもあるよ
environment: #環境変数の指定
restart: always # いつもコンテナの再起動を実施
depends_on # サービス間の依存関係を指定
便利
今までの状態を元に戻す場合(破滅の呪文)
docker-compose down --rmi all --volumes --remove-orphans
docker rm `docker ps -f "status=exited" -q`
Dockerの基礎の基礎の基礎
はじめに
インフラエンジニア初学者のぽれいんと申します。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
<参考記事>
Dockerfileとdocker buildコマンドでDockerイメージの作成:いまさら聞けないDocker入門(3)(1/2 ページ) - @IT
Dockerfileとdocker buildコマンドでDockerイメージの作成:いまさら聞けないDocker入門(3)(2/2 ページ) - @IT
コンテナ
コンテナは仮想基盤を提供する方式として、従来からのホストOS型、ハイパーバイザ型に加えてここ近年はコンテナ型と呼ばれるものが利用されるようになってきたそう。
メリット
- 起動が速い
- 同じ構成の環境を簡単に再現
デメリット
- ホストとコンテナで異なるOSは使えない
使ってみる
dockerをインストール
yum install docker
dockerを起動し、プロセスを確認
systemctl start docker
ps -efH | grep docker
mkdir /opt/porain
cd /opt/porain/
'dockertest'をindex.htmlにリダイレクト
echo 'dockertest' > index.html
Dockerfileを作成
Dockerfile…Dockerコンテナーの構成内容をまとめて記述するシンプルなテキスト形式のファイル
Dockerfileの記述方法
{命令} | 用途 |
---|---|
FROM | 元となるDockerイメージの指定 |
MAINTAINER | 作成者の情報 |
RUN | コマンドの実行 |
ADD | ファイル/ディレクトリの追加 |
CMD | コンテナーの実行コマンド 1 |
ENTRYPOINT | コンテナーの実行コマンド 2 |
WORKDIR | 作業ディレクトリの指定 |
ENV | 環境変数の指定 |
USER | 実行ユーザーの指定 |
EXPOSE | ポートのエクスポート |
VOLUME | ボリュームのマウント |
vi Dockerfile
###以下を記入
--------------------------
FROM nginx
EXPOSE 80
COPY index.html /usr/share/nginx/html
CMD nginx -g "daemon off;"
--------------------------
my_nginxという名前でDockerコンテナーの起動、構成、Dockerイメージの作成
まで一気に実行
docker build . -t my_nginx
Dockerイメージ一覧を確認
docker images
Docerコンテナを起動
docker run -d -p 80:80 --name web my_nginx
Dockerコンテナ一覧を確認
docker ps
以上
リダイレクト
はじめに
インフラエンジニア初学者のぽれいんと申します。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
<参考記事>
初心者向け!Linux操作技術~標準入出力とリダイレクト~ | KENスクールブログ
本日のやりたいこと
本日は、昨日、「シェルスクリプト内にログをリダイレクトさせて」と言われた際に、
「????」となったので、リダイレクト関連をこちらにまとめようと思います。
リダイレクト
リダイレクト記号(リダイレクション演算子)を使用することで入出力先を変更することができます。
基本的な書式
コマンド > /etc/file /etc/fileに上書きして書き込む
コマンド >> /etc/file /etc/fileに書き足す
コマンド < /etc/file コマンドが/etc/fileの内容を受け取る
コマンド 2> /etc/file エラーを/etc/fileに上書きして書き込む
コマンド > /etc/file 2>&1 エラーの出力先を標準出力と同じにする
使用例:シェルが実行されたら、test.logにechoコマンドがリダイレクトされる
# vi /home/user/test.sh
------------------------------------------
#!bin/bash
echo "シェルは実行されました!" >> /home/user/test.log
------------------------------------------
# sh /home/user/test.sh
# cat /home/user/test.log
シェルは実行されました!
やりたかったことはできた!
リダイレクトをするには">"の記号を使う!!
これはもう忘れない!!
またリダイレクト関連でまとめることはこちらに書き込みます!
以上!!!!!!!
AWS ~VPC内でのインスタンス作成~
はじめに
インフラエンジニア初学者のぽれいんと申します。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
<参考>
[初心者向け]VPC作成からEC2インスタンス起動までを構成図見ながらやってみる(その1) | DevelopersIO
リージョンとは | クラウド・データセンター用語集/IDCフロンティア
パブリックサブネットとプライベートサブネットの違いとは? | Tech Dive
本日のやりたいこと
<構成図>
リージョンを選択
自分のインスタンスをどこに作るかを考えた際に、まず始めのグループ分けはリージョンです。リージョンとは、地理的に近い「ゾーン」をグループ化したものであり、リージョンごとに完全に独立しています。そのため、違うリージョン内でVPCを作成したり、サブネットを構成することはできません。
VPCを作成
次にVPCを作成します。VPCを使用することで仮想ネットワーク内でAWSリソース同士を通信することができます。仮想ネットワーク内は他のアカウントとは切り離されたプライベートな空間なためプライベートIPアドレスを使用します。
サブネットを作成
続いてVPC内にサブネットを作成します。サブネットにより、アベイラビリティゾーンの区別を行うことができます。これにより、1つのアベイラビリティゾーンが災害で停止してもシステム全体としては止まらないようにできます。
パブリックサブネット
インターネットゲートウェイと繋がっているサブネット領域
プライベートサブネット
インターネットゲートウェイと繋がっていないサブネット領域
インターネットゲートウェイ
プライベートな空間からグローバルな空間に繋がる道のことです。これがないとグローバルIPアドレスが付加できません。
clamAVの構築
はじめに
インフラエンジニア初学者のぽれいんと申します。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
<参考記事>
Clam AntiVirus を AWS EC2 にインストールする - Qiita
Amazon Linux 2にClamAVをインストールする - Qiita
オープンソースのアンチウイルスソフトウェア、ClamAVをCentOS 7にインストールする - Qiita
本日のやりたいこと
本日はウイルス攻撃を受けないようにするために対策をしたいということでウイルス対策用の無料ソフトである”clamAV”をインストールして実際に使ってみよー!
と思っております!
clamAVについて
clamAVはオープンソースのアンチウイルスソフトウェア。会員登録等も必要なく、少し設定をいじれば利用することができる。ただ、使用するメモリがかなり大きく、EC2のインスタンスタイプはt2.microではメモリ不足とのエラーが発生するがt2.mediumの使用により、利用可能になった。
clamAVのインストール
rootユーザになる
sudo su -
amazon-linux-extras install -y epel
yum install -y clamav clamav-update clamd
コピーを作成しfreshclam.confを編集
cp /etc/freshclam.conf /etc/freshclam.conf.org
vi /etc/freshclam.conf
以下を追記
-----------------------------------------
#UpdateLogFile /var/log/freshclam.log
UpdateLogFile /var/log/freshclam.log
LogFileMaxSize 2M
LogTime yes
LogSyslog yes
LogRotate yes
-----------------------------------------
freshclamを実行(ウイルス定義の更新)
freshclam
以下のような表示が出ればOK
Fri Aug 20 09:23:36 2021 -> ClamAV update process started at Fri Aug 20 09:23:36 2021
Fri Aug 20 09:23:36 2021 -> daily database available for download (remote version: 26268)
コピーを作成しclamdの設定ファイルを編集
cp /etc/clamd.d/scan.conf /etc/clamd.d/scan.conf.org
vi /etc/clamd.d/scan.conf
1.以下のコメントアウト(#)を外す
-----------------------------------------
#LogFile /var/log/clamd.scan
↓
LogFile /var/log/clamd.scan
#LocalSocket /run/clamd.scan/clamd.sock
↓
LocalSocket /run/clamd.scan/clamd.sock
#LocalSocketMode 660
↓
LocalSocketMode 660
#ExcludePath ^/proc/
#ExcludePath ^/sys/
↓
ExcludePath ^/proc/
ExcludePath ^/sys/
-----------------------------------------
2.以下にコメントアウト(#)を付ける
-----------------------------------------
User clamscan
↓
#User clamscan
-----------------------------------------
自動起動を有効にしてclamdの起動
systemctl enable clamd@scan
systemctl start clamd@scan
※うまく起動できない場合
ログからエラーを確認
journalctl -u clamd@scan
ウイルススキャンのテスト
テスト用のウイルス(無害なウイルス)をダウンロード
cd /tmp
wget http://www.eicar.org/download/eicar.com
ls eicar.com
手動でウイルススキャンを実施
clamscan --infected --remove --recursive /tmp
eicar.comが削除されていることを確認
ls /tmp/eicar.com
以上!!!!!!!
Linux ソフトウェアインストール
はじめに
インフラエンジニア初学者のぽれいんと申します。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
↑↑まだ見ていない方はこちらから↑↑
<参考>
【 rpm 】コマンド(基礎編)――RPMパッケージをインストールする/アンインストールする:Linux基本コマンドTips(47) - @IT
Linuxにソフトウェアをインストールするには? | クロの思考ノート
【Linuxコマンド】tarでアーカイブを作成・展開する方法 | 侍エンジニアブログ
本日のやりたいこと
本日は、ソフトウェアをインストールする際ってどうしたらいいんだ!?!?とパッと方法が思い浮かばなかったのでインストールの方法をまとめたいと思います!!
ソフトウェアインストール
yumリポジトリからインストール
必要なソフトウェアは公式リポジトリにそろっているがリポジトリは世界中にたくさんありそれぞれ配っているパッケージが違うそのため、リポジトリを追加することによってパッケージのバリエーションを増やすことができる。yumコマンドで追加できる。
yum install <パッケージ名>
・オプション
-y 全ての問い合わせに「yes」で応答したものとする
EPELリポジトリを追加する際
amazon-linux-extras install -y epel
上記コマンドを実行することでEPELを有効にすることができる。
RPMファイルをダウンロード
リポジトリと違いパッケージマネージャは自動更新されない。
rpmコマンドを使用してインストールを行う。
インストール(追加)
rpm -ivh <rpmファイル>
・オプション
-i パッケージをインストール
-v パッケージを検査
-h 経過を表示
アンインストール(削除)
rpm -e <パッケージ名>
・オプション
-e パッケージをアンインストール(削除)
アップグレード(更新)
・既にインストール済のものをアップグレード
rpm -Fvh <rpmファイル>
・まだインストールしていないものをアップグレード
rpm -Uvh <rpmファイル>
・オプション
-F パッケージをアップグレード
-U 以前のバージョンがインストールされているときのみアップグレード
ステータス(状態)
rpm -qa
・既に存在するかの確認
rpm -qa | grep <確認したいパッケージ名>
・オプション
-q 問い合わせ
-a 一覧表示する
バイナリファイルをダウンロード
wgetコマンドでファイルのダウンロードを行う。ファイルの末尾にtar.gzがあるのでtarコマンドで解凍する。
wget https://xxxxxxx.xxx/latest.tar.gz
tar -xzvf latest.tar.gz
・オプション
-x アーカイブを展開
-z gzipの圧縮処理を行う
-v 圧縮・展開時に詳細を表示
-f アーカイブファイルを指定
以上!!!!!!
シェルスクリプトの基礎の基礎の基礎
はじめに
インフラエンジニア初学者のぽれいんと申します。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
↑↑まだ見ていない方はこちらから↑↑
<参考>
シェルの基礎知識
変数
変数は値を入れる箱。この変数には任意の名前をつけることができる。
# NO=suuji
変数に対しては代入という操作をすることでその値を変更できる。
※=の端にスペースを入れない(変数ではなく文字列として表示される)
# echo $NO
suuji
変数に格納されている「値」を参照する場合は”$変数名”と指定する。
この”$”(ダラー)が変数と認識させる魔法のマーク
変数名について
変数名には後でどのような変数名にしたかわからなくならないように、その内容がわかるような名前をつけると分かりやすい。
環境変数
変数にはシェル変数と環境変数の2種類がある。
シェル変数 → 実行したシェル内でのみ有効
環境変数 → シェルから呼び出したプロセスにも有効
通常はシェル変数として保存されるため環境変数として設定するためにはexportコマンドを実行する。
# export HENSU
環境変数はprintenvコマンドで確認できる
# printenv