« CentOS7上にgitlabのdockerコンテナを作成して動作させる | トップページ | CentOS6 Dockerイメージを--privilegedモードで動かすとinitが途中で止まる »

2014/12/07

CentOS6上にgitlabのdockerコンテナを作成して動作させる

昨日CentOS7上で環境構築したのですが、実際に使用するのはCentOS6だということが今日分かり、再度構築手順を見直しました。

CentOS 6.5 (x86_64) - Release Media 上で行っています(yum updateしたのでバージョンはCentOS6.6になりました)。

昨日のCentOS7と合わせてcentosというユーザを作っています。余談ですが、紹介される手順だと作成したユーザでsshログインできないですね。authorized_keysファイルをコピーした後、

# chmod -R og-wrx /home/ec2-user/.ssh

をする必要があります。

 

CentOS7の時と異なり、SELinuxを無効化して、--privileged オプションを使用しないようにしています。理由は別のエントリで記載します。

また、postgresqlの使用するメモリ(shared_buffer)設定値をかなり小さくしています。デフォルト値だとpostgresがエラーとなり初期設定を完了させられないためです。

 

以降、本題です。

Dockerのインストールと初期設定

取り敢えずupdate。

$ sudo yum update -y

 

EPELからdockerパッケージを取得してインストール。

$ sudo yum install -y epel-release

$ sudo yum install -y docker-io

(バージョン1.3なので、docker execが使用できます!)

 

SELinuxを無効化。

$ sudo setenforce 0

またその他、 /etc/selinux/config 開き、SELINUXの値をpermissiveに変更する。

 

dockerサービスの起動。及び、OS起動時の自動起動設定。

$ sudo service docker start

$ sudo chkconfig dokcer on

 

CentOS7のときと同様、dockerグループにcentosユーザを所属させ、ログインし直し。

 

gitlabのインストール

CentOS7と違ってオフィシャルイメージからすぐgitlabコンテナを作成できます。

 

コンテナを起動。

$ mkdir /home/centos/gitlabdata

$ docker run -d -p 80:80 -p 44:44 -v /home/centos/gitlabdata:/var/opt/gitlab --name gitlab centos:centos6 /sbin/init

 

起動したコンテナに入る。

$ docker exec -i -t gitlab /bin/sh

 

言語設定(参考)。

# localedef -vc -i ja_JP -f UTF-8 ja_JP.UTF-8

 

公式に記載されている通り追加のパッケージを導入。

# yum install -y openssh-server postfix cronie

 

/etc/ssh/sshd_conf を編集し、44番ポートで待ち受けるように変更。

 

/etc/pam.d/sshd を編集します(参考: ubuntu - Why is it needed to set `pam_loginuid` to its `optional` value with docker? - Stack Overflow)。

session    required     pam_loginuid.so

という行のrequiredをoptionalに変更し、下記のようにします。

session    optional     pam_loginuid.so

 

サービスを起動。

# service postfix start

# chkconfig postfix on

# service sshd start

# chkconfig sshd on

 

gitlibパッケージをインストール(最新版のURLは公式ページを参照してください)。

# curl -O https://downloads-packages.s3.amazonaws.com/centos-6.6/gitlab-7.5.1_omnibus.5.2.0.ci-1.el6.x86_64.rpm

# rpm -ivh gitlab-7.5.1_omnibus.5.2.0.ci-1.el6.x86_64.rpm

 

/etc/gitlab/gitlab.rb を開き、external_urlの値を 'http://<IPアドレス>' とでもしておきます。

また、44番ポートを使用するようにするため、下記を追記します(参考: GitLab で使用する SSH のポート番号を変更する | バシャログ。)。

gitlab_rails['gitlab_shell_ssh_port'] = 44

同じく/etc/gitlab/gitlab.rb ファイルに、postgresの仕様メモリ量設定を小さい値にします(参考。実際に使用する際にはこの設定は小さすぎるかもしれませんが、大きくしても問題が発生しないようにする方法をまだ調べられていません[文末に追記有])。

postgresql['shared_buffers'] = "16MB"

 

gitlabの設定を実行。

# gitlab-ctl reconfigure

 

以上で完了。webブラウザでec2インスタンスにhttpアクセスすればgitlabスタートページが表示されるはず。

初期id,passwordは公式サイトに記載がある通りそれぞれ root と 5iveL!fe 。

 

追記:

Dockerコンテナ内でPostgreSQLを動かす場合のshared_buffers設定について、やはりよくぶち当たる問題のようで、検索するといくつか対処方法が書いてありました。

Docker 1.0 でDBを動かすときの共有メモリの設定 - 技術野郎の復習

こちらのページでは2つの方法が記載されています。

  • kernel.shmmaxを変更する。そのために/procを書き込み可能にして再マウントする。
  • lxcドライバを使用する

 

まず前者の/procの再マウントなのですが、permission deniedと言われてできませんでした… --privileged オプションを付けてコンテナを起動すれば可能なのですが、CentOS6 Dockerイメージを--privilegedモードで動かすとinitが途中で止まる: 発火後忘失 で書いた通り、なぜかinitが途中で止まるので今回は採れない手段なのです。

 

次に後者なんですが、こちらもinitが途中で止まってしまいました。なのでshmmaxの値が変更できるのかどうかは確認していません。

ちなみにCentOSでlxcドライバを使用したい場合は、 /etc/sysconfig/docker を開き、other_argsに --exec-driver=lxcを設定し

other_args=--exec-driver=lxc

と編集した後dockerサービスを再起動すれば良いです(リンク先解説の通りdocker info コマンドで実行ドライバは確認できます)。

 

従って、結局、16MBのまま運用しております。

« CentOS7上にgitlabのdockerコンテナを作成して動作させる | トップページ | CentOS6 Dockerイメージを--privilegedモードで動かすとinitが途中で止まる »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/18902/60775856

この記事へのトラックバック一覧です: CentOS6上にgitlabのdockerコンテナを作成して動作させる:

« CentOS7上にgitlabのdockerコンテナを作成して動作させる | トップページ | CentOS6 Dockerイメージを--privilegedモードで動かすとinitが途中で止まる »

other sites

  • follow us in feedly
  • github
  • stackoverflow

ソフトウェアエンジニアとして影響を受けた書籍

  • Christain Bauer: HIBERNATE イン アクション

    Christain Bauer: HIBERNATE イン アクション
    理論と実践が双方とも素晴らしい製品であるHibernate。本書はそのプロダクトを書名に冠していますが、Hibernateを使うつもりがなく、ORマッピングの解説書として読むにしても十分な良書です。Second EditionとしてJava Persistence With Hibernateという書籍も出版されていますが、残念ながら現在のところ 和訳はされていません。-インアクションは2.xの、Java Persistence-は3.1の頃のものなので、最新版とはちょっと違うところもあることに注意。 (★★★★★)

  • アンドリュー・S・タネンバウム: 分散システム 原理とパラダイム 第2版

    アンドリュー・S・タネンバウム: 分散システム 原理とパラダイム 第2版
    クライアント/サーバシステムを構築する上で必要となる知識が総論されてます。Web技術者も、フレームワーク部分を開発するのであれば必読。 (★★★★★)

  • Joel Spolsky∥著: ジョエル・オン・ソフトウェア

    Joel Spolsky∥著: ジョエル・オン・ソフトウェア
    前述の書籍「ソフトウエア開発プロフェッショナル」をより砕いたもの、という感じでしょうか。 前書きではプログラマでなくSE向けの本のように書かれているが、プログラマが読んでも面白い本であると思われます。 SEになった新人(あるいはそういう会社に入る/入りたての人)にとっては、これからどういったことが仕事を遂行していく上で起こりえるのか、どのように考えて行なっていけばいいのか決定する助けになると思います。 元は″Joel on Software″というブログの記事で、web上でも一部日本語で読めます。 http://japanese.joelonsoftware.com/ (★★★)

  • ドナルド・C・ゴース,ジェラルド・M・ワインバーグ: ライト、ついてますか

    ドナルド・C・ゴース,ジェラルド・M・ワインバーグ: ライト、ついてますか
    問題解決(一昔前のの流行語で言うところの『ソリューション』)能力は、システムエンジニアのスキルとして備えるべきもののうちのひとつです。しかし、これは難しい。学校で出されるテストと違い、唯一の、(問題提出者が想定している)解を求めるだけが「問題解決」では無いからです。そもそも、何が問題なのか、それは本当に問題なのか、それは本当に解決すべき問題なのか、その問題解決方法は正しいのか、などを解決しなければ、「その解は正しいのか」に辿りつくことができません。この本の最も良いところのひとつは、本があまり厚くないこと。すぐに読めるし、何回も読み返す気になるでしょう。 (★★★★★)

  • スティーブ・マコネル: ソフトウエア開発プロフェッショナル

    スティーブ・マコネル: ソフトウエア開発プロフェッショナル
    コードコンプリートで有名なスティーブマコネルの著書。新人SEに読んで欲しい。個人として業界の中でどうあるべきか、組織としてどうあるべきか、SEのプロ意識とは?SEの心構え概論、といったところでしょうか。また、業界における資格の重要性についても説かれています。この業界では資格が特に軽んじられる傾向がありますが、この傾向はどんな弊害をもたらすのか、将来的にこの業界は資格に対してどのような姿勢で臨んでいくべきなのか。日経BP社では(他の出版社もだが)最近、似たような類いのあまり面白くない書籍が乱出版されていますが、この本は別格だと思うので安心して購入して欲しいと思います。 (★★★★★)

無料ブログはココログ