スーパーバイザーによるDockerfileのマルチサービスイメージパッケージ操作

スーパーバイザーによるDockerfileのマルチサービスイメージパッケージ操作

Dockerfileの作成

yumソースを設定する

cd /tmp/docker
vim Dockerファイル
rhel7より
EXPOSE 80 22 # ポート80と22を外部に公開します COPY dvd.repo /etc/yum.repos.d/dvd.repo
&& yum install -y httpd openssh-server openssh-clients supervisor
&& yum すべてをクリーン 
&& ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" 
&& ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ed25519_key -N "" 
&& echo ルート:redhat | chpasswd
supervisord.conf をコピー /etc/supervisord.conf
CMD ["/usr/bin/supervisord"]
vim スーパーバイザー.conf
[監督者]
ノーデーモン=true

[プログラム:sshd]
コマンド=/usr/sbin/sshd -D

[プログラム:httpd]
コマンド=/usr/sbin/httpd
docker ビルド -t rhel7:v3
ビルド コンテキストを Docker デーモンに送信しています 8.192 kB
ステップ 1/6: rhel7 から
 ---> 0a3eb3fde7fd
ステップ2/6: EXPOSE 80 22
 ---> 5727c9e984a5 で実行中
 ---> e25a8a0821f7
中間コンテナ 5727c9e984a5 を削除しています
ステップ 3/6: dvd.repo を /etc/yum.repos.d/dvd.repo にコピーする
 ---> 2d9e8f9648a7
中間コンテナ 62955f7a7a74 を削除しています
ステップ 4/6: rpmdb --rebuilddb を実行 && yum install -y httpd openssh-server openssh-clients supervisor && yum clean all && ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" && ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N "" && ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ed25519_key -N "" && echo root:redhat | chpasswd
依存関係が更新されました:
 elfutils-libelf.x86_64 0:0.166-2.el7                     

完了!
読み取り不可能なリポジトリ '///etc/yum.repos.d/rhel7.repo' をスキップします
リポジトリのクリーニング: docker dvd-rhel
すべてをクリーンアップする
 ---> 1cb2f9e34bac
中間コンテナ 33cb452dbc8d を削除しています
ステップ 5/6: supervisord.conf をコピーする /etc/supervisord.conf
 ---> e8de2ff5ca3c
中間コンテナ f219cb2b6a88 を削除しています
ステップ 6/6 : CMD /usr/bin/supervisord
 ---> eddfb3973ad2 で実行中
 ---> dbf4cf5cb116
中間コンテナ eddfb3973ad2 を削除しています
dbf4cf5cb116 を正常に構築しました

docker run -d --name vm1 -v /tmp/docker/web/:/var/www/html rhel7:v3

ドッカーps

ドッカー検査vm1
      「ネットワーク」: {
        "橋": {
          "IPAMConfig": null、
          「リンク」:null、
          「エイリアス」: null、
          "ネットワークID": "126902125dd9c54631622845c1a75d656b45023840c57944ec24f4acecf6dc3f",
          "エンドポイントID": "3d995f01fce91968f59b151a19ba3868292efe0a61c2ef355bcd1eb84bda7248",
          「ゲートウェイ」: 「172.17.0.1」、
          "IPAddress": "172.17.0.2", # コンテナの IP
          "IPプレフィックス長": 16,
          "IPv6ゲートウェイ": "",
          "グローバルIPv6アドレス": "",
          "グローバルIPv6プレフィックス長": 0,
          "Macアドレス": "02:42:ac:11:00:02"
        }
      }

確認する:

カール 172.17.0.2

sshd サービスを確認します。

補足知識: Dockerfile を使用してスーパーバイザー コンテナ デプロイメント プロジェクトをビルドします。CMD ["supervisord","-c","/etc/supervisord.conf"] の実行に失敗しました

問題の説明:

スーパーバイザー コンテナを作成するための Dockerfile を作成する場合、スーパーバイザーを起動する最後のコマンド -> CMD ["supervisord","-c","/etc/supervisord.conf"] は機能しませんが、コンテナ内で supervisord -c /etc/supervisord.conf を実行すると正常に実行できます。

まずDockerfileファイルのコードを貼り付けます

python:latestから 
ワークディレクトリ /root/
 
mkdir /etc/supervisorを実行します。
mkdir -p /root/projects/logs/gunicorn/ を実行します。
mkdir -p /root/projects/logs/celery/ を実行します。
mkdir -p /root/projects/Sy_EvaluateJkApi/logs/ を実行します。
実行 echo "deb http://mirrors.aliyun.com/debian/ buster main non-free contrib" > /etc/apt/sources.list
実行 echo "deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib" >> /etc/apt/sources.list
実行 echo "deb http://mirrors.aliyun.com/debian-security buster/updates main" >> /etc/apt/sources.list
実行 echo "deb-src http://mirrors.aliyun.com/debian-security buster/updates main" >> /etc/apt/sources.list
実行 echo "deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib" >> /etc/apt/sources.list
実行 echo "deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib" >> /etc/apt/sources.list
実行 echo "deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib" >> /etc/apt/sources.list
apt-get update -yを実行します
apt-get install -y git lrzsz vimを実行します。
pip install supervisor -i https://mirrors.aliyun.com/pypi/simple/ を実行します。
pip install gunicorn -i https://mirrors.aliyun.com/pypi/simple/ を実行します。
pip install gevent -i https://mirrors.aliyun.com/pypi/simple/ を実行します。
/usr/local/bin/echo_supervisord_conf > /etc/supervisord.confを実行します。
RUN echo "[include]">>/etc/supervisord.conf
実行 echo "files = /etc/supervisor/*.ini">>/etc/supervisord.conf
 
sy.ini を追加します /etc/supervisor/sy.ini
Sy_EvaluateJkApi を追加します /root/projects/Sy_EvaluateJkApi
pip3 install -r /root/projects/Sy_EvaluateJkApi/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ を実行します。
エクスポーズ8800
CMD ["supervisord","-c","/etc/supervisord.conf"]

docker build -t system:test. コマンドを使用してコンテナ イメージをビルドする場合は例外はありませんが、docker run -itd system:test を使用してコンテナを実行すると、コンテナが実行されていないことが示されます。

解決:

コマンド CMD ["supervisord","-c","/etc/supervisord.conf"] を CMD ["supervisord","-n","-c","/etc/supervisord.conf"] に変更すると、正常に実行されます。

これは supervisor -n/--nodaemon -- run in the foreground (設定ファイルの 'nodaemon=true' と同じ) に書かれている内容です。-n を追加すると、supervisor はフォアグラウンドで実行され続けます。

以上、スーパーバイザー下のDockerfileのマルチサービスイメージパッケージング操作がエディターが皆さんにシェアする内容の全てです。参考になれば幸いです。また、123WORDPRESS.COMを応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerfileを使用してDockerイメージを構築する手順
  • Dockerfileを使用してApacheイメージを作成する方法
  • Dockerイメージの作成Dockerfileとコミット操作
  • Dockerfile に基づいて Tomcat イメージを構築する方法
  • Dockerfile を使用して Docker イメージをカスタマイズする方法
  • カスタム Docker イメージを作成するための Dockerfile の詳細な説明と CMD と ENTRYPOINT 命令の比較
  • alpineをベースにdockerfileで作成したtomcatイメージの実装
  • alpineをベースにdockerfileで作成したクローラーScrapyイメージの実装
  • Dockerfileを使用して独自のイメージを作成する方法
  • Dockerfileを使用してDockerイメージを構築する

<<:  innerHTML を理解する

>>:  js の通常形式の日付と時刻に 0 を自動的に追加する 2 つのソリューション

推薦する

1時間で学ぶMySQLの基礎

目次MySQL を使い始めるMySQL 管理6. MySQL サーバーを起動および停止します。 7....

SSH経由でリモートLinuxシステムでコマンドを実行する方法

場合によっては、リモート マシンでいくつかのコマンドを実行する必要があることがあります。これが時々行...

Vueコンポーネント間の通信の非常に詳細な要約

目次序文1. Props、$emit一方向データフロー2. $親、$子3. $attrs、$list...

Linux で Sudo を使用して権限を委譲する

sudo 権限委譲の概要su スイッチ ID: su –l ユーザー名 –c 'コマンド&#...

MySQLでテーブルを作成し、フィールドコメントを追加する方法

コードと例を直接投稿する #テーブル作成時にコメントを記述する CREATE TABLE useri...

Reactでaxiosを使用してリクエストを送信する一般的な方法

目次Reactにaxios依存関係をインストールして導入するGETリクエストにaxiosを使用するa...

Linux の grep コマンドと egrep コマンドの詳細な説明

反復/egrep構文: grep [-cinvABC] 'word' ファイル名-c...

MySQL 学習のまとめ: InnoDB ストレージ エンジンのアーキテクチャ設計の予備的な理解

1. ストレージエンジン前のセクションでは、SQL 実行プランは、エグゼキュータ コンポーネントがス...

Zabbix で監視項目と集約されたグラフを設定するためのサンプルコード

1. ローカルマシンを監視するためにZabbixエージェントをインストールするエージェントソフトウェ...

CSS を使用して fullpage.js のフルスクリーン スクロール効果を実装するサンプル コード

最近 CSS を勉強していたとき、 2 つの CSS プロパティだけを使用して全画面スクロール効果を...

30 種類の無料の高品質英語リボンフォント

30 種類の高品質な英語リボン フォントを無料でダウンロードできます。デザイナーは常に、25 種類の...

Echarts バー水平棒グラフのサンプルコード

目次横棒グラフデータとスタイルを動的に更新するeChartsの幅と高さの適応の問題を解決する縦棒グラ...

ハイパーリンクに関するいくつかの質問

ポテトチップスパーティーのこのエピソードに参加して、何人かの友人に会えてとても嬉しいです。思いがけず...

Vant+postcss-pxtoremはブラウザ適応機能を実装します

Remレイアウトの適応Vant のスタイルでは、デフォルトで px を単位として使用します。rem ...

LinuxにMySQLをインストールし、外部ネットワークアクセスを構成する例

設定手順1. DNSが設定されているかどうかを確認するDNSが設定されていない場合は、前の記事を参照...