ぽれいんのブログ

エンジニアになるために覚えたことを日記に付けます。

PostfixとDovecotの連携

はじめに

インフラエンジニア初学者のぽれいんと申します。

転職する前はプログラミングスクールにて主にHTML、CSSRubyMySQL等について学びました。

※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。

<前回の記事>

porain.hatenablog.com

↑↑まだ見ていない方はこちらから↑↑

<参考>

メールサーバー構築(Postfix+Dovecot) - CentOSで自宅サーバー構築

pop3(110)ポートを使ったメールの受信方法

Postfix+Dovecotによるメールサーバ構築 | DevelopersIO

telnetでメール受信

使用する環境

 

 

 

本日のやりたいこと

①今回は送信メールサーバをPostfix、受信メールサーバをDovecotとしてメールの送受信をできるようにする。

②Maildir形式を採用し、telnetを使用しメールが届いているか確認できるようにする。

 

DNSpostfixの設定は前回記事を参考にどうぞ

DNS

porain.hatenablog.com

postfix

porain.hatenablog.com

Dovecot

Dovcotのインストール

yum install -y dovecot

ユーザを作成し、パスワードを設定

useradd porain
passwd porain
----パスワードを2回入力----
porain
porain

/etc/dovecot/dovecot.confの設定(主役)

cp -a /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.'date +"%m%d"'
vi /etc/dovecot/dovecot.conf
以下のように変更

----------------------------------------
#protocols = imap pop3 lmtp

#protocols = imap pop3 lmtp
#pop3での通信を許可
protocols = pop3
----------------------------------------

/etc/dovecot/conf.d/10-mail.confの設定(脇役1)

cp -a /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.'date +""%m%d"'
vi /etc/dovecot/dconf.d/10-mail.conf
以下のように変更
----------------------------------------
# mail_location = maildir:~/Maildir

#メールボックスの場所を定義
mail_location = maildir:~/Maildir
----------------------------------------

/etc/dovecot/conf.d/10-auth.confの設定(脇役2)

cp -a /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.'date +""%m%d"'
vi /etc/dovecot/dconf.d/10-auth.conf
以下のように変更

----------------------------------------
#disable_plaintext_auth = yes

#平文でのログインを許可
disable_plaintext_auth = no
----------------------------------------

/etc/dovecot/conf.d/10-ssl.confの設定(脇役3)

cp -a /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.'date +""%m%d"'
vi /etc/dovecot/dconf.d/10-ssl.conf
以下のように変更

----------------------------------------
#ssl = required

#ssl = required
#SSL接続しなくてもOKにする
ssl = yes
----------------------------------------

/etc/dovecot/conf.d/10-master.confの設定(脇役4)

cp -a /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.'date +""%m%d"'
vi /etc/dovecot/dconf.d/10-master.conf
以下のように変更

----------------------------------------
service pop3-login {
inet_listener pop3 {
#port = 110
}

service pop3-login {
inet_listener pop3 {
# pop3の通信を許可
port = 110
}
----------------------------------------

いや、設定ファイル多すぎ…(笑)

doveconfコマンドで設定ファイルを確認

doveconf -a
doveconf -n

-a:読み込まれる全ての設定を表示

-n:デフォルト値と異なる全ての設定を表示

※設定がしっかりしてないとエラー箇所が表示される

 

動作確認

確認のためのメールを送信

echo "test" | mail -s test -r from@example.com porain@mail.hogehoge.com

※メールアドレスはユーザ名@ドメイン名で設定

telnetをインストール

yum install -y telnet

telnetコマンドでPOP3に接続

telnet localhost 110

+OK Dovecot readyの表示でPOP3に接続成功

以下のコマンドを順番に実行し、メールの受信を確認

user porain
pass porain
list
retr 1

user : 作成したユーザ名を入力 

pass : 設定したパスワードを入力

list : 送られてきたメッセージを表示

retr : 指定したメッセージを詳細表示

 

以上!!!!

メールサーバ構築(SMTPサーバ)

はじめに

インフラエンジニア初学者のぽれいんと申します。

転職する前はプログラミングスクールにて主にHTML、CSSRubyMySQL等について学びました。

※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。

<前回の記事>

porain.hatenablog.com

↑↑まだ見ていない方はこちらから↑↑

 

 

 

 

本日のやりたいこと

今回は電子メールを利用するためのメールサーバの構築を行う。

使用する環境

メールサーバとは

メールサーバの種類

メールサーバには以下の2種類がある。

  • メールの配送・送信を受け持つSMTPサーバ
  • メールの受信を受け持つPOPサーバ or IMAPサーバ

これらのサーバを総合してメールサーバと呼ぶ。

メールの保存形式

SMTPサーバに送信されたメールの保存形式は以下の2種類がある。

  • Mailbox形式
  • Maildir形式

Mailbox形式は古くから使われている形式でユーザごとに受信したすべてのメールを平文で1つのファイルに連結して保存する。そのため、ファイルが壊れるとすべてのメールを失うことになってしまう。

Maildir形式は1通のメールを1つのファイルとして保管する。そのため、1つファイルが壊れても1通のメールを失うのみで留まる。

メールの読み出し(受信)

メールサーバに蓄積されたメールはPOPまたはIMAPというプロトコルを使って読み出すことができる。

  • POP

POP(Post Office Protocol)は2021年現在バージョンが3になっているためPOP3とも呼ばれる。メールサーバにメールが届いた際にユーザがパソコンなどの端末にメールをダウンロードして、端末上で管理するのが特徴

IMAP(International Message Access Protocol)は2021年現在バージョンが4になっているためIMAP4とも呼ばれる。インターネットを利用しメールにアクセスする通信規約のためメールサーバにあるメールを端末にダウンロードする必要がなくメールサーバ上で管理されているメールをメールソフトで閲覧するのが特徴。

 

メール配送の仕組み

 

 

  1. クライアントがメールを送信するとSMTPサーバがそれを受け取る。
  2. SMTPサーバはメールを受け取るとIPアドレスよりPOPサーバIMAPサーバ)にメールを転送する。
  3. 送信先クライアントはPOPサーバからメールをダウンロードする。(IMAPサーバにメールが保存される)

メールサーバの構築(SMTPサーバ)

rootユーザになる

sudo su -

postfixの起動確認(※postfixCentOSにデフォルトで入っています。)

rpm -qa postfix

ステータス・自動起動を確認

systemctl status postfix
systemctl is-enabled postfix

postfixのプロセスが動いているか確認

ポート番号を確認

ps -efH | grep postfix
netstat -anp | grep master

メールを送信するためのコマンドmailをインストール

yum install -y mailx

自分宛にメールを送信できるか確認

mail -s 件名 root@localhost

メールログの確認

tail -f /var/log/maillog

メールが受信できているか確認

mail

 DNSサーバと連携

<SMTPサーバの設定>

設定ファイルのバックアップファイルを作成

cp /etc/postfix/main.cf /etc/postfix/main.cf_20210821
ls /etc/postfix/main.cf_20210821

コメントアウトの行を排除したファイルを作成し、設定ファイルに上書き

grep -v ^# /etc/postfix/main.cf | cat -s > /tmp/post.txt
cp /tmp/post.txt /etc/postfix/main.cf
y

 postfixの設定ファイルを編集

vi /etc/postfix/main.cf
以下を変更
----------ここから---------------------
inet_interfaces = localhost
        ↓
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost
        ↓
mydestination = $myhostname, $mydomain
----------ここまで---------------------

以下を先頭に追記
----------ここから---------------------
myhostname = mail.hogeohoge.com
mydomain = hogehoge.com
myorigin = $myhostname
mynetworks = 172.31.0.0/16, 127.0.0.1
----------ここまで---------------------

 設定を変更したため再起動し、プロセスとポート番号を確認

systemctl restart postfix
ps -efH | grep postfix
netstat -anp | grep master

<DNSサーバの設定>

BINDのステータスを確認

 systemctl status named

Unit named.service could not be found.と表示される場合はBINDのインストールがされていないためDNSサーバの構築が必要。

DNSサーバの構築は以下の記事を参照↓

porain.hatenablog.com

 

(任意の)正引きのゾーンデータベースファイルに以下を追記

vi /var/named/hogehoge.com.zone
最終行に以下を追記
------------ここから-----------------------
mail IN A xxx.xxx.x.xx
------------ここまで-----------------------

 ※xxx.xxx.x.xxはSMTPサーバのIPアドレス

構文チェック

named-checkzone hogehoge.com /var/named/hogehoge.com.zone

以下のようにOKが表示されればOK
zone hogehoge.com/IN: loaded serial 2017080701
OK

/etc/resolv.conf を変更

 vi /etc/resolv.conf
------------------------------------------

---以下をコメントアウト---
#nameserver 172.31.0.2
---以下を追記---
#ローカルループアップアドレス
nameserver 127.0.0.1
------------------------------------------

namedを起動し、プロセスとポート番号を確認

systemctl restart named
ps -efH | grep named
netstat -anp | grep 53

 ドメインを使ってメールを送信

 mail -s 件名 root@mail.hogehoge.com

 メールログの確認

 tail -f /var/log/maillog

 メールが受信できているか確認

 mail

 

以上!!!!

Linux基本コマンド一覧表

はじめに

インフラエンジニア初学者のぽれいんと申します。

転職する前はプログラミングスクールにて主にHTML、CSSRubyMySQL等について学びました。(2か月間)

※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。

 

 

インフラの勉強を始めて2か月が経過したので、復習がてら基本コマンドをまとめる。

 

Linux基本コマンド

 

コマンド 内容 オプション 備考
pwd 現在のフルパスを表示   行方不明になったら使おう
ls ファイル/ディレクトリ表示 -la ls <ファイルやディレクトリ> -laで詳細表示
cd 現在地を移動   cd <移動したい場所>
tree 構成把握   yum -y install tree 必須
cp コピー -r -f cp <コピーを作成するファイル> <コピーの名前>
ディレクトリの場合は-rを使用。-fは力でねじ伏せ
mv 移動/改名 -r -f mv <移動するファイル> <移動先のパス>
ディレクトリの場合は-rを使用。-fは力でねじ伏せ
chmod 権限の変更   chmod xxx <権限変更するファイル/ディレクトリ>
xxx ...3桁の8進数の数字で表現。  ※
chown 所有ユーザ/グループの変更   chown <ユーザ名>:<グループ名> <変更したいファイル/ディレクトリ> 
ps プロセスの確認 -efH 
-aux
grepを併用することで確認したいプログラムを選択
-aux…すべて確認 -efH…特定のプロセスを確認
netstat ポート番号を確認 -anp grepを併用することで確認したいプログラムを選択
-anp... すべてをプロセス名を含めて表示
diff 間違い探し   diff <ファイル①> <ファイル②>
ファイル①とファイル②の違う箇所を表示
tail ファイル10行を表示 -f -f でリアルタイム表示 ログの観察に使用。
touch ファイルを作成   touch <ファイル名>
mkdir ディレクトリを作成   mkdir <ディレクトリ名>
vi ファイルを記入   ファイルの中に文字を記入する。
ファイルが作成されていなければ作成も一緒に行う
cat ファイル内容を表示(短)   cat <ファイル名> 内容が多いと見ずらい
less ファイル内容を表示(長)   less <ファイル名> ページめくり形式
echo 文字列を表示   echo <"表示したい文字列">
> <ファイル名>とすることでファイルに記入可能
rm 削除 -r -f rm <ファイル名>
ディレクトリの場合は-rを使用。-fは力でねじ伏せ
ln シンボリックリンク作成 -s ln -s <ファイル名> <リンク名>
grep 抜き出し   コマンド | grep <プログラム名>
なんらかのコマンドに装備させる武器的な使い方
useradd ユーザを追加 -g useradd <ユーザ名>
-g でグループを選択可能
userdel ユーザを削除 -r userdel <ユーザ名>
-r でホームディレクトリごと削除
passwd パスワードを設定   passwd <ユーザ名> でユーザのパスワードを変更
groupadd グループを追加 -g groupadd <グループ名>
-g でグループ番号を指定
groupdel グループを削除   groupdel <グループ名>
kill プロセスを消滅   kill -TERM <停止したいプロセスID>
killall プロセスをすべて消滅   kilall -TERM <プロセス名>

 

以上!!!!

 

 

DNSサーバ構築

はじめに

インフラエンジニア初学者のぽれいんと申します。

転職する前はプログラミングスクールにて主にHTML、CSSRubyMySQL等について学びました。

※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。

<前回の記事>

porain.hatenablog.com

↑↑まだ見ていない方はこちらから↑↑

使用環境

 

 

 

 

 

DNSサーバの構築

rootユーザになる

sudo su -

bindのインストール

yum install -y bind

bindを自動起動を有効にして起動

systemctl enable named
systemctl start named

namedプロセスの起動確認

ps -efH | grep named

以下プロセスが起動していることを確認

named 3341 1 0 08:07 ? 00:00:00 /usr/sbin/named -u named -c /etc/name .conf

namedが利用するTCP/UDPがオープンしているか確認

netstat -anp | grep named

以下のようにnamedが利用する53番ポートがオープンしていることを確認

tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 3341/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 3341/named
tcp6 0 0 ::1:53 :::* LISTEN 3341/named
tcp6 0 0 ::1:953 :::* LISTEN 3341/named
udp 0 0 127.0.0.1:53 0.0.0.0:* 3341/named
udp6 0 0 ::1:53 :::* 3341/named
unix 2 [ ] DGRAM 20948 3341/named

コピーを作成してnamed.confの編集

cp /etc/named.conf /etc/named.conf.org
vi /etc/named.conf
--------ここから--------------
全ての
サーバから名前解決できるようにする
listen-on port 53 { 127.0.0.1; }; → listen-on port 53 { 127.0.0.1;any; };
listen-on-v6 port 53 { ::1; }; →  listen-on-v6 port 53 { ::1;any; };
全てのサーバからクエリの受付を許可
allow-query { localhost; }; → allow-query { any; };
--------ここまで--------------

※anyを使用するとセキュリティに問題があるように思われるが、他でセキュリティの強化が図れる。しかし、現場で作業する際は上長に設定値の確認を行う。

 

/etc/named.confの構文チェック

named-checkconf

ゾーンデータベースファイルの作成・編集

vi /var/named/hogehoge.com.zone

-----------ここから---------------
$ORIGIN hogehoge.com.
$TTL 900
@ IN SOA ns.hogehoge.com. sample.hogehoge.com. (
2017080701 ; Serial
3600 ; Refresh
900 ; Retry
1814400 ; Expire
900 ) ; Minimum
IN NS ns
ns IN A 192.168.1.10
hoge IN A 192.168.2.21
porain IN A 192.168.3.33
-----------ここまで---------------

/var/named/hogehoge.zoneの構文チェック

named-checkzone hogehoge.com /var/named/hogehoge.com.zone

以下のようにOKが表示されればOK
zone hogehoge.com/IN: loaded serial 2017080701
OK

named.confに追記

vi /etc/named.conf
以下を追記
-----------ここから---------------
#以下管理したいゾーン情報

zone "hogehoge.com" IN {
type master;
file "/var/named/hogehoge.com.zone";
};
-----------ここまで---------------

/etc/named.confの構文チェック

named-checkconf

/etc/resolv.confの編集

vi /etc/resolv.conf
---以下をコメントアウト---
#nameserver 172.31.0.2
---以下を追記---
#ローカルループアップアドレス
nameserver 127.0.0.1

bindの再起動・プロセス・ポート番号のリッスンを確認

systemctl restart named
ps -efH | grep named
netstat -anp | grep named
LinuxIPアドレスが開通していることを確認!

 digコマンドで名前解決ができているか確認

dig porain.hogehoge.com

 

以上!!!!!!!!!!!!!!

AWS ~ボリュームの変更~

 

はじめに

インフラエンジニア初学者のぽれいんと申します。

転職する前はプログラミングスクールにて主にHTML、CSSRubyMySQL等について学びました。

※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。

<前回の記事>

porain.hatenablog.com

<参考記事>

EBS ボリュームへの変更のリクエスト - Amazon Elastic Compute Cloud

ボリュームサイズ変更後の Linux ファイルシステムの拡張 - Amazon Elastic Compute Cloud

 

EC2での操作

1.インスタンスよりインスタンスを選択

2.変更するインスタンスを選択しストレージに移動

3.ボリュームIDを選択

4.アクション^よりボリュームの変更を選択

5.サイズに変更したい値を入力して、変更を選択

※ ▼Elastic Block Store のボリュームからボリュームサイズの変更が可能だが事故を防ぐために、上記のやり方の方が安全と判断。

 

インスタンス内での操作

 

rootになる

sudo su -

各ボリュームで使用中のファイルシステムを確認

df -hT
-以下上記コマンド実行結果例-
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  482M     0  482M   0% /dev
tmpfs          tmpfs     492M     0  492M   0% /dev/shm
tmpfs          tmpfs     492M  476K  492M   1% /run
tmpfs          tmpfs     492M     0  492M   0% /sys/fs/cgroup
/dev/xvda1     xfs       8.0G  2.1G  6.0G  26% /
tmpfs          tmpfs      99M     0   99M   0% /run/user/1000
tmpfs          tmpfs      99M     0   99M   0% /run/user/0

ボリュームに拡張が必要なパーティションがあるか確認

lsblk
-以下上記コマンド実行結果例-
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  10G  0 disk
mqxvda1 202:1    0   8G  0 part /

パーティションを持つボリュームの場合はパーティションを拡張

growpart /dev/xvda 1

増加したボリュームサイズがパーティションに反映されていることを確認

lsblk
-以下上記コマンド実行結果例-
xvda    202:0    0  10G  0 disk
mqxvda1 202:1    0  10G  0 part /

各ボリュームのファイルシステムのサイズを確認

df -h
-以下上記コマンド実行結果例-
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        482M     0  482M   0% /dev
tmpfs           492M     0  492M   0% /dev/shm
tmpfs           492M  476K  492M   1% /run
tmpfs           492M     0  492M   0% /sys/fs/cgroup
/dev/xvda1      8.0G  2.1G  6.0G  26% /
tmpfs            99M     0   99M   0% /run/user/1000
tmpfs            99M     0   99M   0% /run/user/0

ボリュームでファイルシステムを拡張

xfs_growfs -d /
-以下上記コマンド実行結果例-
meta-data=/dev/xvda1             isize=512    agcount=4, agsize=524159 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1 spinodes=0
data     =                       bsize=4096   blocks=2096635, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2096635 to 2620923

変更を確認

df -h
-以下上記コマンド実行結果例-
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        482M     0  482M   0% /dev
tmpfs           492M     0  492M   0% /dev/shm
tmpfs           492M  476K  492M   1% /run
tmpfs           492M     0  492M   0% /sys/fs/cgroup
/dev/xvda1       10G  2.1G  8.0G  21% /
tmpfs            99M     0   99M   0% /run/user/1000
tmpfs            99M     0   99M   0% /run/user/0

 

以上!!!!!!

Docker-compose

はじめに

インフラエンジニア初学者のぽれいんと申します。

転職する前はプログラミングスクールにて主にHTML、CSSRubyMySQL等について学びました。

※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。

<前回の記事>

porain.hatenablog.com

<参考>

Docker Compose を使う|初心者が絵で理解する Docker

《滅びの呪文》Docker Composeで作ったコンテナ、イメージ、ボリューム、ネットワークを一括完全消去する便利コマンド - Qiita

docker-compose.ymlの書き方について解説してみた - Qiita

docker-compose の書き方! 分かりやすいDockerFileとの違い | SHURA-SPOT

 

 

 

 

docker-compose

docker-composeとは複数のコンテナから成るサービスを自動的に構築、起動してくれる便利なツール。コンテナを複数用意するため、管理がしやすい。

・イメージ図

f:id:porain:20210904190736p:plain



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、CSSRubyMySQL等について学びました。

※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。

<前回の記事>

porain.hatenablog.com

 

<参考記事>

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

 

以上