DockerHubにアクセスできないサーバーにDiscourseをインストールする

@sam サム、私の会社は現在Docker Hubをブロックしています。複数の環境でDocker for Discourseを実行しており、アップグレードが必要です。当然ながら失敗します。

Error response from daemon: Get https://registry-1.docker.io/v2/: http: server gave HTTP response to HTTPS client
Error response from daemon: Get https://registry-1.docker.io/v2/: http: server gave HTTP response to HTTPS client
Unable to find image 'discourse/base:2.0.20230502-0058' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: http: server gave HTTP response to HTTPS client.

私にとってアップグレードを行う最も簡単な方法は、同じネットワーク上にない別のマシンを使用して、最新のDiscourseベースイメージをダウンロードすることです。その後、何らかの方法で、アップグレード対象のマシンにプルまたはプッシュします。次に、DiscourseまたはランチャーにDocker Hubからプルしようとせず、ローカルを参照するように強制する方法です。さまざまなスレッドで、これが機能する可能性があることに近いものを見かけましたが、明確なものはありません。これをどのように行いますか?

docker savedocker load が役立ちます。

@Falco 保存と読み込みの具体的なコマンド例を教えていただけますか?例えば、何をどこに保存し、読み込むための完全なコマンドは何ですか?

この投稿のアイデアを何度も成功裏に使用しました。

明日デスクトップで作業できるときに、より具体的な例を調理できます。

「いいね!」 1

@Falco - 本当にありがとうございます。デスクトップの例を楽しみにしています… ホストサイトを単なる「アップグレード」以上のものにしてしまうのではないかと心配しているので、これを正しく理解していることを願っています。

会社には、会社のルールなどにより外部に移動できない特定の情報が含まれている、古いDiscourse Dockerサイトがあります。4つあります… np.falcoisgreat.comstg.falcoisgreat.comtst.falcoisgreat.com、www.falcoisgreat.comと呼びましょう。これらはすべて4つの小さなバージョンで区切られています… ランチャーが最新のDockerベースイメージを取得しようとすると、Dockerハブにアクセスできなくなります。

そこで、インターネットの自由という現実世界の外で、Discourse Dockerを搭載した新しいUbuntuボックスを起動し、最新のDiscourse Dockerベースイメージ(実際にはhttps://discourse1.codeplus.cloudにあります)をプルしました。今、私が意図しているのは、コンテンツや何も含まない新しいイメージを取得し、おそらくdocker saveでtarにまとめ、curlまたはsftpでnp.falcoisgreat.comにそのtarファイルをプルしてからdocker loadを使用することです。

その詳細についてはわかりませんが、調べるつもりですが、心配しているのは、「np.falcoisgreat.com」の現在のコンテンツと構成を上書きしてしまうことです。もちろんバックアップは取りますが、何も上書きしない方法を知っておくのが最善です。このソリューションが意図していることを意図していることを確認していただけますか?

ありがとうございます!

以下のように設定してください。

  • server1: インターネットにアクセスできるサーバー
  • server2: DockerHub に到達できないサーバー

実行手順:

ssh root@server1
docker pull discourse/base:2.0.20230502-0058


# server1 が server2 に到達できる場合
docker save discourse/base:2.0.20230502-0058 | bzip2 | ssh root@server2 docker load
# 完了するまで待ってから server1 を終了します
ssh root@server2
cd /var/discourse
./launcher rebuild app


# server1 が server2 に到達できない場合
docker save -o /tmp/discourse-base-image.tar discourse/base:2.0.20230502-0058
# ファイルを thumb drive、ftp、floppies などで server2 に転送します
ssh root@server2
docker load -i /tmp/discourse-base-image.tar
cd /var/discourse
./launcher rebuild app
「いいね!」 2

それは素晴らしいですね。知りませんでした。

あとは discourse/base:2.0.20230502-0058 をいつ、どのように変更するかを知ることが重要です。

そして、それはおそらく次のようなものになるでしょう。

cd /var/discourse
git pull
DISCOURSE_BASE=$(grep -e ^image= $DISCOURSE_DOCKER_SRC/launcher|cut -d'\"' -f2)
docker pull $DISCOURSE_BASE

そして、save コマンドでも同様です。

「いいね!」 1

@Falcoさん、ありがとうございます。今のところ順調です。2つの環境をアップグレードしました!

「いいね!」 2

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.