ときどきAnsible日記

主にITインフラ基盤の自動化に関する事を書いているブログです

Dockerのインストール

お疲れ様です。伊藤です。

今回Ansibleの環境を作る際に、実はDockerのコンテナを作成し、そのコンテナ上にAnsibleをインストールし管理サーバとしていました。コンテナであれば入れ替えか持ち出し、持ち込みも簡単ですしVMのように容量も食わないのでAnsibleを動作させるだけの環境には最適と考えたためです。インストールの順序としてはDockerのほうが先なのですが当ブログのメインであるAnsibleを先に記事にさせていただきました。

Dockerのインストールについて記載しますが、OSはRHEL7.3です。DockerについてはRHEL6には全く対応していません(正確には旧バージョンでは対応していたのですが。。。)というわけでRHEL7以上が必須になります。

インストールについてはインターネット環境がある場合は非常に簡単です。yumでOK。

# yum install docker -y

以上です。

※2017/8/31追記↓↓↓↓↓↓↓↓
yumでOkとか書いてますがこれだけだと基本的に不足です。DockerはExtrasチャンネルに入っていますのでこちらを有効にする必要があります。

# subscription-manager repos --enable=rhel-7-server-extras-rpms
リポジトリー 'rhel-7-server-extras-rpms' はこのシステムに対して有効になっています。

有効になっています、のメッセージが出ればOKなのですが、実はまだ罠があり、Developer Suite subscription(詳細はこちらをご参照くださいRedhatで開発者用の無料サブスクリプションを取得 - ときどきAnsible日記)を使用している場合エラーになる場合があります。その場合にはレッドハットポータルサイトにアクセスしてシステムにサブスクリプションが紐づいていることを確認してください。
下記のシステムをクリック
f:id:pj_doaa:20170831105631p:plain

システム名の横のドキュメントマークのとこが0だったらシステムとサブスクリプションが紐づいてません。システム名をクリックします。
f:id:pj_doaa:20170831105828p:plain

ここからサブスクリプションのアタッチを行ってください。
f:id:pj_doaa:20170831110026p:plain

※2017/8/31追記↑↑↑↑↑↑↑↑



これで下記のパッケージがインストールされます。

libseccomp-2.3.1-2.el7.x86_64.rpm
oci-register-machine-0-1.11.gitdd0daef.el7.x86_64.rpm
policycoreutils-python-2.5-11.el7_3.x86_64.rpm
audit-2.6.5-3.el7_3.1.x86_64.rpm
container-selinux-2.9-4.el7.noarch.rpm
policycoreutils-2.5-11.el7_3.x86_64.rpm
python-IPy-0.75-6.el7.noarch.rpm
docker-rhel-push-plugin-1.12.6-11.el7.x86_64.rpm
audit-libs-2.6.5-3.el7_3.1.x86_64.rpm
libsemanage-2.5-5.1.el7_3.x86_64.rpm
docker-common-1.12.6-11.el7.x86_64.rpm
docker-1.12.6-11.el7.x86_64.rpm
docker-client-1.12.6-11.el7.x86_64.rpm
yajl-2.0.4-4.el7.x86_64.rpm
skopeo-containers-0.1.18-1.el7.x86_64.rpm
audit-libs-python-2.6.5-3.el7_3.1.x86_64.rpm
libsemanage-python-2.5-5.1.el7_3.x86_64.rpm
libcgroup-0.41-11.el7.x86_64.rpm
setools-libs-3.3.8-1.1.el7.x86_64.rpm
oci-systemd-hook-0.1.4-9.git671c428.el7.x86_64.rpm
checkpolicy-2.5-4.el7.x86_64.rpm

オフラインでインストールする際には個別にRPMをダウンロードしてきて下記コマンドでインストール可能です。

rpm -i libseccomp-2.3.1-2.el7.x86_64.rpm
rpm -i oci-register-machine-0-1.11.gitdd0daef.el7.x86_64.rpm
rpm -i --nodeps policycoreutils-python-2.5-11.el7_3.x86_64.rpm
rpm -U --nodeps audit-2.6.5-3.el7_3.1.x86_64.rpm
rpm -i container-selinux-2.9-4.el7.noarch.rpm
rpm -U policycoreutils-2.5-11.el7_3.x86_64.rpm
rpm -i python-IPy-0.75-6.el7.noarch.rpm
rpm -i docker-rhel-push-plugin-1.12.6-11.el7.x86_64.rpm
rpm -U audit-libs-2.6.5-3.el7_3.1.x86_64.rpm
rpm -U libsemanage-2.5-5.1.el7_3.x86_64.rpm
rpm -i docker-common-1.12.6-11.el7.x86_64.rpm
rpm -i --nodeps docker-1.12.6-11.el7.x86_64.rpm
rpm -i docker-client-1.12.6-11.el7.x86_64.rpm
rpm -i yajl-2.0.4-4.el7.x86_64.rpm
rpm -i skopeo-containers-0.1.18-1.el7.x86_64.rpm
rpm -i audit-libs-python-2.6.5-3.el7_3.1.x86_64.rpm
rpm -i libsemanage-python-2.5-5.1.el7_3.x86_64.rpm
rpm -i libcgroup-0.41-11.el7.x86_64.rpm
rpm -i setools-libs-3.3.8-1.1.el7.x86_64.rpm
rpm -i oci-systemd-hook-0.1.4-9.git671c428.el7.x86_64.rpm
rpm -i checkpolicy-2.5-4.el7.x86_64.rpm

これでインストールは完了です。早速サービスを起動してDockerコンテナを作りましょう。

# service docker start

Dockerのコマンドが実行できれば正常に起動しています。試しにイメージを確認しましょう。

# docker images

イメージは何もないので表示されません。pullコマンドでRHELのイメージを取得しましょう。

# docker pull rhel7.3

下記のようになるはずです。

Using default tag: latest
Trying to pull repository registry.access.redhat.com/rhel7.3 ...
latest: Pulling from registry.access.redhat.com/rhel7.3
d55ab3b04d8b: Pull complete
b94f985aad49: Pull complete
Digest: sha256:110194a82bfc6d595637bb41fdff0434e1ff2c9e3cf592c83da2d352a3189116

改めてdocker imagesコマンドで確認するとRHEL7.3のイメージが登録されています。

REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
registry.access.redhat.com/rhel7.3   latest              41a4953dbf95        4 weeks ago        192.5 MB

こちらのイメージを使ってコンテナを作成します。

# docker run -it 41a4953dbf95  /bin/bash
[root@884cc61a30c5 /]#

プロンプトが変わればOKです。コンテナを作成し、接続しています。exitするとコンテナが停止します。psコマンドで先ほど作ったコンテナを見てみましょう。

[root@884cc61a30c5 /]# exit
exit
[root@RHEL7 ~]#
[root@RHEL7 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
884cc61a30c5        41a4953dbf95        "/bin/bash"         49 seconds ago      Exited (0) 5 seconds ago                        thirsty_curran
[root@RHEL7 ~]#

これでコンテナは停止している状態です。再度コンテナに接続したい場合はコンテナを起動、アタッチを行います。

[root@RHEL7 ~]# docker start 884cc61a30c5
884cc61a30c5
[root@RHEL7 ~]# docker attach 884cc61a30c5
[root@884cc61a30c5 /]#

docker startのオプションでそのままつなぐこともできるのですがうまく起動しないので私はこの方法を使っています。

以上です。お疲れ様でした。