導入 最近、Docker の ARM バージョンがあることを知りました。 hub.docker.com にも ARM バージョンのイメージがあるのですが、ARM バージョンの Docker イメージをビルドするのが問題です。組み込みプログラムは PC 上でクロスコンパイルできますが、Docker にクロスビルド ソリューションがあるかどうかはわかりません。 プラン Docker を使用して ARM イメージを構築する方法はいくつか考えられます。 3番目はクロスコンパイルに似ています。
Docker buildx を使用して複数のプラットフォーム イメージを構築する 以下のリンクを参照してください。 docker の 2 つの実験的な機能が使用されており、使用時には実験的な機能を有効にする必要があります。 Docker マニフェスト、マニフェストはイメージ情報を含むファイルです。マニフェスト リストは、異なる OS/アーキテクチャのイメージ情報を保存するために使用されるイメージ リストです。 2 つのイメージを指すマニフェスト リストを作成し、複数のプラットフォームをサポートできます。 docker buildx、buildx は docker のプラグインであり、次世代の docker イメージ構築です。このプラグインは、qemu-user-static を介してさまざまなプラットフォームの命令セットを変換し、x64 上で他のプラットフォームのプログラムを実行します。 buildx は実際には、マルチプラットフォーム ビルドに moby/buildkit:buildx-stable-1 イメージを使用します。 マルチプラットフォーム版のDockerレジストリを構築する Docker レジストリ イメージをビルドするには、次のリンクを参照してください。 buildx のバグを解決するために DNS サーバーを構築する buildx プラグインはローカル ホスト ファイルを使用しないため、DNS を使用する必要があります。これはバグです (https://github.com/docker/buildx/issues/218)。コミュニティでは誰も気にしていません。 nginx プロキシを使用して命名問題を解決する HTTP と HTTPS の両方をサポートするために nginx プロキシを追加しました。 buildx プラグインは HTTPS の使用を強制し、それをオフにする方法はありませんでした。 Nginx は、クライアントがプッシュするときにいくつかの問題を解決するために 2 つの構成を追加します。 # nignx.conf 設定 proxy_ignore_client_abort on; # クライアントの警告を無視 client_max_body_size 0; # アップロードファイルサイズ無制限 # 仮想ホスト設定 server { 聞く 443; サーバー名 buildx.com; sslオン; ssl_certificate crt/server.crt; ssl_certificate_key crt/server.key; ssl_session_timeout 5分; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #このプロトコルに従って設定します ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #このスイートに従って設定します ssl_prefer_server_ciphers on; 位置 / { プロキシパス http://192.168.1.11:81; } } サーバー{ 聞く 80; サーバー名 buildx.com; 位置 / { プロキシパス http://192.168.1.11:81; } } ローカルDocker環境の設定 ローカル Docker では実験的な機能を有効にする必要があります。
# arm64 バージョンのイメージをプルし、docker pull --platform arm64 alpine:3.10 を実行します。 docker run --rm -it alpine:3.10 sh ベースイメージを作成する hub.docker.com から複数のプラットフォームのバージョンを取得し、マニフェスト リストを生成して、レジストリにアップロードできます。 # arm64 バージョンをプルし、名前を変更してアップロードします。 特定のイメージが複数のプラットフォームをサポートしているかどうかは、hub.docker.com で確認できます。 docker pull --platform arm64 centos:7 docker タグ centos:7 buildx.com/base/centos-arm64:7 docker push buildx.com/base/centos-arm64:7 # amd64 バージョンをプルし、名前を変更してアップロードします docker pull --platform amd64 centos:7 docker タグ centos:7 buildx.com/base/centos-amd64:7 docker push buildx.com/base/centos-amd64:7 # マニフェスト リストを作成してアップロードします。 docker マニフェスト作成 --insecure buildx.com/base/centos:7 buildx.com/base/centos-amd64:7 buildx.com/base/centos-arm64:7 docker マニフェスト プッシュ --insecure buildx.com/base/centos:7 ビジネスイメージの構築 # buildx では複数のプラットフォームを指定できますが、Dockerfile 内の FROM イメージに対応するバージョンが必要です。 # buildx によってパッケージ化されたイメージはローカルに保存されません。docker リポジトリをアップロードするには --push を追加します。あるいは、--output を使用して出力方法を指定することもできます。 docker buildx ビルド --platform linux/amd64,linux/arm64 -t buildx.com/base/java-base:openjdk-8-centos7 . --push 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL 最適化技術における Limit クエリの最適化分析
>>: WeChatミニプログラムページで値を返す4つの解決策のまとめ
1. this.$router.push() 1. ビュー <テンプレート> <d...
目次序文プロトタイプ継承アドバンテージ欠点コンストラクタの継承アドバンテージ欠点組み合わせ継承寄生的...
この質問は、MySQL の権限に関する WeChat グループのネットユーザー間の議論です。次のよう...
Zhihu Discovery コラムのタイトル画像は、通常、以下のように表示されます。明らかに、グ...
目次背景メタバースとは何ですか?成果を達成するトライアル 1: THREE.TorusGeometr...
コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...
以前は、Web ページのプリンタ対応バージョンを作成するには、印刷したときに見栄えがよくなるようにレ...
目次序文準備行く!文章プロセスを開始するメインループまとめ要約する序文準備皆さんは、こんなことを考え...
最近、Mac システムを使用して、ローカル Web サーバー環境を構築する準備をしていました。 Ma...
序文springboot設定ファイルでは、設定ファイルの名前には独自の意味と用途があります。 dev...
コードをコピーコードは次のとおりです。 <HTML> <ヘッド> <T...
フレックス コンテナーを作成するには、要素に display: flex プロパティを追加するだけで...
折りたたみ表示の複数行テキストコンポーネント複数行のテキスト コンポーネントを折りたたんで表示し、展...
目次プロジェクトを初期化するサーバーの作成クライアントを初期化するコンポーネントの記述ファイルアップ...
データ型: 列に格納できるデータとそのデータが実際にどのように格納されるかを定義する基本ルール。デー...