実行中のDockerインスタンスにログインする方法は?

実行中のDockerインスタンスにログインする方法は?

dockerそれがどのように機能するかを確認するには、刺します。

ubuntu@ip-172-31-14-19:~$ 
ubuntu@ip-172-31-14-19:~$ sudo docker run --net=host -d -t jmar71n/freepbx
2792243260a8de33d1a775d115188e601fc556e500b5ad085e09b4133d0f3d06
ubuntu@ip-172-31-14-19:~$ 
ubuntu@ip-172-31-14-19:~$ sudo docker run -it jmar71n/freepbx bash
root@46f45b8973c3:/# 
root@46f45b8973c3:/# exit
exit
ubuntu@ip-172-31-14-19:~$ 
ubuntu@ip-172-31-14-19:~$ sudo docker run -it jmar71n/freepbx bash
root@813557bf8922:/# 
root@813557bf8922:/# echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
root@813557bf8922:/# 

今、それぞれがrun新しいインスタンスですか?これがプロンプトが変更された理由ですか?各?にはhostname一意のIDがあります。run

を使用して最初のインスタンスにログインするにはどうすればよいですか--net=host

私が試したとき実行フラグ、次のように失敗します。

ubuntu@ip-172-31-14-19:~$ 
ubuntu@ip-172-31-14-19:~$ sudo docker exec -it jmar71n/freepbx bash
Error: No such container: jmar71n/freepbx
ubuntu@ip-172-31-14-19:~$ 

なぜ?このインスタンスにログインする正しい方法は何ですか?

ubuntu@ip-172-31-14-19:~$ 
ubuntu@ip-172-31-14-19:~$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              20c44cd7596f        2 days ago          123MB
hello-world         latest              725dcfab7d63        2 weeks ago         1.84kB
jmar71n/freepbx     latest              8dda2a58fde1        19 months ago       1.54GB
ubuntu@ip-172-31-14-19:~$ 

答え1

コマンドを実行すると、run毎回新しいコンテナが作成されます。

runDockerコンテナ内に接続するオプションを使用して実行されるため、プロンプトが-it変更されます。したがって、新しいプロンプトを使用して実行するすべてのコマンドはコンテナ内で実行されます。

アクティブプロセスを終了すると言うとexit(bash、生成中にパラメータとして渡されたため)、PID 1を持つデフォルトプロセスが存在している間にのみコンテナが存在するため、コンテナは停止します。

インスタンスに接続するには、まず-dデタッチモードで実行してからdocker attach文書でコンテナのIDを取得できますdocker ps -a。と同じですdocker exec -it <containerID> bash

答え2

Dockerが実行され、新しいインスタンス(パラ仮想化)与えられたイメージの環境。

特定のインスタンスにログインするには、docker execを実行する必要があります。ログインするコンテナのIDでdocker execを実行する必要があります。これは、次のコマンドを使用して取得できます。

docker ps -a

次に ID を取得し、次のコマンドを使用してコンテナにログインします。

docker exec -it <containerid> bash

関連情報