LoginSignup
1
1

More than 1 year has passed since last update.

Docker Deskopを使ってGitLabを立ててみた

Posted at

はじめに

はじめてDockerに触れてみます。Docker Desktopを使ってGitLabを構築してみました。
今回は初めてなので、違いを知るためにコンテナ単体とcomposeと2パターンで試してみましたが
複数のコンテナを連携できて便利なので、今後はcomposeを使っていこうと思っています。

環境

Windowsのバージョン
エディション:Windows 10 Home
バージョン :20H2
OSビルド  :19042.928

Dockerのバージョン
PS C:\Users\xxx> docker version
Client:
 Cloud integration: 1.0.14
 Version:           20.10.6
 API version:       1.41
 Go version:        go1.16.3
 Git commit:        370c289
 Built:             Fri Apr  9 22:49:36 2021
 OS/Arch:           windows/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.6
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       8728dd2
  Built:            Fri Apr  9 22:44:56 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.4
  GitCommit:        05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc:
  Version:          1.0.0-rc93
  GitCommit:        12644e614e25b05da6fd08a38ffa0cfe1903fdec
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Docker Composeのバージョン
PS C:\Users\xxx> docker-compose version
docker-compose version 1.29.1, build c34c88b2
docker-py version: 5.0.0
CPython version: 3.9.0
OpenSSL version: OpenSSL 1.1.1g  21 Apr 2020

手順(コンテナ単体版)

流れ

  • gitlab-ceイメージの取得
  • 取得したイメージを使って、コンテナの作成と起動
  • しばらく待ってから、GitLabへアクセス

gitlab-ceイメージの取得

  • 実行するコマンド:docker pull gitlab/gitlab-ce:latest

gitlab/gitlab-ceはイメージ名、コロンに続くlatestがタグになります。
どんなタグがあるかというと、「Docker Hub」に載ってます。

PS C:\Users\xxx> docker pull gitlab/gitlab-ce:latest
latest: Pulling from gitlab/gitlab-ce
345e3491a907: Pull complete
~~省略~~
a5e82faf9eb6: Pull complete
Digest: sha256:3421d0b39f305bacf63176bf73760fe1352f352472c6f02e7a6b4b19365d73d6
Status: Downloaded newer image for gitlab/gitlab-ce:latest
docker.io/gitlab/gitlab-ce:latest

取得したイメージを使って、コンテナの作成と起動

  • フォーマット:docker run [オプション] イメージ名 [コマンド] [引数...]
  • 実行するコマンド:docker run -d -p 8080:80 --name gitlab gitlab/gitlab-ce:latest

-dはデタッチ。バックグラウンド起動です。
-p 8080:80でHostの8080ポートを、コンテナの80ポートに割り当てています。
--name gitlabは、起動するコンテナにgitlabという名前をつけています。

PS C:\Users\xxx> docker run -d -p 8080:80 --name gitlab gitlab/gitlab-ce:latest
33a2cdb39603140ac9c0bed339bf500a8063a1edad483d5e794a1f1adad73ea7

コンテナのステータスを確認すると、Hostの8080ポートがコンテナの80ポートに割り当たっていることや
NAMESgitlabになっていることが確認できます。

PS C:\Users\xxx> docker ps
CONTAINER ID   IMAGE                     COMMAND             CREATED          STATUS                             PORTS                                                    NAMES
33a2cdb39603   gitlab/gitlab-ce:latest   "/assets/wrapper"   19 seconds ago   Up 17 seconds (health: starting)   22/tcp, 443/tcp, 0.0.0.0:8080->80/tcp, :::8080->80/tcp   gitlab
P

手順(docker compose版)

次はdocker composeを使った手順です。

docker composeとは

docker composeとは、複数のコンテナからなるサービスを構築をする機能です。
docker-compose.ymlというファイルを用意して、コンテナごとに定義を用意してやり
docker-compose up -dを実行するだけで起動できます。

今回はgitlabの単一コンテナを例にした手順ですが、ゆくゆくgitlab runnerコンテナと連携して
CI/CDできる環境を構築するつもりなので、そういった時にdocker composeは便利になります。

流れ

  • docker-compose.ymlの用意
  • イメージの取得と、コンテナの作成と起動
  • ブラウザでアクセス

docker-compose.ymlの用意

docker-compose.ymlは、「ここ」に用意されています。
ほぼそのままですが、portを変更しています。

web:
  image: 'gitlab/gitlab-ce:latest'
  restart: always
  hostname: 'gitlab.example.com'
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'https://gitlab.example.com'
  ports:
    - '8080:80'
    - '443:443'
  volumes:
    - '/srv/gitlab/config:/etc/gitlab'
    - '/srv/gitlab/logs:/var/log/gitlab'
    - '/srv/gitlab/data:/var/opt/gitlab'

ディレクトリ構成はこんな感じ

PS D:\xxx\docker\gitlab> ls


    ディレクトリ: D:\xxx\docker\gitlab


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2021/05/16     15:48            368 docker-compose.yml

DockerComposeの状態確認

docker-compose psを実行して確認します。
まだ作成も起動もしていないので、何も現れません。

PS D:\xxx\docker\gitlab> docker-compose ps -a

Name   Command   State   Ports
------------------------------

コンテナの作成と起動

docker-compose up -dを実行します。
もし、イメージを取得してなければ、自動で取得してくれます。

(実行例)
docker-compose up -d

Docker Compose is now in the Docker CLI, try `docker compose up`

Pulling web (gitlab/gitlab-ce:latest)...
latest: Pulling from gitlab/gitlab-ce
a70d879fa598: Pull complete
(中略)
f02a0cd519df: Pull complete
Digest: sha256:526e5d4da70f1b19ca4b95e431b8383d42c1cae21af0a002331cbf3650a2e8d9
Status: Downloaded newer image for gitlab/gitlab-ce:latest
Creating docker_web_1 ... done

DockerComposeの状態確認

起動したコンテナが現れました。

(実行例)
docker-compose ps -a

    Name           Command               State                                       Ports
-----------------------------------------------------------------------------------------------------------------------
docker_web_1   /assets/wrapper   Up (health: starting)   0.0.0.0:22->22/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:8080->80/tcp

ブラウザでアクセス

数分待ってから、localhostにアクセス
どういうわけか443ポートだと接続できるんですが
8080ポートだとERR_EMPTY_RESPONSEとなって接続できない。
気が向いたら後日調べてみようと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1