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

推薦する

RHCEはApacheをインストールし、ブラウザでIPにアクセスします

1. at は、5 時間後にルート ディレクトリの at_test ファイルに「これは at タスク...

vue3 プロジェクトを素早く構築し、関連機能を紹介する vite+ts の詳細な説明

目次ヴィテ建てる構成vite.config.tsルーターtsタイプvue3 の知識設定小道具コンテク...

Linuxはjoin -a1を使用して2つのファイルを結合します

次の2つのファイルを結合するには、それらを結合して1.txtに結合します。 # 1.txt ジェリー...

Vue3 の SetUp 関数のプロパティとコンテキスト パラメータの詳細な説明

1. setUp関数の最初のパラメータpropsセットアップ(プロパティ、コンテキスト){}最初のパ...

Windows システム mysql5.7.18 インストール グラフィック チュートリアル

Windows システム向け MySQL インストール チュートリアルダウンロード1. https:...

MySQL count(1)、count(*)、count(field)の違い

目次1. COUNTの初見2. COUNT(フィールド)、COUNT(定数)、COUNT(*)の違い...

MySQL 8.0 における非同期レプリケーションの 3 つの方法について簡単に説明します。

この実験では、空のデータベース、オフライン、オンラインの 3 つのモードで、1 つのマスターと 2 ...

MySQL での %% のようなファジークエリの実装

1、%: 0 個以上の任意の文字を表します。あらゆるタイプと長さの文字に一致します。場合によっては、...

MySQL 1130例外、リモートログインできない解決策

目次質問: 1. リモートログイン権限を有効にする: 2. MySQLの権限を更新します。 3. テ...

Docker 接続 MongoDB 実装プロセスとコード例

コンテナが起動した後まず管理者にログインして新しいユーザーを作成してください $ docker ex...

ウェブデザインと制作に関する科学的原則と提案の要約

<br />ネットワーク設計の分野では、アイトラッキングに関する研究が非常に盛んに行われ...

Vueは小さな検索機能を実装する

この記事の例では、検索機能を実装するためのVueの具体的なコードを参考までに共有しています。具体的な...

Centos7.X Linux システムに tomcat8 をインストールするためのグラフィック チュートリアル

1. Tomcatのインストールパスを作成する mkdir /usr/local/tomcat 2....

Mysql の主キー インデックスと非主キー インデックスの違いについて簡単に説明します。

目次インデックスとは何か主キーインデックスと通常のインデックスの違いインデックスにはどのデータ構造が...

Windows での Nginx のインストールと環境設定 (nginx をサービスとして実行)

最初で最も重要なステップは、Windows 環境に Ngnix サービスをインストールする方法です。...