Written by TSUYOSHI

VPSなどサーバにDockerをインストールして稼働させる方法 【初心者向け解説】

Docker PROGRAMMING SERVER VPS

Docker初心者「Dockerを導入したいけど、サーバへのインストール方法が初めてでわからない。Dockerを入れたけど、正常に動かせていない。」

こういった人向けに、初心者でもわかるようサーバへDockerのインストールをする方法を解説します。
本記事ではCentOS7環境を前提としており、さくらVPS・GMO VPSなどのVPS、AWSなどサーバ上でDockerを動かすためのセットアップ方法を解説します。

本記事の内容

  • サーバへのDockerのインストールの解説
  • サーバへのdocker-compose インストールの解説

本記事を書いている僕は現役のエンジニアで、プログラマー歴4年です。
個人サービスの開発ではよくVPSを使っているのでサーバに関する経験値はあり、フロントエンドがメインのエンジニアとして初心者向けにわかりやすく解説しているので、初心者には参考になると思います。

Dockerインストールの解説

早速、インストール手順の紹介をします。
前提として、サーバの基本的な設定(OSインストール等)は済んでいて、サーバにログインできる状態であることとします。

CentOS Docker CE の入手

Docker公式の内容を参考にインストールを進めます。

古いバージョンをアンインストール

古いバージョンのDockerがインストールされていないかをチェックして、念の為アンインストールします。通常はDocker自体が入っていないので何も反応しないと思います。

$ sudo yum remove docker \
                  docker-common \
                  docker-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

以下の「–disable」は行わなくてもよいです。僕の場合は、edge testing リポジトリを無効化します。

$ sudo yum-config-manager --disable docker-ce-edge
$ sudo yum-config-manager --disable docker-ce-test

Docker CEインストール

最新版のDocker CEをインストールします。
バージョンを指定したい場合は、公式に方法が載っているのでそちらを参考にしてください。

$ sudo yum install docker-ce

Docker起動

インストールが完了したので、Dockerを起動します。

$ sudo systemctl start docker

Dockerの自動起動設定(サーバが再起動した時にDockerを自動起動するように設定)もします。

$ sudo systemctl enable docker

これでDockerのインストールが完了しました。
sudo docker ps」コマンドなどを実行して、動作するか確認してみてください。

Dockersudoなしで実行できるように、ユーザをDockerグループに追加する

Dockerコマンドを実行する際に、都度「sudo」を付けるのは面倒なので、つけなくていいようにします。
dockerグループが存在するか確かめます。

$ cat /etc/group | grep docker

※先のDocker CEインストールでdockerグループは作られているはずですが、もしdockerグループがない場合にはdockerグループを作ります。(sudo root権限にて実行)

# groupadd docker

以下のコマンドで現在ログインしているユーザーをdockerグループに追加します。ユーザー名の部分はdockerグループに追加したいユーザー名を指定します。

$ sudo usermod -aG docker 【ユーザー名】

例えば、Lightsailサーバにてcentosユーザでログインしている状態であれば「sudo usermod -aG docker centos」とします。

現在ログインしているユーザーのユーザー名は「whoami」コマンドで確認できます。

$ whoami

グループの一覧を表示して、dockerが表示されていることを確認します。

$ groups 【ユーザー名】

例えば、Lightsailサーバにてcentosユーザでログインしている状態であれば「groups centos」とします。

一旦、サーバからログアウトして抜けて、再度ログインします。これでDockerグループの変更をしたので、「sudo」なしで「docker」コマンドが実行できるようになっているはずです。
docker ps」コマンドなどを実行して、確認してみてください。

Dockerを扱うディレクトリの所有者とグループを変更する

ここの項目は余談になるので、必要な場合に設定してください。どのディレクトリにDocker関連のファイルを置くかによります。
例えばDocker関連のファイルを「/app」に設置するとします。
一例ですが、この場合にDockerで問題なく読み書きできるようグループを設定します。

$ sudo chown -R centos:docker /app

※ 「$ chown [オプション] [ユーザー]:[グループ] [ディレクトリやファイル]」でパーミッションを変更して対応するなどでもよいと思います。

Dockerインストール時の注意点

本ブログの記載手順どおりに進めれば問題ありませんが、注意点です。
「yum」でそのままインストール(「sudo yum -y install docker」でインストール)すると、どうやら古いバージョンのDockerがインストールされてしまうようです。公式の最新Docker-CEがインストールされるようにしましょう。

docker-compose インストールの解説

次にdocker-compose コマンドを使えるように、docker-compose をインストールします。
※以下docker-composeのバージョンが1.25.5の場合になりますので、摘便、バージョンを変更してください。

$ sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

たぶんインストール後にdockerが落ちた状態になるので、再度 「sudo systemctl start docker」でDockerを起動します。
ちなみに一度、サーバをログアウトしてSSHで入り直さないと正常に動作しない場合があったので、もしおかしいと思ったら、サーバへのログインをやり直してみてください。

次にdocker-compose を実行できるように、権限を付与します。

sudo chmod +x /usr/local/bin/docker-compose

docker-composeコマンドが使えるか確認します。

$ docker-compose --version

docker-compose sudo実行権限あたえる

docker-compose コマンドが、sudo で実行できないので、実行できるようにします。
sudo visudo」コマンドを実行して、visudoで以下の部分を編集します。具体的には「/usr/local/bin」を追加します。
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin」の部分を「Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/local/bin:/usr/bin」に書き換えます。

修正前)Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
修正後)Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/local/bin:/usr/bin

これで、sudodocker-composeコマンドの実行も、できるようになりました。

Dockerのセットアップが完了したので、これでdockerコマンドやdocker-composeコマンドを使えるようになります。サーバへのDockerインストールの解説は以上となります。少しでもお役に立てれば幸いです。