- Docker版GitLabを32ビットUbuntuにインストールしようとした。
- GitLabのDokcerコンテナは64ビット前提。32ビット機では動かなかった。
- そもそもdocker未経験で、詳しくは知らない
そこに気づくまでに、いろいろと試行錯誤した覚書です。
gitlabのQAページに答えがありました。
gitlab / gitlab-ceコンテナはx86_64アーキテクチャ用に構築されています。x86_64アーキテクチャーを持つシステムでコンテナーを実行する必要があります。 ジェラルド・ヒッキー(日本語訳)
あぁ、検証機は32ビット機でした。がっくり…。
でも、dockerインストールのフィーリングはつかめたので、一応記事として残しておくことにします。
結果、dockerコマンドを使う練習くらいにはなったのでOK。
docker pullで、gitlabコンテナイメージをダウンロード
GitLab Community Editionのページには、docker pullコマンドだけがサラッと書いてあります。
なんのこっちゃ、これどうすんの?
とりあえずdockerの基礎をざっくり学びました。
学んだ私が解説すると、こう。
- gitlabをインストールするには、まずdockerコマンドをインストールせよ。
- そしたら、「docker pull gitlab/gitlba-ce」ってコマンドを適当なフォルダで実行しろ。
- dockerコンテナイメージがダウンロードされるから
- dockerコマンドでコンテナイメージを実行しろ
まあ、docker慣れしたあとに見ると、ああいつものアレね、って感じだけど、初見では「お前はナニを言っているんだ」としか思えません。しょうがないけど。
手元のUbuntu環境には一応dockerコマンドをインストールしてみました。
% sudo docker pull gitlab/gitlab-ce
Using default tag: latest
latest: Pulling from gitlab/gitlab-ce
e80174c8b43b: Pull complete
d1072db285cc: Pull complete
858453671e67: Pull complete
3d07b1124f98: Pull complete
1abbbf4783f5: Pull complete
38a43d00563b: Pull complete
8bbea5a60f40: Pull complete
176bd574f7c7: Pull complete
a8646c9c80ee: Pull complete
089fe821c806: Extracting [=====================> ] 317.5 MB/722.9 MB
しばらく待つと、以下の表示。
Digest: sha256:88f1bcc39aa9917ac4b19022af441b64265d50e1f0c0fa2616d29a2cb82fb41a Status: Downloaded newer image for gitlab/gitlab-ce:latest
ダウンロードが完了したようです。えー?どこにダウンロードされたんだろう?
docker imagesコマンドで確認できるっぽいです。
% sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gitlab/gitlab-ce latest 0e39d6e67b26 10 hours ago 1.8 GB
1.8GBもあるのか…。コンテナイメージというのは、デカいもんだなぁ。
なんとなくフィーリングでdocker pullしましたが、ここから何をどうやっていいのかわからないので、素直にインストール手順を見直すことにします。
GitLab Community Editionのインストール手順
GitLabのdockerベースのインストール手順はこちら。
DockerイメージからGitLab環境を構築(GitLab&Runner) #Docker – Qiita
最初に以下のコマンドを実行すれば、必要なイメージを勝手にダウンロードしてくれたっぽいです。
docker runでエラー コンテナを再利用したくば削除せよ
実行してみます。
sudo docker run --detach --hostname gitlab.example.com --publish 443:443 --publish 80:80 --publish 22:22 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab --volume /srv/gitlab/logs:/var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest
えーと、0.0.0.0のポート番号22がすでに使われてる、っていうエラーがでました。
sudo docker run --detach
> --hostname gitlab.example.com
> --publish 443:443 --publish 80:80 --publish 22:22
> --name gitlab
> --restart always
> --volume /srv/gitlab/config:/etc/gitlab
> --volume /srv/gitlab/logs:/var/log/gitlab
> --volume /srv/gitlab/data:/var/opt/gitlab
> gitlab/gitlab-ce:latest
898f5744759fdc2ba96a4ad98870b53f7960e4919ba6a11bdfc0ca931300b272
docker: Error response from daemon: driver failed programming external connectivity on endpoint gitlab (4f934b29bcb2bfd766243017958ae6ab71aa1b9e39b2a16978c1fbfff7edce4c):
Error starting userland proxy: listen tcp 0.0.0.0:22: bind: address already in use.
たしかに、hostnameとかサンプルのままだし、名前解決できずに0.0.0.0になっちゃったのかな。
検証機のホスト名は「ubuntu」だったので、hostnameのところだけ書き換えます。
sudo docker run --detach
--hostname ubuntu
--publish 443:443 --publish 80:80 --publish 22:22
--name gitlab
--restart always
--volume /srv/gitlab/config:/etc/gitlab
--volume /srv/gitlab/logs:/var/log/gitlab
--volume /srv/gitlab/data:/var/opt/gitlab
gitlab/gitlab-ce:latest
そしたら、このエラー。
すでに名前を使われているから、削除せよとのこと。
docker: Error response from daemon: Conflict. The container name "/gitlab" is already in use by container 898f5744759fdc2ba96a4ad98870b53f7960e4919ba6a11bdfc0ca931300b272. You have to remove (or rename) that container to be able to reuse that name..
あー、これ、フィーリングでdocker pullやっちゃったからだ。
docker imagesで表示、docker rmiでイメージ削除
削除しよう。
docker imagesでダウンロード済みイメージのリストをを出して、IMAGE ID指定でdocker rmiで削除…
またエラー。
% sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE gitlab/gitlab-ce latest 0e39d6e67b26 10 hours ago 1.8 GB % sudo docker rmi 0e39d6e67b26 Error response from daemon: conflict: unable to delete 0e39d6e67b26 (must be forced) - image is being used by stopped container 898f5744759f
停止済みのコンテナで使われていると。
docker psで使用中のコンテナを確認
えーと、使われているコンテナを見るのは、docker psか。実行。
% sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
あれ、何も表示されないんですけど。さらに調べると、停止しているものも含めて全て表示させるには、docker ps -aを実行するみたいです。
% sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 898f5744759f gitlab/gitlab-ce:latest "/assets/wrapper" 21 minutes ago Created gitlab
出ました。
docker container pruneで停止したコンテナを全削除
えーと、停止しているコンテナを全て削除するには、docker container pruneで行けるみたいです。(ただし、dockerバージョン1.13以降)
% sudo docker container prune WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N] y Deleted Containers: 898f5744759fdc2ba96a4ad98870b53f7960e4919ba6a11bdfc0ca931300b272 99f1413e610d8f4146afdfae30aaa9629d2d5e6eefa08906e5a00c67d6b11c52 c6f4a369357e5a1fed19a75e9b7c0b18f161772abe7ab60d3262afbd9bf65216 e3d359d319da5429cfdd73f72ac0ff061d150c4d2e7d5677d67dd2ad854a612f 028aa506a8c4d350134ea5dd1ea2c12e311c611ac18a8d0cd4bad93961986027 8023af36fd43fd21f990215850a65057154321344e9ef16dfc429152cab66e3f 36c3af73bc8a553a205e896aba43e61fbe4ffea466ffd82e07fed2922a6fdb07 5671b7b44dd2cf1e2ca5ce9eb0dca257b3aa84e990834f1fb9752218d73e0f59 30773bd4e9b85b4bfdec503f0b72295d20b726f825c2214f06d022f4c6d6783f a13769864f3c95125bb493895acc764fecca4b5c06992d0c334faedd089a1dcd 63dfe0002a4a0a65164fa492d1c3092f418f160189f5960219a3b4cbcab5ff20 f808c978609bcd21f0e8325b0ebfdd22ed4adecd6fc8c36860fbffe084c8684b Total reclaimed space: 2.363 GB
コマンド実行後、本当に良いか?という問いに「y」と入力して、完全に消えました。
Ubuntuでポート22がbindできないエラー
改めて、先ほどのコマンドを実行します。
sudo docker run --detach
> --hostname ubuntu
> --publish 443:443 --publish 80:80 --publish 22:22
> --name gitlab
> --restart always
> --volume /srv/gitlab/config:/etc/gitlab
> --volume /srv/gitlab/logs:/var/log/gitlab
> --volume /srv/gitlab/data:/var/opt/gitlab
> gitlab/gitlab-ce:latest
d60fb4c085ca6e0c34286ce672e6770bcde95f68ece44930aa7af594d6200c77
docker: Error response from daemon: driver failed programming external connectivity on endpoint gitlab (fc3f0cd09234610c081ec8e3627dbd03ce2c6b8befc2bd82e51d3f2e6eb6e62f):
Error starting userland proxy: listen tcp 0.0.0.0:22: bind: address already in use.
えーと、また0.0.0.0のポート22が使用済みって出てます。なんじゃこりゃ。
publish指定を削除して実行したら動きました。
publish指定から、22を外しました。
% sudo docker run --detach --hostname ubuntu --publish 443:443 --publish 80:80 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab --volume /srv/gitlab/logs:/var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest 602efddeee788018f415a25ee77e304598693490325e960e443c12e0b1afb274
よし動いた!?
動いてんのかな?
docker logsでログ確認 exec format error
dockerのログを確認するコマンドで見てみます。
sudo docker logs -f gitlab standard_init_linux.go:178: exec user process caused "exec format error" standard_init_linux.go:178: exec user process caused "exec format error" standard_init_linux.go:178: exec user process caused "exec format error" standard_init_linux.go:178: exec user process caused "exec format error" standard_init_linux.go:178: exec user process caused "exec format error" standard_init_linux.go:178: exec user process caused "exec format error" standard_init_linux.go:178: exec user process caused "exec format error"
exec format error? なにやら致命的。
実は、コンテナの動作前提が64ビットというオチなのでした。