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

推薦する

Docker データボリュームコンテナの作成と使用状況分析

データ ボリューム コンテナーは、データ ボリュームをマウントするために特別に使用されるコンテナーで...

Telnet は Alpine イメージの busybox-extras に移動されました

Alpine イメージの telnet はバージョン 3.7 以降、busybox-extras パ...

MySQL 5.7 でデータベースのデータ保存場所を変更する方法

MySQL データベースに保存されるデータが徐々に増加すると、元のストレージ領域がいっぱいになり、M...

Windows システムでの MySQL 8.0.21 インストール チュートリアル (図とテキスト)

インストールの提案: インストールには .exe を使用せず、圧縮パッケージを使用してください。これ...

7つの基本的なXHTMLコーディングルールの概要

1. すべてのタグには対応する終了タグが必要です以前の HTML では、<p> や &l...

スキニングを実現するネイティブJavaScript

ネイティブJavaScriptでスキニングを実装するための具体的なコードは参考までに。具体的な内容は...

Vue プロジェクトで SVG コンポーネントをパッケージ化して構成する手順

最近新しい会社に入社しました。プロジェクトに携わった後、タイトルアイコンが svg で作られていると...

MySQL データベースのインデックスとトランザクション

目次1. 索引1.1 コンセプト1.2 機能1.3 索引作成の原則1.3.1 ディスクアクセス回数を...

純粋な CSS3 でペットの鶏のサンプルコードを実現

最近、CSS3に関する知識や記事をたくさん読んできましたが、CSS3はとても便利に使えると思います。...

Docker tomcatのメモリサイズを設定する方法

Docker に Tomcat をインストールする場合、大きなファイルをダウンロードするときなど、場...

Docker データボリュームの一般的な操作コードの例

開発者が Dockerfile を使用してイメージをビルドする場合は、イメージをビルドするときにデー...

.Net Core を使用して数千万のデータを MySQL にインポートする手順

目次事前準備実施方法: 1. 単一のデータを挿入する2. マージデータ挿入3. MySqlBulkL...

MySQLデータベースのスケジュールバックアップを実装する方法

1. シェルスクリプトを作成する vim バックアップdb.sh 次のようにスクリプトを作成します。...

WeChatアプレットはシンプルな計算機を実装する

WeChatアプレットの簡単な計算機は参考用です。具体的な内容は次のとおりです。 1. はじめに1....