このブログを書くつもりはなかったのですが、実際の操作中に、ネットワークの問題に圧倒されたこと (ネットワークは人を狂わせるものだということを本当に感じます。他の人はパッケージやイメージを数秒でダウンロードできますが、私は自分の数 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 の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
かなり前に実装された機能ですが、クリックすると選択したメニュー項目の背景色が白くなることに気付きまし...
イメージは、GitHub と同様に Docker パブリック リポジトリに直接簡単にプッシュできます...
サブフォルダーの末尾にスラッシュがない場合、2 つの HTTP リクエストが生成され、効率に影響しま...
1.まずnpmをアンインストールする sudo npm アンインストール npm -g 2. ノー...
もちろん、CSS はフレームワークを必要とするほど高度ではないと考えて、反対の意見を持つ人もたくさん...
以下に、一般的な MySQL コマンドをいくつか示します。 -- データベース サービスを開始します...
この記事では、シンプルなカレンダー効果を実現するためのjsの具体的なコードを参考までに共有します。具...
NginxのGeoモジュールの紹介geo ディレクティブは、ngx_http_geo_module ...
1.Mysql接続方法MySQL 通信プロトコルを理解するには、まず MySQL サーバーへの接続に...
1. Dockerネットワークモードdocker run が Docker コンテナを作成するときに...
序文インターネット上にはデータベースの最適化に関する情報や方法が数多くありますが、その多くは品質にば...
画像内に下線付きのリンクが表示されても驚かないでください。実はとても簡単なので、あなたにもできるので...
次のコードは、Chrome による Cookie の変更の監視を導入しています。コードは次のとおりで...
コード例: パブリッククラスJDBCDemo3 { パブリック静的voiddemo3_1(){ bo...
目次1. v-bindの主要ソースコードの分析1. v-bind属性はどこに均一に保存されるか: a...