質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

GitLab

GitLabは Gitoliteをブラウザから管理できるようにする Rubyアプリケーションで、 GitHubのようなサービスをクローズドな環境に独自で構築できるように 公開されたものです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Gitlab CE

GitLabのオープンソース版で、Community Editionのこと。 deb、rpmパッケージで提供されており、比較的簡単にインストールすることができます。

Q&A

解決済

2回答

5103閲覧

Dockerを利用したgitlab-ce,gitlab-runnerからDocker socket bindingでDockerを起動できない

KIRIN3

総合スコア28

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

GitLab

GitLabは Gitoliteをブラウザから管理できるようにする Rubyアプリケーションで、 GitHubのようなサービスをクローズドな環境に独自で構築できるように 公開されたものです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Gitlab CE

GitLabのオープンソース版で、Community Editionのこと。 deb、rpmパッケージで提供されており、比較的簡単にインストールすることができます。

0グッド

0クリップ

投稿2019/04/02 05:49

〇実現したいこと

プロキシ環境内でDockerを使用してgitlab-ce,gitlab-runnerを起動し、gitへのpushリクエストをトリガーに
Docker socket bindingにより、ホスト上のイメージを利用して、Dockerをホスト上で起動してテスト。
という流れを作りたいのですが、runnerがDockerを起動できません。
何か根本的に勘違いしている可能性もあります。
宜しくお願い致します。

以下、XXXXXはホストマシンのドメイン名で、YYYYYはプロキシのドメイン名です。

〇環境

Ubuntu : 18.04.2 LTS (Bionic Beaver)
Docker : 18.09.3
- gitlab/gitlab-ce : latest

  • gitlab/gitlab-runner : latest
  • docker : stable

〇Jobsのエラーメッセージ

Running with gitlab-runner 11.9.0 (692ae235) on My Docker Runner 1EKgmzep Using Docker executor with image docker:stable-git ... Starting service docker:stable-dind ... Using docker image sha256:b90ec7b4590e2638ed18d0afff2467a5eea36947c69439a188ed67c3d47e2ef2 for docker:stable-dind ... Waiting for services to be up and running... Using docker image sha256:9be5c3cd302ca36143bcd5cc02e5d973ea8f9ebe32f39d6fd36f2dd8d8942840 for docker:stable-git ... Running on runner-1EKgmzep-project-1-concurrent-0 via 5aa8213698cb... DEPRECATION: this GitLab server doesn't support refspecs, gitlab-runner 12.0 will no longer work with this version of GitLab Cloning repository... Cloning into '/builds/1EKgmzep/0/gitlab/example/test001'... Checking out 825a868b as master... Skipping Git submodules setup $ # Auto DevOps variables and functions # collapsed multi-line command $ setup_docker $ build Logging to GitLab Container Registry with CI credentials... WARNING! Using --password via the CLI is insecure. Use --password-stdin. Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) ERROR: Job failed: exit code 1

〇手順

#####・Docker設定
vi docker-compose.yml

version: '3' services: gitlab: image: 'gitlab/gitlab-ce:latest' restart: always container_name: gitlab hostname: 'XXXXX' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://XXXXX:10080/gitlab/' gitlab_rails['time_zone'] = 'Asia/Tokyo' ports: - '10080:10080' - '10443:443' - '10022:22' volumes: - '/gitlab/config:/etc/gitlab' - '/gitlab/logs:/var/log/gitlab' - '/gitlab/data:/var/opt/gitlab' gitlab-runner: image: 'gitlab/gitlab-runner:latest' restart: always tty: true container_name: gitlab-runner environment: - HTTP_PROXY=${HTTP_PROXY} - HTTPS_PROXY=${HTTP_PROXY} - NO_PROXY=${NO_PROXY} volumes: - '/gitlab/runner:/etc/gitlab-runner' - '/var/run/docker.sock:/var/run/docker.sock'

・ホスト環境変数

export HTTP_PROXY=http://YYYYY:3128/ export HTTPS_PROXY=http://YYYYY:3128/ export NO_PROXY=docker:2375,docker:2376

#####・起動
docker-compose up -d

#####・URLとtokenの取得
GitLabにアクセス
一般ユーザーアカウント作成、ログイン
一般ユーザーでグループ作成(example)
グループにプロジェクト作成(test001)
プロジェクト内のSettings → CI/CD → Runners
記載されているURLとtokenをコピー

URL:http://XXXXX:10080/gitlab/
token:tKd3dQz6KXCzakTkQRnG

#####・事前にテスト環境のイメージをダウンロード
docker pull docker:stable

#####・Runnerの環境設定

docker exec -it gitlab-runner gitlab-runner register -n \ --url http://XXXXX:10080/gitlab/ \ --registration-token tKd3dQz6KXCzakTkQRnG\ --executor docker \ --description "My Docker Runner" \ --docker-pull-policy "never" \ --docker-image "docker:stable" \ --docker-privileged \ --docker-volumes "/var/run/docker.sock:/var/run/docker.sock" \ --docker-volumes "/builds:/builds"

#####・連携を確認
GitLabにアクセス
プロジェクト内のSettings → CI/CD → Runnersに以下があることを確認

Runners activated for this project 1EKgmzep #1 My Docker Runner

を確認

#####・GitLab上のRunnerの設定
[Checked] Paused Runners don't accept new jobs
[Not checked] This runner will only run on pipelines triggered on protected branches
[Checked] Indicates whether this runner can pick jobs without tags
[Checked] When a runner is locked, it cannot be assigned to other projects
Tags は空

#####・gitに.gitlab.ymlを作成
☆とりあえず超シンプルな設定にします。
cd /gitlab/data/git-data/repositories/example/test001.git
vi .gitlab.yml

image: docker:stable - test example: stage: test script: - ls

#####・gitをpush
一般ユーザーアカウントにて
git clone http://XXXXX:10080/gitlab/example/test001.git
cd test001
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

gitlabのページで確認すると上記のエラー

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

.gitlab.ymlの位置が悪かったみたいです。
直接ファイルを追加でなく、リポジトリにpushすることで解決しました。

ご回答頂きありがとうございました。

投稿2019/04/25 10:34

KIRIN3

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

状況としましては、Dockerイメージを使ってコンテナを起動するため、Dockerイメージを取得しようとしていますが、通信できない状態です。
Docker(デーモン)をproxy配下で動かす場合は、HTTP・HTTPSのproxy設定が必要になります。
https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
まず、こちらのページにあるような設定が入っていて、docker pull hello-worldなど、イメージをpullできる状態かどうか設定確認されることをおすすめします。

投稿2019/04/19 12:12

zembutsu

総合スコア1584

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KIRIN3

2019/04/24 07:17

回答ありがとうございます。 返事が遅くなりすみません。 記載漏れですみませんが、Docker外で上記のURLのプロキシ設定は入れております。 # mkdir /etc/systemd/system/docker.service.d # vi /etc/systemd/system/docker.service.d/http-proxy.conf --------------------- [Service] Environment="HTTP_PROXY=http://YYYYY:3128/" Environment="HTTPS_PROXY=http://YYYYY:3128/" --------------------- # systemctl daemon-reload # systemctl restart docker もちろんDocker外ではdocker pull hello-worldも可能になっています。 Docker内で上記の設定はしておりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問