CentOS7にDocker環境を構築する

備忘録的に、CentOS7にDocker環境を構築する方法をメモ

事前準備

yumの更新

$ sudo yum update
$ sudo yum upgrade

公式リポジトリの追加

$ 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 CEのインストール

Docker CE 公式ドキュメント

特定のバージョンをインストールする場合

# 利用可能なバージョンの一覧を確認
$ yum list docker-ce.x86_64  --showduplicates | sort -r

docker-ce.x86_64            17.06.ce-1.el7.centos             docker-ce-stable

$ sudo yum install -y docker-ce-<有効なバージョン文字列>

最新版をインストールする場合

$ sudo yum install -y docker-ce 

Docker Composeのインストール

Docker Compose 公式ドキュメント

Docker Composeの最新版はGithubのリリースページを参照

github.com

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# ダウンロードしたバイナリに、実行可能権限を付与
$ chmod +x /usr/local/bin/docker-compose

# version確認
$ docker-compose --version

Dockerの起動

$ sudo systemctl start docker

# OS起動時にDockerが自動起動するよう設定
$ systemctl enable docker

Dockerコンテナの立ち上げ

ディレクトリ作成

$ mkdir docker-node
$ cd docker-node/

Docker Compose定義

version: '3'

services:
  app:
    image: node:lts # バージョン指定も可能 ex. node:12.16.1
    container_name: docker-node # 任意のコンテナ名
    tty: true
    volumes:
      - ./src:/src
    working_dir: "/src"

ここでdocker-compose up -d を実行すると以下のエラー文が表示される

ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

Dockerの権限がrootにのみ与えられていることが原因のエラーなので、以下で対処

  • sudoを使う
  • dockerコマンド実行用のグループを作成して、通常ユーザを加える

「dockerコマンド実行用のグループを作成して、通常ユーザを加える」で対応

# まずはdockerグループが作られているか確認
$ cat /etc/group | grep docker
docker:x:992: # Dockerインストール時にdockerグループが作成されている

現在ログイン中のユーザをdockerグループに追加

$ sudo usermod -aG docker $USER

# ユーザーがグループに追加されているか確認
$ groups $USER
opc : opc adm wheel systemd-journal docker

ログアウトしてdocker-compose up -d を試してみると無事コンテナの作成に成功

$ docker-compose up -d
Creating network "docker-node_default" with the default driver
Pulling app (node:lts)...
lts: Pulling from library/node
81fc19181915: Pull complete
ee49ee6a23d1: Pull complete
828510924538: Pull complete
a8f58c4fcca0: Pull complete
33699d7df21e: Pull complete
923705ffa8f8: Pull complete
c214b6cd5b8c: Pull complete
4c73d8285dba: Pull complete
1c58ef740d94: Pull complete
Creating docker-node ... done

参考URL