オフライン環境のDockerでGluesyncを実行


Gluesyncは評価用に事前構成されたdocker-compose.ymlを提供しています。

そのため、これをDocker composeが使用できる環境に配置してdocker compose up -dを実行すれば下記のように自動的にインターネット上のリポジトリからイメージをpull(ダウンロード)してきます。

しかし、当然ことながらこれはオフライン環境では下記のようにエラーで失敗します。

climb@offlinetest:~/gluesync-docker$ docker compose up -d
[+] Running 7/7
 ! grafana                         Interrupted      0.0s 
 ✘ prometheus Error                Get "https://registry-1.docker.io/v2/": dial tcp: lookup registry-1.docker.io on [::1]:53: read udp [::1]:40746->[::1]:53: read: connection refused  0.0s 
 ! gluesync-chronos                Interrupted      0.0s 
 ! gluesync-core-hub               Interrupted      0.0s 
 ! reverse-proxy                   Interrupted      0.0s 
 ! gluesync-postgresql-cdc-target  Interrupted      0.0s 
 ! gluesync-ibm-iseries-source     Interrupted      0.0s 
Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp: lookup registry-1.docker.io on [::1]:53: read udp [::1]:40746->[::1]:53: read: connection refused

このため、オフライン環境で使用する場合、事前にコンテナのイメージを配置しておく必要があります。今回はdocker savedocker loadコマンドを使用してこれを実施する方法を紹介します。

オンライン環境でのイメージ取得

オンライン環境のDockerにて評価キットから展開したgluesync-dockerディレクトリへ移動し、docker compose pullを実行し、イメージを取得します。

climb@step:~$ cd gluesync-docker/
climb@step:~/gluesync-docker$ docker compose pull
[+] Pulling 57/57
 ✔ gluesync-ibm-iseries-source Pulled         28.4s 
 ✔ gluesync-chronos Pulled                    31.4s 
 ✔ gluesync-postgresql-cdc-target Pulled      37.1s 
 ✔ prometheus Pulled                           1.9s 
 ✔ grafana Pulled                              1.9s 
 ✔ reverse-proxy Pulled                       22.3s 
 ✔ gluesync-core-hub Pulled                    1.9s 

問題なく取得できていればdocker image lsでイメージを確認できます。

climb@step:~/gluesync-docker$ docker image ls
REPOSITORY                       TAG       IMAGE ID       CREATED        SIZE
molo17/gluesync-core-hub         latest    d75160f6137f   31 hours ago   499MB
molo17/gluesync-ibm-iseries      latest    a683d17a7de0   31 hours ago   488MB
molo17/gluesync-postgresql-cdc   latest    60addcb8cba6   31 hours ago   483MB
molo17/gluesync-chronos          latest    cf964252e130   38 hours ago   633MB
grafana/grafana                  latest    75006c93b887   5 days ago     722MB
prom/prometheus                  latest    a3bc50fcb50f   9 days ago     313MB
traefik                          v3.3      ff8877338069   2 months ago   224MB

イメージはdocker saveコマンドで保存できますが、複数あるため、今回は下記のbulksave.shスクリプトでsavesフォルダにまとめて保存するようにします。

#!/bin/sh
set -e
mkdir -p saves
docker images --format "{{.Repository}}:{{.Tag}} {{.Repository}}_{{.Tag}}" | while read image
do
  image_id=`echo $image | cut -d ' ' -f1`
  image_name=`echo $image | cut -d ' ' -f2 | tr -d "/"`

  docker save $image_id > ./saves/${image_name}.tar
done

スクリプトを実行するとsavesフォルダにまとめて保存されています。このスクリプトでは存在しているすべてのイメージを保存しますので、必要に応じてdocker imagesコマンドに–filterオプションを追加し、不要なイメージは除外するように変更してください。

climb@step:~/gluesync-docker$ chmod 755 bulksave.sh 
climb@step:~/gluesync-docker$ ./bulksave.sh
climb@step:~/gluesync-docker$ ls saves
grafanagrafana_latest.tar  molo17gluesync-chronos_latest.tar  molo17gluesync-core-hub_latest.tar  molo17gluesync-ibm-iseries_latest.tar  molo17gluesync-postgresql-cdc_latest.tar  promprometheus_latest.tar  traefik_v3.3.tar

この保存したイメージも含めてオフライン環境にgluesync-dockerディレクトリごとコピーします。

climb@step:~/gluesync-docker$ scp -r ../gluesync-docker climb@192.168.77.77:/home/climb/
climb@192.168.77.77's password: 
core-hub-metrics.json                      100%   38KB  13.2MB/s   00:00
dashboard.yml                              100%  291   383.3KB/s   00:00
datasource.yml                             100%  180   321.3KB/s   00:00
gluesync.com.jks                           100% 3068     3.5MB/s   00:00
gs-license.dat                             100%  868   953.1KB/s   00:00
bootstrap-core-hub.json                    100%   76   111.3KB/s   00:00
prometheus.yml                             100%  401   646.5KB/s   00:00
molo17gluesync-core-hub_latest.tar         100%  481MB 186.1MB/s   00:02
molo17gluesync-postgresql-cdc_latest.tar   100%  466MB 186.4MB/s   00:02
traefik_v3.3.tar                           100%  214MB 149.5MB/s   00:01
promprometheus_latest.tar                  100%  300MB 225.8MB/s   00:01
grafanagrafana_latest.tar                  100%  698MB 176.2MB/s   00:03
molo17gluesync-chronos_latest.tar          100%  617MB 229.2MB/s   00:02
molo17gluesync-ibm-iseries_latest.tar      100%  471MB 155.6MB/s   00:03
certs.yml                                  100%  151    96.1KB/s   00:00
traefik.yml                                100%  342   177.1KB/s   00:00
logback.xml                                100% 1267   757.4KB/s   00:00
gluesync-cert.pem                          100% 1974     1.5MB/s   00:00
grafanagrafana_latest.tar                  100%  698MB 166.9MB/s   00:04
security-config.json                       100%  293   244.0KB/s   00:00
docker-compose.yml                         100% 8878     6.7MB/s   00:00
gluesync-key.pem                           100% 1849     1.2MB/s   00:00
bulksave.sh                                100%  284   483.6KB/s   00:00

オフライン環境でのイメージのロード

コピーしたgluesync-dockerディレクトリに移動します。

climb@step:~/gluesync-docker$ ssh 192.168.77.77
climb@192.168.77.77's password: 
Linux offlinetest 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Jul 24 10:50:55 2025 from 192.168.77.79
climb@offlinetest:~$ cd gluesync-docker/

一つずつ保存したイメージのtarをdocker loadコマンドで読み込むこともできますがここでは下記のスクリプトでまとめて読み込んでします。

climb@offlinetest:~/gluesync-docker$ cat bulkload.sh 
#!/bin/sh
for file in saves/*.tar; do
  docker load -i "$file"
done
climb@offlinetest:~/gluesync-docker$ chmod 755 bulkload.sh 
climb@offlinetest:~/gluesync-docker$ ./bulkload.sh 
08000c18d16d: Loading layer [==================================================>]  8.121MB/8.121MB
a79fd921bc73: Loading layer [==================================================>]   2.56kB/2.56kB
9cc7b6091a3e: Loading layer [==================================================>]   8.67MB/8.67MB
97b6092cb34c: Loading layer [==================================================>]  26.55MB/26.55MB
47ef72cb0b55: Loading layer [==================================================>]  223.2kB/223.2kB
41cfb2f3b7e1: Loading layer [==================================================>]  111.1kB/111.1kB
e1b6356de126: Loading layer [==================================================>]  394.2MB/394.2MB
0e16bb8c20c8: Loading layer [==================================================>]  294.1MB/294.1MB
4d1cec8ac292: Loading layer [==================================================>]  37.89kB/37.89kB
c27dd65cf52a: Loading layer [==================================================>]   5.12kB/5.12kB
Loaded image: grafana/grafana:latest
7cc7fe68eff6: Loading layer [==================================================>]  77.88MB/77.88MB
0a00f6ce5fb7: Loading layer [==================================================>]  9.561MB/9.561MB
943faa7467a0: Loading layer [==================================================>]  47.51MB/47.51MB
d22cc68b10d7: Loading layer [==================================================>]   5.12kB/5.12kB
5a0f38a32659: Loading layer [==================================================>]  1.536kB/1.536kB
07ba18ad0976: Loading layer [==================================================>]  13.83MB/13.83MB
124b774a0b12: Loading layer [==================================================>]  4.096kB/4.096kB
15583e9073b8: Loading layer [==================================================>]  9.728kB/9.728kB
1b460b1eb790: Loading layer [==================================================>]  39.42kB/39.42kB
25873ba4bfe3: Loading layer [==================================================>]  175.6kB/175.6kB
21f0912ce811: Loading layer [==================================================>]   2.56kB/2.56kB
2ffe43ddab52: Loading layer [==================================================>]  4.608kB/4.608kB
18a78bb070bd: Loading layer [==================================================>]  4.096kB/4.096kB
7dba9bb060c8: Loading layer [==================================================>]  19.97kB/19.97kB
a91e752ef628: Loading layer [==================================================>]    255kB/255kB
6b46174d5e90: Loading layer [==================================================>]  9.216kB/9.216kB
f43d597bacf0: Loading layer [==================================================>]  25.09kB/25.09kB
5f70bf18a086: Loading layer [==================================================>]  1.024kB/1.024kB
74877e0efd6a: Loading layer [==================================================>]  57.21MB/57.21MB
189e5c7c2d81: Loading layer [==================================================>]  384.1MB/384.1MB
0e358b9565d7: Loading layer [==================================================>]  69.63kB/69.63kB
46c609cd3326: Loading layer [==================================================>]   56.7MB/56.7MB
Loaded image: molo17/gluesync-chronos:latest
8d853c8add5d: Loading layer [==================================================>]  77.83MB/77.83MB
bec6e6f75d3a: Loading layer [==================================================>]  350.6MB/350.6MB
64833d7e8df2: Loading layer [==================================================>]   20.9MB/20.9MB
6fa85aa38ed6: Loading layer [==================================================>]  489.5kB/489.5kB
5721c53402cb: Loading layer [==================================================>]  6.774MB/6.774MB
14e212539af1: Loading layer [==================================================>]  24.06kB/24.06kB
d71eb2cc9fff: Loading layer [==================================================>]  2.048kB/2.048kB
805690ba64f0: Loading layer [==================================================>]  3.072kB/3.072kB
91fe7aa6c83a: Loading layer [==================================================>]  3.072kB/3.072kB
21556ecc8350: Loading layer [==================================================>]  3.584kB/3.584kB
db18493ecfca: Loading layer [==================================================>]  3.584kB/3.584kB
b0dd230dcb86: Loading layer [==================================================>]  47.64MB/47.64MB
5f70bf18a086: Loading layer [==================================================>]  1.024kB/1.024kB
c82aaef265b1: Loading layer [==================================================>]  3.584kB/3.584kB
Loaded image: molo17/gluesync-core-hub:latest
fb4a92957d0c: Loading layer [==================================================>]   20.9MB/20.9MB
41f27d21f926: Loading layer [==================================================>]  489.5kB/489.5kB
eb69e4939385: Loading layer [==================================================>]  6.774MB/6.774MB
3162aeb41db4: Loading layer [==================================================>]  24.06kB/24.06kB
8bc5a96ce609: Loading layer [==================================================>]  2.048kB/2.048kB
c534fb8b0541: Loading layer [==================================================>]  3.072kB/3.072kB
8d45e791d0a1: Loading layer [==================================================>]  3.072kB/3.072kB
367c68a25e66: Loading layer [==================================================>]  3.584kB/3.584kB
3fcc70161be9: Loading layer [==================================================>]  3.584kB/3.584kB
76a88d2ac879: Loading layer [==================================================>]  36.75MB/36.75MB
5f70bf18a086: Loading layer [==================================================>]  1.024kB/1.024kB
dc765fd0e258: Loading layer [==================================================>]  3.584kB/3.584kB
Loaded image: molo17/gluesync-ibm-iseries:latest
8c10cec765ff: Loading layer [==================================================>]   20.9MB/20.9MB
27e5aab6aead: Loading layer [==================================================>]  489.5kB/489.5kB
8f647a62c02e: Loading layer [==================================================>]  6.774MB/6.774MB
7cb9b54cf4e6: Loading layer [==================================================>]  24.06kB/24.06kB
e1c67e777fed: Loading layer [==================================================>]  2.048kB/2.048kB
6746c71279b3: Loading layer [==================================================>]  3.072kB/3.072kB
835b1bee674f: Loading layer [==================================================>]  3.072kB/3.072kB
76ba3ab2a760: Loading layer [==================================================>]  3.584kB/3.584kB
8b5bb6db1f76: Loading layer [==================================================>]  3.584kB/3.584kB
0addd6c13f8f: Loading layer [==================================================>]   31.8MB/31.8MB
5f70bf18a086: Loading layer [==================================================>]  1.024kB/1.024kB
49ad86643221: Loading layer [==================================================>]  3.584kB/3.584kB
Loaded image: molo17/gluesync-postgresql-cdc:latest
1e604deea57d: Loading layer [==================================================>]  1.458MB/1.458MB
6b83872188a9: Loading layer [==================================================>]  2.455MB/2.455MB
51058541ddde: Loading layer [==================================================>]  159.4MB/159.4MB
aced3db9898b: Loading layer [==================================================>]  150.7MB/150.7MB
735c0da4fd32: Loading layer [==================================================>]  4.096kB/4.096kB
349de0ee3a82: Loading layer [==================================================>]  13.31kB/13.31kB
f19ace59c2b4: Loading layer [==================================================>]  5.632kB/5.632kB
5797eee2097b: Loading layer [==================================================>]  62.46kB/62.46kB
bd712c1df0b0: Loading layer [==================================================>]  1.536kB/1.536kB
83608e9fa217: Loading layer [==================================================>]  5.632kB/5.632kB
Loaded image: prom/prometheus:latest
31b41022049d: Loading layer [==================================================>]  1.688MB/1.688MB
3eae8a7fbd15: Loading layer [==================================================>]  215.1MB/215.1MB
3fc935bcee95: Loading layer [==================================================>]  2.048kB/2.048kB                                                                                                                
climb@offlinetest:~/gluesync-docker$ 

loadが完了すると下記のようにイメージが読み込まれていることがわかります。

climb@offlinetest:~/gluesync-docker$ docker image ls
REPOSITORY                       TAG       IMAGE ID       CREATED        SIZE
molo17/gluesync-core-hub         latest    d75160f6137f   32 hours ago   499MB
molo17/gluesync-ibm-iseries      latest    a683d17a7de0   32 hours ago   488MB
molo17/gluesync-postgresql-cdc   latest    60addcb8cba6   32 hours ago   483MB
molo17/gluesync-chronos          latest    cf964252e130   39 hours ago   633MB
grafana/grafana                  latest    75006c93b887   5 days ago     722MB
prom/prometheus                  latest    a3bc50fcb50f   9 days ago     313MB
traefik                          v3.3      ff8877338069   2 months ago   224MB

この状態であれば、インターネットから取得しなくとも、これらのイメージがすでに利用できますのでdocker compose up -dでコンテナを起動できます。

climb@offlinetest:~/gluesync-docker$ docker compose up -d
[+] Running 8/8
 ✔ Network gluesync-docker_default                             Created   0.1s 
 ✔ Container gluesync-docker-gluesync-core-hub-1               Started   0.4s 
 ✔ Container gluesync-docker-reverse-proxy-1                   Started   0.5s 
 ✔ Container gluesync-docker-prometheus-1                      Started   0.8s 
 ✔ Container gluesync-docker-gluesync-postgresql-cdc-target-1  Started   0.8s 
 ✔ Container gluesync-docker-gluesync-chronos-1                Started   1.0s 
 ✔ Container gluesync-docker-gluesync-ibm-iseries-source-1     Started   0.9s 
 ✔ Container gluesync-docker-grafana-1                         Started   1.2s 
関連したトピックス

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.