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を使用する

推薦する

mysql5.7.17.msi インストール グラフィック チュートリアル

mysql-5.7.17.msiのインストール、スクリーンショットに従ってください、ステップバイステ...

面接では、select...for update がテーブルをロックするのか、それとも行をロックするのか尋ねられました。

目次確認する:例の検証と組み合わせるselect クエリ ステートメントはロックされませんが、sel...

MySQL における Datetime と Timestamp の使用の概要

目次1. MySQL で現在の時刻を表現するにはどうすればよいでしょうか? 2. TIMESTAMP...

JavaScriptの原理と方向性

これが何を指しているのかをどのように判断するのでしょうか? ①グローバル環境で呼び出された場合はwi...

JS でクリップボード API を使用する方法

目次1. Document.execCommand() メソッド(1)コピー操作(2)貼り付け操作(...

MySQL 8.0.21.0 コミュニティ エディションのインストール チュートリアル (詳細な図解)

1. MySQLをダウンロードするMySQL 公式 Web サイトにログインし、MSI インストー...

WeChatアプレットに2048ミニゲームを実装する詳細なプロセス

レンダリング サンプルコード今日は、WeChat アプレットを使用して 2048 ゲームを実装します...

mysql エラー 1045 (28000) - ユーザーへのアクセスが拒否される問題を解決する方法

問題の説明 (以下の説明は Windows 環境に限定されます): D:\develop\ide\m...

mysql8.0.11をインストールしてrootパスワードを変更し、navicat for mysqlに接続するアイデアの詳細な説明

1.1. ダウンロード:公式ウェブサイトから zip パッケージをダウンロードします。私は 64 ビ...

Vueフォームバインディングとコンポーネントの詳細な説明

目次1. 双方向データバインディングとは1. データの双方向バインディングを実装する必要があるのはな...

HTML webpackプラグインの使用に関する簡単な分析

html-webpack-pluginプラグインを使用してページを開始すると、htmlページをメモリ...

Linuxシステムにおける重要なサブディレクトリの問題について話す

/etc/fstabパーティション/ディスクを自動的にマウントし、マウントするパーティション/デバイ...

MySQL ストアド プロシージャの概念、原則、一般的な使用法の詳細な説明

この記事では、例を使用して、MySQL ストアド プロシージャの概念、原則、および一般的な使用法につ...

URLエスケープエンコーディングの特殊文字に基づいて

目次URL 内の特殊文字URL 特殊文字エスケープ、URL 内の一部の文字には特別な意味があり、基本...

VUE のコンパイル スコープとスロット スコープのスロットの問題について

スロットとは何ですか?スロット ディレクティブは v-slot であり、現在 slot と slot...