このブログを書くつもりはなかったのですが、実際の操作中に、ネットワークの問題に圧倒されたこと (ネットワークは人を狂わせるものだということを本当に感じます。他の人はパッケージやイメージを数秒でダウンロードできますが、私は自分の数 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 の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
キーボードで文字を入力すると、対応するプロセスにどのように送信されるのでしょうか? ps や who...
Docker プライベートイメージライブラリDockerプライベートイメージライブラリとAlibab...
1. iframe の定義と使用法iframe 要素は、別のドキュメントを含むインライン フレーム...
序文正直に言うと、最近とても混乱していると感じています。テクノロジーと人生について。また、将来の発展...
MySQL はハッシュ インデックスと Btree インデックスをサポートしています。 InnoDB...
el-form フォームにルールを追加します。データにルールを定義する定義されたルールをel-for...
1. mysql tar ファイルをダウンロードします。参考: 2. インストールパッケージがあるデ...
親コンテナの幅は固定されています。子要素が親の幅を均等に分割するには、どのような方法がありますか?コ...
この記事の例では、カスタムスクロールバーを実装するためのjsの具体的なコードを参考までに共有していま...
MySQL 5.7 を新しくインストールしました。ログインすると、パスワードが間違っているというメッ...
オブジェクト上にマウスを移動したときにコンテンツ(タイトル属性の内容)を折り返す方法、HTML タイ...
背景すべての会社の Web サイトは HTTPS プロトコルをサポートする必要があります。Aliba...
目次共通バージョンの紹介共通バージョンのダウンロードアドレスとインストール以下に簡単な違いを示します...
目次1. 接続管理2. オプティマイザレベルでの改善3. 機能の改善4. パフォーマンススキーマの最...
1. ラジオのグループ化名前が同じであれば、それらはグループであり、つまり、次のようにグループ内で選...