Submit Search
Upload
オンプレでPrivate Registry使ったDockerイメージの運用について
•
4 likes
•
2,575 views
YASUKAZU NAGATOMI
Follow
Docker Meetup Kansai #3 オンプレでPrivate Registry使ったDockerイメージの運用について
Read less
Read more
Technology
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 15
Recommended
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
いまさら聞けないselectあれこれ
いまさら聞けないselectあれこれ
lestrrat
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
Takayuki Shimizukawa
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
Recommended
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
いまさら聞けないselectあれこれ
いまさら聞けないselectあれこれ
lestrrat
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
Takayuki Shimizukawa
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
Motonori Shindo
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
NTT DATA Technology & Innovation
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
NTT DATA Technology & Innovation
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
Visual Studio を使わず .NET する
Visual Studio を使わず .NET する
m ishizaki
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
Pythonとパッケージングと私
Pythonとパッケージングと私
Atsushi Odagiri
トランクベース開発を活用して爆速に開発した話
トランクベース開発を活用して爆速に開発した話
Tier_IV
Protocol Buffers 入門
Protocol Buffers 入門
Yuichi Ito
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
hamaken
レシピの作り方入門
レシピの作り方入門
Nobuhiro Iwamatsu
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
NTT DATA Technology & Innovation
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -
zgock
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
Shohei Okada
Marp Tutorial
Marp Tutorial
Rui Watanabe
Docker実践入門
Docker実践入門
hiro nemu
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
npsg
More Related Content
What's hot
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
Motonori Shindo
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
NTT DATA Technology & Innovation
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
NTT DATA Technology & Innovation
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
Visual Studio を使わず .NET する
Visual Studio を使わず .NET する
m ishizaki
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
Pythonとパッケージングと私
Pythonとパッケージングと私
Atsushi Odagiri
トランクベース開発を活用して爆速に開発した話
トランクベース開発を活用して爆速に開発した話
Tier_IV
Protocol Buffers 入門
Protocol Buffers 入門
Yuichi Ito
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
hamaken
レシピの作り方入門
レシピの作り方入門
Nobuhiro Iwamatsu
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
NTT DATA Technology & Innovation
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -
zgock
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
Shohei Okada
Marp Tutorial
Marp Tutorial
Rui Watanabe
What's hot
(20)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Visual Studio を使わず .NET する
Visual Studio を使わず .NET する
Docker Tokyo
Docker Tokyo
Pythonとパッケージングと私
Pythonとパッケージングと私
トランクベース開発を活用して爆速に開発した話
トランクベース開発を活用して爆速に開発した話
Protocol Buffers 入門
Protocol Buffers 入門
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
レシピの作り方入門
レシピの作り方入門
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
Marp Tutorial
Marp Tutorial
Similar to オンプレでPrivate Registry使ったDockerイメージの運用について
Docker実践入門
Docker実践入門
hiro nemu
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
npsg
Dockerハンズオン
Dockerハンズオン
啓介 大橋
Rails初心者レッスン lesson5 2edition
Rails初心者レッスン lesson5 2edition
Satomi Tsujita
Docker超入門
Docker超入門
Katsunori Kanda
Building production server on docker
Building production server on docker
Hiroshi Miura
Building production server on docker
Building production server on docker
Hiroshi Miura
GitLab + Dokku で作る CI/CD 環境
GitLab + Dokku で作る CI/CD 環境
Kazuhiro Nishiyama
Fig
Fig
Tadayasu Yotsu
Docker Swarm入門
Docker Swarm入門
Masahito Zembutsu
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
Dockerの導入
Dockerの導入
regret raym
Sinatra and heroku for mac
Sinatra and heroku for mac
Naoyuki Mitsuboshi
ラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaS
npsg
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
linzhixing
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
辰徳 斎藤
start Heroku
start Heroku
Hazuki Wakabayashi
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
20150101勉強会 dokku alt
20150101勉強会 dokku alt
Shugo Numano
Docker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレ
peryaudo
Similar to オンプレでPrivate Registry使ったDockerイメージの運用について
(20)
Docker実践入門
Docker実践入門
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
Dockerハンズオン
Dockerハンズオン
Rails初心者レッスン lesson5 2edition
Rails初心者レッスン lesson5 2edition
Docker超入門
Docker超入門
Building production server on docker
Building production server on docker
Building production server on docker
Building production server on docker
GitLab + Dokku で作る CI/CD 環境
GitLab + Dokku で作る CI/CD 環境
Fig
Fig
Docker Swarm入門
Docker Swarm入門
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Dockerの導入
Dockerの導入
Sinatra and heroku for mac
Sinatra and heroku for mac
ラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaS
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
start Heroku
start Heroku
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
20150101勉強会 dokku alt
20150101勉強会 dokku alt
Docker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレ
More from YASUKAZU NAGATOMI
コンテナ化から始めてKubernetesクラスタ管理にRancherを使うまで〜前編〜
コンテナ化から始めてKubernetesクラスタ管理にRancherを使うまで〜前編〜
YASUKAZU NAGATOMI
RancherとGitOps的な話
RancherとGitOps的な話
YASUKAZU NAGATOMI
Cloud Native をやっていくにはどう学んでいくかをみんなで考えてみる
Cloud Native をやっていくにはどう学んでいくかをみんなで考えてみる
YASUKAZU NAGATOMI
コンテナイメージの脆弱性スキャンについて
コンテナイメージの脆弱性スキャンについて
YASUKAZU NAGATOMI
オンプレ Rancher Server × ML基盤 をはじめます
オンプレ Rancher Server × ML基盤 をはじめます
YASUKAZU NAGATOMI
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
YASUKAZU NAGATOMI
ざっくり始めるCloud Native開発
ざっくり始めるCloud Native開発
YASUKAZU NAGATOMI
Webアプリ開発向け ゆるふわDocker使いが Cloud Naive開発に必要なetc.
Webアプリ開発向け ゆるふわDocker使いが Cloud Naive開発に必要なetc.
YASUKAZU NAGATOMI
データ分析基盤として Rancher・k8s で始まるのか調査してみた
データ分析基盤として Rancher・k8s で始まるのか調査してみた
YASUKAZU NAGATOMI
続Rancherで始めるRedmine生活~Redmineのプライベートカタログを作ってみた~
続Rancherで始めるRedmine生活~Redmineのプライベートカタログを作ってみた~
YASUKAZU NAGATOMI
Rancherで始めるRedmine生活 ~ Redmineのプライベートカタログを作ってみた~
Rancherで始めるRedmine生活 ~ Redmineのプライベートカタログを作ってみた~
YASUKAZU NAGATOMI
redashのプラベートカタログ作成してつまづいたアレやコレや
redashのプラベートカタログ作成してつまづいたアレやコレや
YASUKAZU NAGATOMI
オンプレ&HTTP Proxyな環境でRancherOS入れてみた話
オンプレ&HTTP Proxyな環境でRancherOS入れてみた話
YASUKAZU NAGATOMI
Kichijoji-mini #010:うちの残念な開発環境を正常な状態にするには?
Kichijoji-mini #010:うちの残念な開発環境を正常な状態にするには?
YASUKAZU NAGATOMI
PM Beginners #06 : MTGの理想と現実
PM Beginners #06 : MTGの理想と現実
YASUKAZU NAGATOMI
プロジェクトマネジメントと開発を両立したい!
プロジェクトマネジメントと開発を両立したい!
YASUKAZU NAGATOMI
PM Beginners #3:メンバの考えていること、共有できてます?
PM Beginners #3:メンバの考えていること、共有できてます?
YASUKAZU NAGATOMI
技術的負債だらけのチームで技術マネージメントしてみた Kichijoji.pm7[talk2]
技術的負債だらけのチームで技術マネージメントしてみた Kichijoji.pm7[talk2]
YASUKAZU NAGATOMI
More from YASUKAZU NAGATOMI
(18)
コンテナ化から始めてKubernetesクラスタ管理にRancherを使うまで〜前編〜
コンテナ化から始めてKubernetesクラスタ管理にRancherを使うまで〜前編〜
RancherとGitOps的な話
RancherとGitOps的な話
Cloud Native をやっていくにはどう学んでいくかをみんなで考えてみる
Cloud Native をやっていくにはどう学んでいくかをみんなで考えてみる
コンテナイメージの脆弱性スキャンについて
コンテナイメージの脆弱性スキャンについて
オンプレ Rancher Server × ML基盤 をはじめます
オンプレ Rancher Server × ML基盤 をはじめます
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
ざっくり始めるCloud Native開発
ざっくり始めるCloud Native開発
Webアプリ開発向け ゆるふわDocker使いが Cloud Naive開発に必要なetc.
Webアプリ開発向け ゆるふわDocker使いが Cloud Naive開発に必要なetc.
データ分析基盤として Rancher・k8s で始まるのか調査してみた
データ分析基盤として Rancher・k8s で始まるのか調査してみた
続Rancherで始めるRedmine生活~Redmineのプライベートカタログを作ってみた~
続Rancherで始めるRedmine生活~Redmineのプライベートカタログを作ってみた~
Rancherで始めるRedmine生活 ~ Redmineのプライベートカタログを作ってみた~
Rancherで始めるRedmine生活 ~ Redmineのプライベートカタログを作ってみた~
redashのプラベートカタログ作成してつまづいたアレやコレや
redashのプラベートカタログ作成してつまづいたアレやコレや
オンプレ&HTTP Proxyな環境でRancherOS入れてみた話
オンプレ&HTTP Proxyな環境でRancherOS入れてみた話
Kichijoji-mini #010:うちの残念な開発環境を正常な状態にするには?
Kichijoji-mini #010:うちの残念な開発環境を正常な状態にするには?
PM Beginners #06 : MTGの理想と現実
PM Beginners #06 : MTGの理想と現実
プロジェクトマネジメントと開発を両立したい!
プロジェクトマネジメントと開発を両立したい!
PM Beginners #3:メンバの考えていること、共有できてます?
PM Beginners #3:メンバの考えていること、共有できてます?
技術的負債だらけのチームで技術マネージメントしてみた Kichijoji.pm7[talk2]
技術的負債だらけのチームで技術マネージメントしてみた Kichijoji.pm7[talk2]
オンプレでPrivate Registry使ったDockerイメージの運用について
1.
オンプレでPrivate Registry使った Dockerイメージの運用について Docker Kansai
#3 やっさん @yassan168
2.
オンプレのDockerイメージ運用 Webhook Trigger Status API Deployment
API docker push ぷるりくえすと Auth & Registry Service
3.
Portusについて OpenSUSEが開発するOSS。 Docker Registryの認証とフロントエンド機能を持つ。 Portus以外では、CNCFホストの vmware
の Harbor が有名です。 また、最近ではP2Pを使ってスケーラブルにイメージを配信出来る CNCFホストの Alibaba の Dragonfly や Uber の Kraken があります。
4.
Portusの構成について CVE データベース 脆弱性情報を同期 Portus (Web UI) Nginx (Proxy) PostgreSQL Portus (Background) Web UI Registry Service User/Team/Namespace /Image一覧/etcの更新 Image一覧の同期 脆弱性スキャン 脆弱性 情報の取得
5.
JenkinsでGitHubのOrganizationを監視する 右図の様に itemにOrganization名を入 れ、 「GitHub Organization」 を選択する ※「Pull Request
Builder Plugin」を利用している Organization名を記入
6.
JenkinsでGitHubのOrganizationを監視する APIエンドポイントや クレデンシャルを選択。 OKボタン押下すると初回のス キャンが実行される。 これ以降は、Jenkinsfileがあれば 実行の対象となる。
7.
CircleCIでも良いじゃん? オンプレで執事のお世話をする事で以下のメリットが得られる(強がり) • CircleCIで対応していない BuildKitが使える! •
すぐにビルドを実行出来る!待たない! • リソースの許す限り、好きなだけコンテナ増やし放題 BuildKitと言えば、、KubeConEUでNTTの須田さんから発表ありましたね Container Build縛り会とか面白そう。。。
8.
Dockerfile FROM openjdk:8-jdk : ARG GIT_REVISION=unknown ARG
GIT_ORIGIN=unknown ARG IMAGE_NAME=unknown LABEL git-revision=$GIT_REVISION git-origin=$GIT_ORIGIN image-name=$IMAGE_NAME Dockerイメージの情報を付加 トレース用にLABELを用意し、 ARGを使って環境変数で差し替え 出来るようにする。
9.
Makefile NAME := hoge REVISION
:= $(shell git rev-parse --short HEAD) ORIGIN := $(shell git remote get-url origin | sed -e 's/^.*@//g') TAGS := $(REVISION) RELEASE_TAGS := 0.1.1 prod $(REVISION) REGISTRY := registry.yassan.local USER := yassan .PHONY: revision revision: @echo $(REVISION) .PHONY: test test: @python -m unittest test/test_config.py @python -m unittest test/validate_config.py .PHONY: test-with-docker test-with-docker: @docker run -w /tmp/test -v `pwd`:/tmp/test $(REGISTRY)/$(USER)/$(NAME):$(REVISION) make test .PHONY: build build: @docker build --build-arg GIT_REVISION=$(REVISION) --build-arg GIT_ORIGIN=$(ORIGIN) --build-arg IMAGE_NAME=$(REGISTRY)/$(USER)/$(NAME) $(addprefix -t $(REGISTRY)/$(USER)/$(NAME):,$(TAGS)) . .PHONY: push push: @for TAG in $(TAGS); do docker push $(REGISTRY)/$(USER)/$(NAME):$$TAG; done .PHONY: release release: @make build TAGS="$(RELEASE_TAGS)" @make push TAGS="$(RELEASE_TAGS)"
10.
Makefile NAME := hoge REVISION
:= $(shell git rev-parse --short HEAD) ORIGIN := $(shell git remote get-url origin | sed -e 's/^.*@//g') TAGS := $(REVISION) RELEASE_TAGS := 0.1.1 prod $(REVISION) REGISTRY := registry.yassan.local USER := yassan .PHONY: revision revision: @echo $(REVISION) .PHONY: test test: @python -m unittest test/test_config.py @python -m unittest test/validate_config.py .PHONY: test-with-docker test-with-docker: @docker run -w /tmp/test -v `pwd`:/tmp/test $(REGISTRY)/$(USER)/$(NAME):$(REVISION) make test .PHONY: build build: @docker build --build-arg GIT_REVISION=$(REVISION) --build-arg GIT_ORIGIN=$(ORIGIN) --build-arg IMAGE_NAME=$(REGISTRY)/$(USER)/$(NAME) $(addprefix -t $(REGISTRY)/$(USER)/$(NAME):,$(TAGS)) . .PHONY: push push: @for TAG in $(TAGS); do docker push $(REGISTRY)/$(USER)/$(NAME):$$TAG; done .PHONY: release release: @make build TAGS="$(RELEASE_TAGS)" @make push TAGS="$(RELEASE_TAGS)" REVISIONとORIGINはコマンドで取得。 取得したものをdocker build時に埋め込む
11.
Makefile NAME := hoge REVISION
:= $(shell git rev-parse --short HEAD) ORIGIN := $(shell git remote get-url origin | sed -e 's/^.*@//g') TAGS := $(REVISION) RELEASE_TAGS := 0.1.1 prod $(REVISION) REGISTRY := registry.yassan.local USER := yassan .PHONY: revision revision: @echo $(REVISION) .PHONY: test test: @python -m unittest test/test_config.py @python -m unittest test/validate_config.py .PHONY: test-with-docker test-with-docker: @docker run -w /tmp/test -v `pwd`:/tmp/test $(REGISTRY)/$(USER)/$(NAME):$(REVISION) make test .PHONY: build build: @docker build --build-arg GIT_REVISION=$(REVISION) --build-arg GIT_ORIGIN=$(ORIGIN) --build-arg IMAGE_NAME=$(REGISTRY)/$(USER)/$(NAME) $(addprefix -t $(REGISTRY)/$(USER)/$(NAME):,$(TAGS)) . .PHONY: push push: @for TAG in $(TAGS); do docker push $(REGISTRY)/$(USER)/$(NAME):$$TAG; done .PHONY: release release: @make build TAGS="$(RELEASE_TAGS)" @make push TAGS="$(RELEASE_TAGS)" TAGSに空白区切りで記述して、 イメージタグを複数付けている
12.
Jenkinsfile pipeline { agent any stages
{ stage('Test build') { steps { sh 'make build' sh 'make push' } } stage('Test') { steps { sh 'make test-with-docker' } } stage('Docker release') { when { branch 'master' } steps { sh 'make release' } Makefileだけでdocker buildやpushが 出来るので、Jenkinsfileが非常に簡単 になる。 また、Makefileで構成しているので、 他のCIツールなどへの移行も楽にな る。
13.
今日の発表について オンプレのDockerイメージの運用についてご紹介 • DockerレジストリにOpenSUSEのPortus • GitHubとJenkinsの連携(PR運用) •
Jenkins Build PipelineでDockerイメージのビルドを自動化 • ビルドの自動化の際の工夫:Makefileによるビルドの簡略化
14.
おまけ
15.
参考情報 • Portus Official
Docker image • dockerをbuildする際のMakefile - Qiita • Pull Request Builder PluginをJenkinsに導入する - Qiita • JenkinsとGitHubを使ったCI実践ガイド | GitHub Resources • [KubeConEU] Building images efficiently and securely on Kubernetes with BuildKit • Blue Ocean • coreos/clair • Clairで、Dockerイメージの脆弱性スキャンを試す - CLOVER🍀 • Harbor • Dragonfly • uber/kraken • 複数のDockerイメージを単一リポジトリで管理する - Qiita