Dockerはコンテナに入るためにルートを使用する

Dockerはコンテナに入るためにルートを使用する

まずdockerコンテナを実行します

ルートユーザーとしてコマンドを実行する

sudo docker exec -it -u root ec33c19230ca /bin/bash

補足: コンテナのコマンドラインを入力し、Dockerでバックグラウンドで実行する

Docker では、一般的にコマンドを実行する方法が 2 つあります。1 つは、コンテナのコマンドラインに直接入力し、ターミナルで実行して結果を表示する方法です。もう 1 つは、バックグラウンドで実行し、ターミナルで結果を表示しない方法です。

1. コンテナのコマンドラインを入力する

suルート
docker run -i -t ubuntu:16.04 /bin/bash
#または次の文を実行します docker run -it ubuntu:16.04 /bin/bash

-i と -t の目的は、対話モードに入ることです。この部分がないと、コマンドラインを使用するどころか、コンテナに入ることもできません。 /bin/bash は、コンテナのコマンドラインを使用してコマンドを入力することを意味します。実行結果は次のとおりです。

ルート@7d150a0fb029:/#

ルートの後にコンテナ ID が続き、コンテナに入り、コマンドを入力できることを示します。いくつかの一般的なコマンドを入力してみてください。

root@7d150a0fb029:/# docker run -i -t ubuntu:16.04 /bin/bash

結果として、イメージのカーネル バージョン情報が出力されます。

Linux バージョン 4.13.0-36-generic (buildd@lgw01-amd64-033) (gcc バージョン 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.9)) #40~16.04.1-Ubuntu SMP 2018 年 2 月 16 日金曜日 23:25:58 UTC

exit を実行するとコンテナから出ることができます。

2. バックグラウンド実行コマンド

次のコードを入力します。-d はバックグラウンドで実行することを意味します。docker run --help を介してコマンドの機能を直接表示できます。次の文は、引用符で囲まれたコードをイメージ プログラムに追加し、バックグラウンドで実行することを意味します。

docker run -d ubuntu:16.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

出力には実行の結果は表示されませんが、新しく作成されたコンテナ ID が示されます。説明は次のとおりです。docker run コマンドを入力するたびに、新しいコンテナが作成され、新しい ID が生成されます。

出力は次のようになります。

c7188be9bd7b5c0aa91c5eeb72013996c89bfdc2181d1a5ff7f880af6f8aff99

実行中のコンテナを見てみましょう:

root@cdl-XPS15R:/home/cdl# docker ps -a
コンテナID イメージ コマンド 作成ステータス ポート名
c7188be9bd7b ubuntu:16.04 "/bin/sh -c 'while t..." 13 秒前 11 秒前 に表示 keen_vaughan
1b6ba17f7df7 ubuntu:16.04 "/bin/bash" 2分前 終了しました (0) 2分前 cocky_noether
7d150a0fb029 ubuntu:16.04 "/bin/bash" 4分前 終了 (0) 2分前 hopeful_banach

ここで、最初のコンテナの ID の最初の数桁は、バックグラウンドで実行されているコンテナ ID の最初の数桁とまったく同じですが、長さがはるかに長いことがわかります。実際には同じですが、ps コマンドで出力を印刷するときに便宜上、最初の数桁のみが表示されます。

新しいコンテナを作成せずに、バックグラウンドで実行されているコンテナのコマンドラインを入力する場合は、次のコマンドを入力します。

#exec は既存のコンテナに入るためのもので、run は新しいコンテナを作成するためのものです。docker exec -it c7188be9bd7b /bin/bash

より長い ID を入力した場合も同じ効果が得られます。

docker exec -it c7188be9bd7b5c0aa91c5eeb72013996c89bfdc2181d1a5ff7f880af6f8aff99 /bin/bash

出力結果は次のとおりです。

ルート@c7188be9bd7b:/#

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。

以下もご興味があるかもしれません:
  • Docker で Let's Encrypt から永久無料 SSL 証明書を取得する方法
  • ルート権限なしでログインするためのDockerソリューション
  • Dockerでmysqlのルートパスワードを変更する方法
  • Docker を使用してコンテナ内のルート パスワードを変更する方法
  • Dockerコンテナでルート権限を取得する方法
  • docker cp ファイルをコピーしてコンテナに入る
  • Dockerコンテナにホストディレクトリへの書き込み権限がない場合の解決策
  • Dockerに証明書を追加する方法

<<:  MySQL Undo ログと Redo ログの概要

>>:  ホバープロンプトにはvue2+elementuiを使用する

推薦する

CSSブロッキングマージとその他の効果についての簡単な説明

非直交マージンマージンを使用するとマージが発生します次のプロパティはマージンの結合を防止します。国境...

Youdaの新しいプチビューの実装

目次序文導入ライブ使いやすいルートスコープマウント要素の指定ライフサイクルコンポーネントグローバル状...

MySQL 8.0 の新機能 - 管理ポートの使用の概要

目次序文接続管理追加の接続管理ポート要約する序文皆さんの多くは、次のようなエラー メッセージに遭遇し...

WeChatミニプログラム公式顔認証の詳しい説明

ミニプログラムはユーザーの個人情報を収集してアップロードしましたが、拒否されました。こんにちは、ミニ...

Redo ログと Undo ログに基づく MySQL クラッシュ回復の分析

目次MySQLクラッシュ回復プロセス1. ブラックボックス下のデータフローを更新する2. やり直しロ...

Vueカスタムカプセル化ボタンコンポーネント

Vueボタンコンポーネントのカスタムカプセル化コードは参考用です。具体的な内容は次のとおりです。ボタ...

crontab でスケジュールされたタスクが実行されない理由の概要

序文最近、仕事でいくつかの問題が発生しました。crontab でスケジュールされたタスクが実行されま...

v-html レンダリング コンポーネントの問題

以前 HTML を解析したことがあるので、今日は Vue ドラッグ アンド ドロップを使用して、Ku...

読み取り専用と無効の違い

要約すると: Readonly は入力 (テキスト/パスワード) とテキスト領域に対してのみ有効です...

バッチファイルを処理するLinuxの1行コマンドの詳細な説明

序文最良の方法は、あなたが思いつく最も速い方法ではないかもしれません。職場で一時的に使用するスクリプ...

CSS でショートカット プロパティを記述する際は、トラブルの順序に注意してください (落とし穴を避けるため)

ショートハンドプロパティは、複数のプロパティに同時に値を割り当てるために使用されます。たとえば、fo...

WeChatアプレットで画像の幅と高さを取得する方法

起源最近、私は要件 A に取り組んでいます。そこには、次のように記述される小さな機能ポイントがありま...

アコーディオンセカンダリメニューを実装するためのjQueryプラグイン

この記事では、jQueryプラグインを使用してアコーディオンセカンダリメニューを作成します。具体的な...

画像を読み込むための JavaScript キャンバス

この記事では、画像を読み込むためのJavaScriptキャンバスの具体的なコードを参考までに紹介しま...

ハイパーリンクAタグを学ぶ

聞く: CSS を使用してハイパーリンクのスタイルを設定しましたが、ホバーしても機能しません。なぜこ...