4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SIer営業1年目がDockerを使ってファイルサーバを構築してみた

Last updated at Posted at 2018-10-21

以下の記事に騙されて触発されて頑張って週1ペースで書いてみようと思います。
https://zine.qiita.com/products/creek-and-river-job-agent/
今までまともに文章を書いたことがないので、稚拙な点も多く、技術的にも未熟な点もあるとは思いますが、暖かく見守って下さい。
ここ間違ってるよ!とかありましたら、ぜひ優しく教えて下さい。

#今回やること
記念すべき初投稿のネタはOSインストールからファイルサーバの構築です。
数日前に5年前くらいに作ったファイルサーバのシステムが壊れました。だいぶ前に作ったやつで、OSも古く、知識のない状態でいじっていたやつなのでゴミファイルの蓄積もすごかったため、はじめから作ろうと思いました。
せっかくだし、最近(?)流行りのDockerとかいうやつがあるらしいので、勉強も兼ねて構築していきます。

#構築した環境

  • CentOS 7.5
  • Sambaを使ったファイルサーバの構築

#CentOSのインストール
クライアントの環境がMacなので、以下のリンクの通りにBootable USBを作成してインストール。
https://blog.adachin.me/archives/5273
minimalでも
OSのインストールは特に問題なく終了。

#やったこと

  • ifconfigのインストール
  • IPアドレスの固定
  • SSHの設定
  • smartctlm,rsyncのインストール
  • HDDのマウント
  • 所有者、パーミッションの変更
  • 定期的にバックアップ・シャットダウン

ifconfigのインストール

使い慣れているifconfigがCentOS7から非推奨になったらしい。
そのうち移行したいが、とりあえずifconfigを使いたい。
以下参照。
https://qiita.com/s_makinaga/items/ce45f3e20b8edafab9dd

##IPアドレスの固定

##SSHの設定

smartctl,rsyncのインストール

$ yum install rsync

HDDのマウント

自動マウント設定のみ
https://qiita.com/bwtakacy/items/c181f661e8655c42d85a

所有者、パーミッションの変更

定期的にバックアップ・シャットダウン

以下のコマンドをroot権限にてcrontabに追加

#起動時にログを残す
@reboot /usr/bin/date >> /home/tororu/launchTime.txt

#平日朝3時にはシャットダウン
0 3 * * mon-fri /usr/sbin/shutdown -h now

# 毎日2時にrsyncによるバックアップ
0 2 * * * rsync -a --delete /mnt/main/ /mnt/bkp_main/

Dockerのインストール

Docker公式に載っている方法です。
https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce-1

# Dockerがすでに入っている場合削除
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine

# Dockerに必要なパッケージをインストール
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# レポジトリの追加
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# Dockerの最新版をインストール
$ sudo yum install docker-ce

私の環境だと、デフォルトゲートウェイの設定がなくなり、Dockerインストール後にネットワークへ繋がらなくなったため、/etc/sysconfig/networkを以下のように修正。

# cat /etc/sysconfig/network
# Created by anaconda
GATEWAY=192.168.11.1 #この行を追加。デフォルトゲートウェイのIPアドレスは各々の環境に設定

Dockerの起動といろいろ設定

# Dockerの起動
$ sudo systemctl start docker

# hello-worldコンテナの起動(Dockerがちゃんとインストールされたかテスト)
$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
d1725b59e92d: Pull complete
Digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
--以下略

# sudo不要とするためにdockerグループに現在のユーザを追加
$ sudo usermod -aG docker $USER

# sudo不要でdockerのコンテナが起動できることを確認
$ docker run hello-world

# 起動時に開始
$ sudo systemctl enable docker

これでDockerのコンテナを使う基盤が整いました!

SAMBAのコンテナを起動

コンテナのいいところは、OSにかかわらず機能単位でパッケージングできることです。
パッケージングの結果、単一機能のコンテナを作成し、他の人に配ることが可能となっています。
有志の方が作ったコンテナはいろいろなところで配布されていますが、以下のサイトを使うのがとりあえずいいでしょう。
https://hub.docker.com/
ここで"samba"と検索して一番上に出てきたdpersonさんが作ってくれたコンテナを今回は使用して行きたいと思います。

以下の条件でsambaサーバを構築したい場合、次のコマンドを実行します。

コンテナ名 samba
共有したいフォルダパス /mnt/pub
アクセスしたいユーザ名 foo
アクセスしたいユーザのパスワード bar
docker run --name samba -p 139:139 /
                        -p 445:445 /
                        -v /mnt/pub:/mnt/pub /
                        -d dperson/samba /
                        -s "pub;/mnt/pub;no;no;no;foo" /
                        -u "foo;bar"

・・・はい、これでSAMBAサーバの構築完了です。
Macからアクセスしてみましょう。
Finder > 移動 > サーバへ接続を選択(⌘K)

smb://<サーバのIPアドレス>/pub

で接続を押下し、ユーザ名:foo、パスワード:barで接続。
すると/mnt/pubのファイルが見えると思います。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?