使用される Docker イメージが増えるにつれて、イメージを保存する場所、つまりウェアハウスが必要になります。現在、一般的に使用されている倉庫には、公営倉庫と民間倉庫の 2 種類があります。最も便利な方法は、パブリック リポジトリを使用してアップロードおよびダウンロードすることです。パブリック リポジトリからイメージをダウンロードする際には登録する必要はありませんが、アップロードする際には登録が必要です。 最も一般的に使用されるプライベート倉庫はレジストリとハーバーです。以下ではプライベート倉庫の作成方法について詳しく説明します。 1. レジストリプライベートウェアハウスを構築する 1) ケースの説明 2 つの Docker サーバー、dockerA はレジストリ プライベート ウェアハウスを作成し、dockerB はテストに使用されます。 2) 事例 (1)DockerAサーバーの運用 [root@dockerA ~]# docker pull registry:2 //registry:2 のイメージをダウンロードします [root@dockerA ~]# docker run -itd --name registry --restart=always -p 5000:5000 -v /registry:/var/lib/registry registry:2 // レジストリ サービスを実行するためのレジストリ コンテナーを作成します。 //-p: ポート マッピング (前面はホスト ポート、背面はコンテナーによって公開されるポート)。 //-v: マウントディレクトリ(最初のディレクトリはホストディレクトリ、2 番目のディレクトリはコンテナディレクトリ)を指定して、ホストディレクトリを自動的に作成します。 //--restart=always: docker サービスの起動から開始します。 [root@dockerA ~]# docker ps //コンテナが実行中であることを確認します コンテナID イメージ コマンド 作成日時 ステータス ポート 名前 f98bf93f100e レジストリ:2 "/entrypoint.sh /etc…" 3 分前 3 分前にアップ 0.0.0.0:5000->5000/tcp レジストリ [root@dockerA ~]# netstat -anpt | grep 5000 // ポート 5000 が listen されていることを確認します tcp6 0 0 :::5000 :::* LISTEN 2370/docker-proxy [root@dockerA ~]# docker tag centos:7 192.168.1.1:5000/centos:7 // プライベート ウェアハウス名の仕様に準拠するようにイメージ名を変更します。注: プライベート ウェアハウス イメージの命名規則は次のとおりです: 192.168.20.7:5000/XXX (ホスト マシン IP: 5000 ポート/イメージ名) [root@dockerA ~]# vim /usr/lib/systemd/system/docker.service //docker サービスのメイン設定ファイルを書き込む 13 ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.1:5000 // 元の設定ファイルを変更して、安全でないレジストリ (--insecure-registry) を追加します。アドレスはホストの IP アドレスとポート 5000 です [root@dockerA ~]# systemctl daemon-reload [root@dockerA ~]# systemctl restart docker //docker サービスを再起動します [root@dockerA ~]# docker push 192.168.1.1:5000/centos:7 //名前を変更したイメージをレジストリのプライベート ウェアハウスにアップロードします [root@dockerA ~]# curl 192.168.1.1:5000/v2/_catalog //プライベート ウェアハウス内のイメージを表示します {"repositories":["centos"]} [root@dockerA ~]# curl 192.168.1.1:5000/v2/centos/tags/list //イメージの詳細情報を表示します {"name":"centos","tags":["7"]} (2)DockerBサーバーの運用 [root@dockerB ~]# vim /usr/lib/systemd/system/docker.service //docker 13 のメイン設定ファイルを変更する ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.1:5000 // レジストリと一致するコンテンツを追加し、レジストリプライベートウェアハウスサーバーの IP アドレスとポートを指定します [root@dockerB ~]# systemctl daemon-reload [root@dockerB ~]# systemctl restart docker //docker サービスを再起動します [root@dockerB ~]# curl 192.168.1.1:5000/v2/_catalog //プライベート ウェアハウス内のイメージを表示します {"repositories":["centos"]} [root@dockerB ~]# curl 192.168.1.1:5000/v2/centos/tags/list //プライベートウェアハウス内のイメージを表示します {"name":"centos","tags":["7"]} [root@dockerB ~]# docker pull 192.168.1.1:5000/centos:7 //プライベートリポジトリのイメージをダウンロードします [root@dockerB ~]# docker images //イメージがローカルリポジトリにダウンロードされたことを確認します TAG IMAGE ID CREATED SIZE 192.168.1.1:5000/centos 7 5e35e3505 週間前に追加 203MB この時点で、レジストリ専用倉庫が構築されました! 2. ハーバーのプライベート倉庫を建設する Registry プライベート ウェアハウスと比較すると、Harbor プライベート ウェアハウスははるかに強力で、Web グラフィカル管理をサポートしているため、企業で非常に人気があります。 1) ケースの説明 2 つの Docker サーバー、dockerA は Harbor プライベート ウェアハウスを作成し、dockerB はテストに使用されます。 2) 事例 (1)docker-composeツールをダウンロードする まず、図に示すように、GitHub の公式 Web サイトにアクセスします。 DockerAサーバーの運用 [root@dockerA ~]# yum -y yum-utils デバイスマッパー永続データ lvm2 をインストールします //docker-compose ツールに必要な依存関係をダウンロードします (docker 環境をデプロイするときにインストールできます) [root@dockerA ~]# curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose //docker-compose ツールをダウンロードします [root@dockerA ~]# chmod +x /usr/local/bin/docker-compose [root@dockerA ~]# docker-compose -v docker-compose バージョン 1.25.0、ビルド 0a186604 //docker-compose ツールのバージョン情報をチェックして、正常にインストールされていることを確認します (2)港湾の構成 GitHub の公式サイトで検索して、対応するバージョンを見つけることもできます。ここではこれ以上のスクリーンショットは撮りません! URLはhttps://github.com/goharbor/harbor/releasesです。 同じ操作がdockerAサーバーでも実行されます [root@dockerA ~]# wget https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-offline-installer-v1.9.1.tgz // harbor ソフトウェア パッケージをダウンロード [root@dockerA ~]# tar zxf harbor-offline-installer-v1.9.1.tgz -C /usr/local [root@dockerA ~]# cd /usr/local/harbor/ [root@dockerA harbor]# vim harbor.yml //設定ファイルを書き込みます。他のバージョンはデフォルトで cfg で終わりますが、このバージョンは yml で終わります。ファイルの内容は同じです。hostname: 192.168.1.1 //ローカル IP アドレスに変更します harbor_admin_password: Harbor12345 //この行はすでに存在します。自分で入力する必要はありません。ユーザー名とパスワードを覚えておいてください。必要に応じて変更できます[root@dockerA harbor]# ./install.sh //インストール スクリプトを実行します[root@dockerA harbor]# vim /usr/lib/systemd/system/docker.service //dockerメイン設定ファイルを書き込む 13 ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.1 //レジストリと同様に、ポート番号は harbor 構成ファイルには入力されていないため、ここで追加できます。そうしないと、エラーが発生する可能性があります [root@dockerA harbor]# systemctl daemon-reload [root@dockerA harbor]# systemctl restart docker //docker サービスを再起動します [root@dockerA harbor]# pwd /usr/local/harbor //ディレクトリに注意してください。このディレクトリ内にある必要があります [root@dockerA harbor]# docker-compose start //docker-compose ツールを使用してすべてのコンテナを起動します (docker を再起動するとすべてのコンテナが閉じられるため) [root@dockerA harbor]# netstat -anpt | grep 80 //ポート80がtcp 0 0 172.18.0.1:33780 172.18.0.5:10514 ESTABLISHED 70076/docker-proxyでリッスンしていることを確認します tcp6 0 0 :::80 :::* 72870/docker-proxyを聴く クライアントは次の Web ページにアクセスします。 (3)画像をアップロードする 倉庫が構築できたら、dockerA(harbor)サーバーにイメージをアップロードしてください。 [root@dockerA ~]# dockerログイン -u admin -p Harbor12345 192.168.1.1 // ログインするには、ユーザー名、パスワード、ハーバー サーバー アドレスを指定します。警告! CLI 経由で --password を使用することは安全ではありません。--password-stdin を使用してください。 警告! パスワードは暗号化されずに /root/.docker/config.json に保存されます。 この警告を削除するには、資格情報ヘルパーを構成します。 https://docs.docker.com/engine/reference/commandline/login/#credentials-store ログイン成功 //ログイン成功[root@dockerA ~]# docker tag centos:7 192.168.1.1/test/centos:7 // イメージ名を変更する必要があります。test は先ほど作成したウェアハウスの名前です [root@dockerA ~]# docker push 192.168.1.1/test/centos:7 // ハーバーサーバーのテストリポジトリにイメージをアップロードします アップロードが完了すると、図のようになります。 (4)ダウンロードしたイメージをdockerBサーバーでテストする [root@dockerB ~]# vim /usr/lib/systemd/system/docker.service //docker 13 のメイン設定ファイルを書き込みます ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.1 //ハーバーサーバーのIPアドレスを指定 [root@dockerB ~]# systemctl daemon-reload [root@dockerB ~]# systemctl restart docker //docker サービスを再起動します [root@dockerB ~]# docker login -u admin -p Harbor12345 192.168.1.1 // ハーバー サーバーにログインします。警告! CLI 経由で --password を使用することは安全ではありません。--password-stdin を使用してください。 警告! パスワードは暗号化されずに /root/.docker/config.json に保存されます。 この警告を削除するには、資格情報ヘルパーを構成します。 https://docs.docker.com/engine/reference/commandline/login/#credentials-store ログイン成功 //ログイン成功[root@dockerB ~]# docker pull 192.168.1.1/test/centos:7 //テスト用のイメージをダウンロード [root@dockerB ~]# docker images //イメージがダウンロードされたことを確認する リポジトリ タグ イメージ ID 作成 サイズ 192.168.1.1/test/centos 7 5e35e350 5 週間前に追加 203MB 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: JavaScript と JQuery フレームワークの基本チュートリアル
質問1件会社のサーバーはApacheを使用しており、バックエンドはPHP、サーバーはLinux C/...
図に示すように: 1 つのページには多数のファイルが接続されているため、ファイルを参照するときには、...
目次01 Kubernetes とは何ですか? 02 KubernetesとCompost+Swar...
目次概要方法1: params経由でパラメータを渡す方法2: クエリを通じてパラメータを渡す方法3:...
目次1. データベース設計の3つのパラダイムに関する知識の説明1. デザインパラダイムとは何ですか?...
最近、監視機器の作業をしていたとき、ポートがダウンしているというアラームが常に出ていました。データを...
目次導入MySQL 高可用性マスター 1 つとバックアップ 1 つ: MySQL マスター スレーブ...
序文この記事では、主にライブラリ内のすべてのテーブルを返すMysql8.0ドライバgetTables...
方法1: Pycharmをダウンロードしてインストールするダウンロードアドレス: https://w...
私たち、特に Linux エンジニアは毎日 Linux サーバーを扱っています。サーバーのセキュリテ...
社内には以前からアイドル状態だった、構成の整ったサーバーがあったので、EXSI 6.0 を使って複数...
最近、社内の重要なサーバデータを定期的にストレージにバックアップし、ついでにメモしておきたい以前、W...
序文現在、私はコースウェア PPT のオンライン プレビューを必要とする高品質のコースに取り組んでい...
Vm 内のハイパーリンク URL は、Get 要求のパラメータとして中国語と連結する必要があります。...
接続ツールを開きます。私はMobaXterm_Personal_12.1を使用します(公式サイトのダ...