Written by TSUYOSHI

CentOSにDocker・docker-composeをインストールして使えるようにする方法

Docker SERVER VPS

CentOSにDockerをインストールする方法をお伝えします。

この記事を書いている僕はフロントエンドのエンジニアでして、個人でサービスを作る時にDockerをよく使うのですが、毎回、Dockerのインストール方法を忘れてしまうので、自分の備忘録がてら、この記事を書いています。

この記事を読むことによって、初心者でもCentOS上にDockerとdocker-composeをインストールして使えるようになります。

Linuxの基本操作は分かっているものとし、VPS(AWS Lightsail・さくらVPS等)などサーバの契約は済ませていて、CentOSのインストールはされているものとして進めます。
今回はコマンドはCentOS7を対象に解説しています。

CentOSにDocker・docker-composeをインストールして使えるようにする方法


最初に結論を書くと以下の通りです。

Dockerのインストール

以下を順番に実行します。

$ sudo yum remove docker docker-common docker-selinux docker-engine
$ 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
$ sudo yum install docker-ce -y
$ sudo systemctl start docker
$ sudo systemctl enable docker

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
$ sudo chmod +x /usr/local/bin/docker-compose

順番に解説していきます。

CentOS用 Docker CE をインストールする

本記事の通りにすれば問題ありませんが、Docker公式の情報も参考になります。

sudo yum -y install docker コマンドでインストールすると古いDockerがインストールされてしまうみたいなので、公式のDocker-CE最新がインストールされるようにします。

コマンドを書いてある順番に実行していってください。

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

通常は不要ですが、古いバージョンのDockerをアンインストールします。
sudo yum remove docker docker-common docker-selinux docker-engine を実行。

$ sudo yum remove docker \
docker-common \
docker-selinux \
docker-engine
※「\」バックスラッシュを入れると複数行に分けてコマンドを書けます。

2.必要なパッケージをインストールします

sudo yum install -y yum-utils device-mapper-persistent-data lvm2 でインストール。

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3.リポジトリのセットアップをします

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo でセットアップ。

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

以下の--enableオプションは、通常は実行せずに何もしなくて問題ありません。

もし、エッジ版やテスト版を有効にしたい場合はコマンドで –enableオプションにより有効にします。
$ sudo yum-config-manager --enable docker-ce-edge
$ sudo yum-config-manager --enable docker-ce-test
有効にした後に無効にしたい場合は–disableオプションで無効にしてください。
$ sudo yum-config-manager --disable docker-ce-edge

4.Docker CEをインストール

sudo yum install docker-ce -y でDocker CEの最新版をインストールします。

$ sudo yum install docker-ce -y

5.Docker起動

sudo systemctl start docker で、Dockerの起動をします。

$ sudo systemctl start docker

docker --version で、dockerが起動しているかどうか確認してみましょう。バージョンが表示されるはずです。

$ sudo docker --version
Docker version 19.03.13, build 4484c46d9d

6.Dockerの自動起動も設定する

CentOSが再起動した時に自動的にDockerが立ち上がるようにsudo systemctl enable dockerで設定します。

$ sudo systemctl enable docker

これでDockerのインストールは完了です。

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

次にプログラムを置くディレクトリ配下にてsudoなしでDockerが実行できるようにしていきます。一般ユーザーでdockerコマンドをいちいちsudo付けて実行するのは面倒だと思いますので。
これは必要に応じて、設定してください。

1.dockerグループが存在するか確かめる

cat /etc/group | grep docker コマンドでdockerというグループが存在するかを確認します。

$ cat /etc/group | grep docker
通常はdockerというグループはdocker ceをインストールしているので、既に存在しているはずです。もしdockerグループがない場合にはdockerグループを作ってください。(rootにて実行)
# groupadd docker

2.現在ログイン中のユーザーをdockerグループに追加します

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

$ sudo usermod -aG docker ユーザー名
ちなみに現在ログインしているユーザー名がわからない場合は以下のコマンドで確認できます。
$ whoami

グループの一覧が表示されるので、dockerが表示されていることを$ groups ユーザー名で確認します。(ユーザー名の部分はsshでログインしているユーザー名で置き換えてください)

$ groups ユーザー名

3.Dockerを扱うディレクトリの所有者とグループを変更する
今回は例として、root直下の /app 以下にアプリケーションを配置する前提で進めます。/appは例なので、ご自身の環境に読み替えてください。

sudo mkdir /appでディレクトリを作成して、$ sudo chown -R ユーザー名:docker /appで権限グループを変更します。
ex) ユーザー名がcentosなら sudo chown -R centos:docker /app となります

$ sudo mkdir /app
$ sudo chown -R ユーザー名:docker /app

これで、sudoなしでdockerコマンドが/app配下では可能になります。

4.dockerを再度、起動する

この設定後にdockerが落ちた状態になっていると思うので、再度 sudo systemctl start docker で起動します。

sudo systemctl start docker

dockerコマンドが効かなれければ一旦sshで入り直す

また、もしdockerコマンドが正常に動作しなければ、一旦ログアウトしてsshで入り直してください。dockerグループに入れていなくてdockerコマンド打てない場合があります。

docker-compose のインストール

1.docker-composeインストール

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-composeをgithubからダウンロードします。
ちなみに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

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

sudo chmod +x /usr/local/bin/docker-composeのコマンドで実行権限を与えます。

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

docker-composeが正常に動作するかをバージョン情報の表示 $ docker-compose --version で確認します。

$ docker-compose --version

docker-compose をsudo で実行できるようにする

docker-composeをインストールしても、そのままだとsudoで実行できないため、sudoで実行できるように対応しておきます。

$ sudo visudo を実行して以下の部分を編集します。Defaults secure_path/usr/local/binを追加する修正です。

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

これでdocker-composesudoでも実行できるようになります。

まとめ

Dockerのインストール

以下を順番に実行するだけ。

$ sudo yum remove docker docker-common docker-selinux docker-engine
$ 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
$ sudo yum install docker-ce -y
$ sudo systemctl start docker
$ sudo systemctl enable docker

docker-compose のインストール

以下を順番に実行するだけ。

$ 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
$ sudo chmod +x /usr/local/bin/docker-compose

ご参考になれば幸いです。

※当サイトでは一部のリンクについてアフィリエイトプログラムを利用して商品を紹介しています