今回のテーマ:サーバをどうやって立てるか?
まずは最低限の環境で作成してその後問題点の改善やツールなどの追加を行っていこうと思います。
手っ取り早くサーバを立てるにはDockerが早いと思いDockerでまずサーバを立ててみようと思います。
そもそもDockerとはなんぞや?
wikipediaから引用
Docker(ドッカー[2])は、コンテナと呼ばれるOSレベルの仮想化(英語版)環境を提供するオープンソースソフトウェアである[3]。VMware製品などの完全仮想化を行うハイパーバイザ型製品と比べて、ディスク使用量は少なく、仮想環境 (インスタンス) 作成や起動は速く、性能劣化がほとんどないという利点を持つ。
書籍やサイトなどで概要をふわっと理解している感じだとホストOSであるLinuxのディストリビューションの中にコンテナ(VM)を作ってその中でプロセスを実施する仮想化技術。
環境をDockerfileのスクリプトによって構築できるため、環境構築や破棄など色々試すのに便利だったり、他のマシンへの移植性が高い。
Dockerのインストール
早速試していく、まずはパッケージマネージャからdockerをインストール
# Dockerのインストール
$ sudo apt install docker
# Dockerのバージョン確認
sudo docker version
# 実行結果
Client:
Version: 18.09.6
API version: 1.39
Go version: go1.10.8
Git commit: 481bc77156
Built: Sat May 4 02:35:29 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.6
API version: 1.39 (minimum version 1.12)
Go version: go1.10.8
Git commit: 481bc77
Built: Sat May 4 01:59:36 2019
OS/Arch: linux/amd64
Experimental: false
適当なディレクトリを作成して、そこで作業を行う
$ mkdir docker
$ cd docker
hello world!
dockerのコンテナを動かすにはまずイメージが必要になる。
イメージはコンテナを作成するにあたって必要なデータで、コンテナはイメージの情報をもとにコンテナを作成する。
ここではまず触りとしてすでに作成済みの”hello-world”イメージを使用してコンテナを作成する。
といっても自分で作成したわけではなく既に他の人がイメージを作成していて、Docker Hubというイメージ公開サイトがありそこから取得する。(イメージ版のgithubみたいな感じ)
# hello-wolrdのタグlatestを取得する
$ sudo docker image pull hello-world:latest
# 実行結果
latest: Pulling from library/hello-world
sha256:6540fc08ee6e6b7b63468dc3317e3303aae178cb8a45ed3123180328bcc1d20f
Status: Image is up to date for hello-world:latest
# イメージが追加されているか確認
$ sudo docker image ls
# 実行結果
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest fce289e99eb9 6 months ago 1.84kB
イメージの取得に成功すればあとは実行するだけ
# hello-worldイメージからコンテナを作成し実行
sudo docker container run hello-world
# 実行結果
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
# コンテナの状態を確認する
$ sudo docker container ps -a
# 実行結果
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
18ac55f80a9a hello-world "/hello" 26 seconds ago Exited (0) 25 seconds ago determined_snyder
これでhello world!ができた次回は自分でイメージを作成しているパターンを
実施してみようと思う。