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日記)を使用している場合エラーになる場合があります。その場合にはレッドハットポータルサイトにアクセスしてシステムにサブスクリプションが紐づいていることを確認してください。
下記のシステムをクリック
システム名の横のドキュメントマークのとこが0だったらシステムとサブスクリプションが紐づいてません。システム名をクリックします。
ここからサブスクリプションのアタッチを行ってください。
※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のオプションでそのままつなぐこともできるのですがうまく起動しないので私はこの方法を使っています。
以上です。お疲れ様でした。