#chiroito ’s blog

Java を中心とした趣味の技術について

Oracle Linux 上で docker を動かす

概要

Oracle Linux 7 update 2 (以降OL 7u2) をインストールし終わったところから、ローカルで docker を動かすところまでを紹介します。 また、会社等では HTTP のプロキシが使用されていると思いますので、docker が HTTP プロキシを使えるようにするところも紹介します。

Oracle Linux では Linux カーネルとしてOracle社によって独自にチューニングや機能強化を行った Unbreakable Enterprise Kernel (UEK) を使用しています。OL 7u2 は標準で UEK 3.8 を使用しますが、dockerを使うためには UEK 4.1.12 以降のバージョンでないと docker が動きません。そのため、UEK のバージョンアップをしてから docker をインストール、起動、動作確認をしていき、最後に HTTP プロキシの設定方法を紹介します。

Oracle Linux 7 update 3 では、カーネルは UEK 4 が標準でインストールされるため、UEK 4 を手動でインストールする作業は不要です。

UEK 4をインストールする

OL 7u2 では、UEK 3.8 がインストールされているので、UEK を 4.1.12 へアップデートします。最新の yum リポジトリのファイルをダウンロードした後に UEK 4.x を有効化します。次に、UEK を更新してから OS を再起動します。

作業についてはこちらをご確認下さい。
chiroito.hatenablog.jp

docker のインストールと起動の設定

yum を使用してdocker をインストールできるように設定をし、docker をインストールします。docker を起動し、OS の再起動時に立ち上がるように設定します。

yum を使用してdocker をインストールできるように docker 用のリポジトリファイルを作成します。
$ vim /etc/yum.repos.d/docker.repo

[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/oraclelinux/7
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg

dockerをインストールします。
$ yum install docker-engine

インストールされたことを確認します。
$ docker --version

Docker version 1.12.3, build 6b644ec

$ dockerd --version

Docker version 1.12.3, build 6b644ec

docker を起動します。
$ systemctl start docker.service

OSの再起動時に立ち上がるように設定します。
$ systemctl enable docker.service

参考:
https://docs.docker.com/engine/installation/linux/oracle/

動くか確認しましょう。

最初は root ユーザで動くか確認します。次に、user1 へ権限を付与して、動かせるかどうか確認しましょう。

root ユーザで動かせるかどうか確認します
$ docker run hello-world

Hello from Docker!
(略)

user1に権限の付与します。
$ usermod -aG docker user1

user1で動かせるかどうか確認します。
$ su - user1
$ docker run hello-world

Hello from Docker!
(略)

ここまでの作業で Oracle Linux 7 update 2 上で docker が使えるようになりました。

プロキシの設定

会社等では HTTP のプロキシが使用されていると思いますので、docker が HTTP プロキシを使えるようにするところも紹介します。 docker 用の設定ファイル置き場を作成して、そこにプロキシ設定用のファイルを作成します。 その後、設定を反映させてから docker を再起動します。

プロキシ設定用の設定ファイルを作成し、設定を書きます。
$ mkdir /etc/systemd/system/docker.service.d
$ vim /etc/systemd/system/docker.service.d/http-proxy.conf

Environment="HTTP_PROXY=http://<任意のプロキシのIPやホスト名>:<任意のプロキシのポート>/" "NO_PROXY=localhost,127.0.0.1"

設定を反映しましょう。
$ sudo systemctl daemon-reload

きちんと反映されたかを確認します。
$ systemctl show --property=Environment docker

Environment=HTTP_PROXY=http://<任意のプロキシのIPやホスト名>:<任意のプロキシのポート> / NO_PROXY=localhost,127.0.0.1

docker を再起動します。
$ sudo systemctl restart docker

$ docker run hello-world

Hello from Docker!
(略)

参考: https://docs.docker.com/engine/admin/systemd/