このブログを書くつもりはなかったのですが、実際の操作中に、ネットワークの問題に圧倒されたこと (ネットワークは人を狂わせるものだということを本当に感じます。他の人はパッケージやイメージを数秒でダウンロードできますが、私は自分の数 KB の小さなパイプを見てとても惨めな気分になります)、そしてもう 1 つは、ここにはまだいくつかの落とし穴があることです。他の人が同じ落とし穴を繰り返さないように書き留めました。 注意すべき点がいくつかあります:
準備
Dockerをインストールする公式ドキュメント: https://docs.docker.com/engine/install/centos/ 1. 新しいシステムを選択する場合は、まずyumとシステムカーネルを更新することをお勧めします。 yumアップデート 2. 古いバージョンのdockerをアンインストールしてください
yum 削除 docker \ dockerクライアント\ docker-client-最新 \ docker-common \ docker-最新 \ docker-最新-logrotate \ docker-logrotate \ dockerエンジン 3. yum-utils をインストールします (以下で使用する yum-config-manager を提供します) yum をインストール -y yum-utils 4. yum を構成する Alibaba Cloud Docker リポジトリ Docker 公式リポジトリ: https://download.docker.com/linux/centos/docker-ce.repo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 5. Dockerをインストールする yum インストール -y docker-ce docker-ce-cli containerd.io 6. アクセラレータを取得するためにDockerイメージアクセラレータを構成する アドレス: https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["アクセラレータの URL をここに入力してください"] } 終了 sudo systemctlデーモンリロード sudo systemctl dockerを再起動します 7. Docker情報を表示する docker情報 8.hello-worldテスト docker で hello-world を実行する Jenkinsをインストールして初期化する公式ドキュメント: https://www.jenkins.io/doc/book/installing/docker/ まず最初に言っておきますが、公式ドキュメントではdockerコマンドの実行やプログラムコンテナの実行に dindについてもっと知りたい場合は、こことこのブログをご覧ください。 Jenkinsをインストールする1. Dockerfileを作成する vim Dockerファイル 2. Dockerfileファイルに次の内容を入力します。
jenkins/jenkins:lts-jdk11 より ユーザー ルート apt-get update && apt-get install -y apt-transport-https \ を実行します。 ca-証明書 curl gnupg2 \ ソフトウェアプロパティ共通 実行 curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - apt-key フィンガープリント 0EBFCD88 を実行します add-apt-repository を実行します\ "deb [arch=amd64] https://download.docker.com/linux/debian \ $(lsb_release -cs) 安定" # docker-ce-cli をインストールして、Jenkins の docker デーモンに docker コマンドを送信します。 apt-get update && apt-get install -y docker-ce-cli を実行します。 3. イメージを構築する docker ビルド . -t myjenkins 警告が表示された場合: [警告] IPv4 転送が無効になっています。ネットワークは機能しません。 実際、これは Linux で IPv4 パケット転送機能が有効になっていないことを意味します。 まずDockerを再起動してみてください systemctl dockerを再起動します 無効の場合、 # 1. sysctl.confを開く vim /etc/sysctl.conf # 2. 次の行を追加します。net.ipv4.ip_forward=1 # 3. ネットワークとDockerを再起動する systemctl ネットワークを再起動します && systemctl docker を再起動します 4. Jenkinsコメントバージョンを実行する docker 実行 \ --name jenkins \ # コンテナにjenkinsという名前を付けます --detach \ # バックグラウンド分離モードで実行します --publish 8080:8080 \ # ホストポート 8080 をコンテナポート 8080 にマップします --publish 50000:50000 \ # ホストポート 50000 をコンテナポート 50000 にマップします --volume jenkins-data:/var/jenkins_home \ # ボリューム jenkins-data はコンテナパス /var/jenkins_home にマップし、ホスト上で直接 jenkins 構成を変更できます --volume /var/run/docker.sock:/var/run/docker.sock \ # ホスト上の docker sock はコンテナの docker sock にマップし、コンテナ内の docker コマンドがホスト上の docker に送信されて myjenkins が実行されるようにします # ビルドしたばかりのイメージ myjenkins を使用してコンテナを実行します 注釈なしバージョン docker 実行 \ --name ジェンキンス \ --デタッチ\ --publish 8080:8080 \ --publish 50000:50000 \ --volume jenkins-data:/var/jenkins_home \ --volume /var/run/docker.sock:/var/run/docker.sock \ マイジェンキンス 5. Jenkinsプラグインソースを変更する 先ほど、コンテナ内のパス hudson.model.UpdateCenter.xml を開く vim /var/lib/docker/volumes/jenkins-data/_data/hudson.model.UpdateCenter.xml ファイル内の URL を清華大学の公式ミラーに変更します。
今すぐ: <?xml バージョン = '1.1' エンコーディング = 'UTF-8'?> <サイト> <サイト> <id>デフォルト</id> <!-- 元の URL: https://updates.jenkins.io/update-center.json --> <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url> </サイト> </サイト> Jenkinsを再起動します。 docker ジェンキンスを再起動 Jenkinsを初期化するアクセス: http://<host-ip>:8080 管理者の初期パスワードを表示するには、管理者の初期パスワードを入力します。 /var/lib/docker/volumes/jenkins-data/_data/secrets/initialAdminPassword を編集します。 「推奨プラグインをインストールする」を選択します 長い待ち時間の後、ネットワーク環境と依存関係の問題により、一部のプラグインのインストールに失敗する場合があります。ただし、「続行」をクリックして修正に進みましょう。 次に、独自の管理者アカウントを作成し、Jenkins URLを確認します。 入力後、Jenkinsのメインページは次のようになります まずインストールに失敗したプラグインを修正しましょう 左側のメニューバーの「Jenkinsの管理」をクリックして、Jenkinsを最新バージョンにアップグレードします。 アップデートセンターページで、下部にある「インストール完了後(アイドル時)に Jenkins を再起動する」というボックスをチェックすることを忘れないでください。 自動構成と展開Jenkinsページの左側にあるメニューの最初の「新しいタスク」をクリックし、タスク名を入力して、フリースタイルを選択します。 以下の設定情報を入力して保存します シェルコマンドは次のとおりです。 image_tag=`日付 +%Y%m%d%H%M%S`; $image_tag をエコーします。 # イメージをビルドしてタグ付けする docker build -t myapp:$image_tag .; Docker イメージ; # myappコンテナの古いバージョンを停止して削除する CID=$(docker ps | grep "myapp" | awk '{print $1}') $CIDをエコーする if [ "$CID" != "" ];then docker stop $CID docker rm $CID フィ # ビルドしたイメージを実行します。docker run -p 5000:80 --name myapp -d myapp:$image_tag; docker ps -a; docker は myapp をログに記録します。 左側のメニューの「今すぐビルド」をクリックして AspNetCoreApp をデプロイし、「コンソール出力」を確認します。「Finished: SUCCESS」と表示されたら、デプロイが成功したことを意味します。 アクセス: http://<host-ip>:5000/hello (hello が追加されていることに注意してください)
次に、Docker で実行中のコンテナを確認します。 コンテナID イメージ コマンド 作成ステータス ポート名 e167a135f7a0 myapp:20210512152453 "dotnet MyAspNetCore…" 2 分前 2 分前にアップ 0.0.0.0:5000->80/tcp, :::5000->80/tcp myapp e83a2570c334 myjenkins "/sbin/tini -- /usr/…" 約 1 時間前 約 1 時間前 0.0.0.0:8080->8080/tcp、:::8080->8080/tcp、0.0.0.0:50000->50000/tcp、:::50000->50000/tcp jenkins 予防1. Jenkins BlueOceanおよびその他のプラグインのダウンロードとインストールについて Jenkins で bluocean などのプラグインをインストールしたい場合は、公式サイトに従わずに Dockerfile にインストールコマンドを入れてください。加速元を指定するために さらに、Jenkins をインストールするときに、blueocean の関連プラグインが含まれているイメージ jenkinsci/blueocean を直接使用することもできます。 2. myappコンテナのポートマッピング5000:80について 私の Dockerfile では外部に公開されているポートが 80 なので、コンテナのポート 80 をホストのポート 5000 にマッピングしました。実際の状況に応じてここを変更する必要があります。 3. dind(docker in docker)に興味がある場合 dindについてもっと知りたい場合は、こことこのブログをご覧ください。 以上が、Jenkins + Docker + ASP.NET Core の自動デプロイに関する問題の詳細です。Jenkins + Docker + ASP.NET Core の自動デプロイの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
編集者は最近、macOS システムを使い始めたかったので、VMware に macOS イメージ シ...
IE には長い間問題がありました。誰もがテストを受けたとき、誰もが笑顔でしたが、それはただのニヤニヤ...
<br />前回のWebデザインチュートリアル:Webデザインチュートリアル(3):デザ...
vue-element-admin インポートコンポーネントのカプセル化テンプレートとスタイルまず、...
目次概要node.js でマルチコア CPU を最大限に活用する方法Node で子プロセスを作成する...
通常のプログラムと比較すると、ダイナミック リンク ライブラリにはメイン関数がなく、一連の関数の実装...
エラーを報告するApache\Nginx サービスは正常に起動しましたが、MySQL は起動に失敗し...
utf8mb4 エンコーディングは utf8 エンコーディングのスーパーセットであり、utf8 と互...
バイナリ docker 19.03 バージョンがインストール後に docker0 ブリッジを自動的に...
目次問題の説明Vueの動的コンポーネントとはアプリケーションシナリオの説明実装手順ステップ 1 (新...
国内市場ではIE6~7のサポートに対する一定の需要がまだありますが、フロントエンド開発者として、私た...
導入定期的にヘルスチェックを送信して、アップストリーム グループ内の HTTP サーバーのヘルスを監...
目次JavaScript のインポート1. 内部ラベル2. 外部紹介基本的な構文データ型番号弦ブール...
MySQL 8 の新機能: MySQL をバージョン 5.x から 8.x に直接アップグレードする...
この記事では、参考までに、csv中国語データをNavicat for SQLiteにインポートする具...