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が途中で止まる »
この記事へのコメントは終了しました。
« CentOS7上にgitlabのdockerコンテナを作成して動作させる | トップページ | CentOS6 Dockerイメージを--privilegedモードで動かすとinitが途中で止まる »
コメント