コンテナランタイム: Containerd コンテナ管理

コンテナランタイム: Containerd コンテナ管理

基本的なコンテナ操作

コンテナの基本的な操作は主にctr imageコマンドです。コマンドヘルプを参照してください:

 [root@localhost ~]# ctr containers -h NAME: ctr containers - Manage containers USAGE: ctr containers command [command options] [arguments...] COMMANDS: create Create container delete, del, remove, rm Delete one or more existing containers info Get info about a container list, ls List containers label Set and clear labels for a container checkpoint Checkpoint a container restore Restore a container from checkpoint OPTIONS: --help, -h show help

静的コンテナの作成

作成する:

 [root@localhost ~]# ctr container create docker.io/library/nginx:alpine nginx

nginx がコンテナ名を指定し、ctr container create コマンドを使用してコンテナを作成した後、コンテナは実行状態ではなく、単なる静的コンテナになります。このコンテナ オブジェクトには、コンテナの実行に必要なリソースと構成のデータ構造のみが含まれます。たとえば、名前空間、rootfs、コンテナ構成は正常に初期化されていますが、ユーザー プロセス (この場合は nginx) はまだ開始されていません。動的コンテナを取得するには、ctr タスク コマンドを使用する必要があります。

コンテナを表示

[root@localhost ~]# ctr container ls CONTAINER IMAGE RUNTIME nginx docker.io/library/nginx:alpine io.containerd.runc.v2

名前のみを表示するには、-q オプションを追加します。

 [root@localhost ~]# ctr container ls -q nginx

次のように略記することもできます。

 [root@localhost ~]# ctr c ls -q nginx

docker inspect 関数と同様に、コンテナの詳細な構成を表示します。

 [root@localhost ~]# ctr container info nginx

コンテナの削除

[root@localhost ~]# ctr container rm nginx [root@localhost ~]# ctr container ls CONTAINER IMAGE RUNTIME

コンテナタスク

上記の container create コマンドで作成したコンテナは実行状態ではなく、単なる静的コンテナです。コンテナ オブジェクトには、コンテナを実行するために必要なリソースと関連する構成データのみが含まれており、名前空間、rootfs、コンテナ構成は正常に初期化されているが、ユーザー プロセスはまだ開始されていないことを示します。コンテナの実際の操作はタスクによって実現されます。タスクは、コンテナのネットワーク カードをセットアップし、コンテナを監視するツールを構成できます。コンテナを操作するとき、実際にはコンテナ プロセスを操作しています。

1. 静的コンテナが動的コンテナとして起動する

ctr task コマンドを使用して、静的コンテナを動的コンテナとして起動します。タスク関連の操作は、ctr タスクを通じて取得できます。次のように、Task を通じてコン​​テナを起動します。

 [root@localhost ~]# ctr task start -d nginx

-d はコマンドライン オプションであり、完全な名前は --detach です。このオプションは、ctr タスク開始コマンドに、タスクを開始した後すぐに戻り、タスクをバックグラウンドで実行したままにするように指示します。

2. コンテナプロセスを表示する

実行中のコンテナ プロセスを表示するには、task ls を使用します。

 [root@localhost ~]# ctr task ls TASK PID STATUS nginx 22945 RUNNING

ps を使用すると、最初の PID 23181 がコンテナ内のプロセス番号 1 であることがわかります。

 [root@localhost ~]# ctr task ps nginx PID INFO 23181 - 23208 -

物理マシンのプロセスを確認すると、対応するプロセス ID 23181 と 23208 が見つかります。これらは次のようにマップできます。

 [root@localhost ~]# ps -aux|grep nginx root 23159 0.0 2.1 722644 20916 ? Sl 13:01 0:00 /usr/local/bin/containerd-shim-runc-v2 -namespace default -id nginx -address /run/containerd/containerd.sock root 23181 0.0 0.5 8904 5120 ? Ss 13:01 0:00 nginx: master process nginx -g daemon off; 101 23208 0.0 0.2 9400 2256 ? S 13:01 0:00 nginx: worker process root 23266 0.0 0.2 112836 2332 pts/3 S+ 13:15 0:00 grep --color=auto nginx

3.ターミナル操作を実行する

[root@localhost ~]# ctr task exec --exec-id 0 -t nginx sh / # ls bin docker-entrypoint.d etc lib mnt proc run srv tmp var dev docker-entrypoint.sh home media opt root sbin sys usr / # pwd /

ここで、--exec-id パラメータは exec プロセスの ID を設定することに注意してください。一意であれば任意の ID を入力できます。 $RANDOM 変数を使用することもできます。

4. 動的コンテナを実行する

[root@localhost ~]# ctr run -d --net-host docker.io/library/nginx:alpine nginx2 [root@localhost ~]# ctr c ls CONTAINER IMAGE RUNTIME nginx docker.io/library/nginx:alpine io.containerd.runc.v2 nginx2 docker.io/library/nginx:alpine io.containerd.runc.v2 [root@localhost ~]# ctr task ls TASK PID STATUS nginx 23181 RUNNING nginx2 23339 RUNNING
  • -d はデーモンを意味し、バックグラウンドで実行されます
  • --net-host はコンテナの IP がホストの IP であることを意味します (Docker のホスト型ネットワークに相当)

5. コンテナに入る

[root@localhost ~]# ctr task exec --exec-id 1 -t nginx2 /bin/sh / # ifconfig eno16777736 Link encap:Ethernet HWaddr 00:0C:29:AD:FC:E9 inet addr:192.168.36.137 Bcast:192.168.36.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fead:fce9/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2304427 errors:0 dropped:0 overruns:0 frame:0 TX packets:462774 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:3259139229 (3.0 GiB) TX bytes:182005861 (173.5 MiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:696 (696.0 B) TX bytes:696 (696.0 B) / # curl 192.168.36.137 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>

コンテナプロセスを一時停止する

docker pause と同様の機能:

 [root@localhost ~]# ctr task pause nginx

一時停止後、コンテナのステータスは PAUSED になります。

 [root@localhost ~]# ctr task ls TASK PID STATUS nginx 22945 PAUSED

コンテナプロセスの回復

コンテナを再開するには、resume コマンドを使用します。

 [root@localhost ~]# ctr task resume nginx [root@localhost ~]# ctr task ls TASK PID STATUS nginx 22945 RUNNING

コンテナプロセスを強制終了する

ctr にはコンテナを停止する機能はありません。コンテナ プロセスを一時停止または強制終了することしかできません。次に、コンテナを削除するときに、task kill コマンドを使用してコンテナ プロセスを強制終了します。

 [root@localhost ~]# ctr task kill nginx [root@localhost ~]# ctr task ls TASK PID STATUS nginx 22945 STOPPED

プロセスの削除

コンテナを強制終了すると、コンテナのステータスが STOPPED に変わったことがわかります。 task rm コマンドを使用してタスクを削除することもできます。

 [root@localhost ~]# ctr task rm nginx [root@localhost ~]# ctr task ls TASK PID STATUS

コンテナはプロセスが削除された後にのみ削除できます。

 [root@localhost ~]# ctr c rm nginx

コンテナプロセスリソースの表示

さらに、コンテナの cgroup 関連の情報も取得できます。タスク メトリック コマンドを使用して、コンテナのメモリ、CPU、PID の制限と使用量を取得できます。

 # 重新启动容器[root@localhost ~]# ctr task start -d nginx [root@localhost ~]# ctr task metrics nginx ID TIMESTAMP nginx seconds:1701925304 nanos:694970440 METRIC VALUE memory.usage_in_bytes 2592768 memory.limit_in_bytes 9223372036854771712 memory.stat.cache 258048 cpuacct.usage 21976291 cpuacct.usage_percpu [21976291 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] pids.current 2 pids.limit 0

<<:  Zolvit が Linode でクラウド コストを 50% 削減した方法

>>:  エッジコンピューティングとデータサイエンス: IoT デバイスの強化

推薦する

ブランドマーケティングプロモーション:より良い戦略を生み出すには?

多くの場合、人は前向きに考える傾向があるため、考えた結果が似たようなものになることが多く、ユニークな...

「95年代を勝ち取る」:ヒットアプリとは?

新年が近づき、モバイル インターネットのネイティブ グループ、つまり 1995 年以降に生まれた人々...

ラッシュメール:大量メールによる対外貿易開発スキル

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス時代と中国経済の継続的な...

クラウド関連の IoT 脅威を軽減する方法

モノのインターネット (IoT) は、デバイスやシステムが相互に通信し、データを交換できるようにする...

hostdare: 35% オフ、アジアに最適化された VPS、年間 33 ドル、756M RAM/1 コア/150g ハード ドライブ/600g 帯域幅

誰もが VPS 業者の hostdare について比較的よく知っているはずです。彼らは通常、CN2 ...

ハイブリッド クラウドとは何ですか? また、どのように機能しますか?

[[205205​​]]クラウド コンピューティングは、IT のほぼすべてを説明するために使用できる...

ニューズウィーク:私たちはみんなインターネット中毒者

インターネット時代では、私たちは必然的にインターネット中毒者になる(インターネット写真)テンセントテ...

モバイルインターネットには検索エンジンが必要ですか?

厳密に言えば、検索エンジンとは、特定の戦略に基づいて特定のコンピュータプログラムを使用してインターネ...

iResearchの「2021年クラウドネイティブインテリジェントマーケティング調査レポート」がリリース、Mobvista、Adobe、Alimamaが代表例として選出

デジタル経済は時代の発展の主要テーマとなっています。デジタル産業化の中核シナリオの一つとして、インテ...

WeChat パブリックアカウントのプロモーション | フォロワーを増やすために大手アカウントに貢献するには?

ファン増加疲労期に、一夜にしてファンが急増するという神話はまだあるのでしょうか?この記事の著者は、大...

データベースをローカライズする時が来ました! Tencent Cloud TDSQLがコア金融システムの置き換えを実現

最近、 51CTOが主催するWOTグローバルテクノロジーイノベーションカンファレンスが北京で成功裏に...

JVM パフォーマンスの最適化は難しいと聞きました。今日試してみました!

[[403396]] Java 開発を行う学生にとって、JVM パフォーマンス最適化は習得するのが比...

どのようなウェブサイトがユーザーの最適な体験につながるのか

インターネット産業の急速な発展とわが国のインターネットユーザーの増加に伴い、企業はインターネットの重...

ハッカー組織の内部:10,000アカウントの卸売価格は50元

中国のネットユーザーの情報は一夜にしてパッケージファイルとなり、ネット上で拡散した。個人の銀行情報や...