たとえば、コマンドdocker run -it Alpine /bin/sh
を使用すると、ターミナルが起動し、その後パッケージとすべてをインストールできます。 exit
コマンドを使用すると、ターミナルに戻ります。 (主なもの)
では、どうすれば同じコンテナに再度アクセスできますか?そのコマンドをもう一度実行すると、新鮮なアルパインが手に入ります。
助けてください
コンテナは、指定されたコマンド実行プロセスがまだ実行されている限り存続します。 /bin/sh
の実行を指定すると、終了するとshプロセスが停止し、コンテナーも停止します。
コンテナーを実行し続けたい場合は、内部のプロセスを実行し続ける必要があります。あなたの場合(あなたが何をしたいのか分かりません、私はあなたがテストしているだけだと思います)、以下はそれを実行し続けます
docker run -d --name Alpine alpine tail -f /dev/null
次に、sh
を使用してコンテナに
docker exec -it Alpine sh
停止したコンテナを開始できるdocker start
を使用する必要があります。コンテナに名前を付けなかった場合は、docker ps
を使用して名前/ IDを取得する必要があります。
例えば、
$docker ps
CONTAINER ID IMAGE COMMAND
4c01db0b339c Alpine bash
$docker start -i -a 4c01db0b339c
画像をプル
docker image pull Alpine
その画像がそこにあるのを見てください
docker image ls OR just docker images
高山の中に何があるかを見てください
docker run Alpine ls -al
さてあなたの質問はシェルと一緒にいる方法です
docker container run -it Alpine /bin/sh
シェルスクリプトコマンドラインの内部にいる。一部のディストリビューションにはbashシェルが含まれている場合があります。
docker exec -it 5f4 sh
/ # (<-- you can run linux command here!)
この時点で、アルパインのコマンドラインを使用して実行できます
ls -al
exitと入力して出てきます-デタッチモードで実行すると、実行を続けます。
Execコマンドを使用して、再度ログインできます
docker container run -it -d Alpine /bin/sh
稼働していることを確認し、コンテナIDの最初の2〜3桁をコピーします
docker container ls
execコマンドでログイン
docker exec -it <CONTAINER ID or just 2-3 digits> sh
停止する必要があります。そうしないと、実行を続けます。
docker stop <CONTAINER ID>
あなたがすべきことは以下です
docker run -d --name myalpine Alpine tail -f /dev/null
これにより、コンテナが死ぬことはありません。今あなたがあなたの中にパッケージをインストールする必要がある時はいつでもちょうどshを使ってコンテナの中に入る
docker exec -it myalpine /bin/sh
なんらかの理由でコンテナが停止した場合でも、次のコマンドを使用して再開できます
docker start myalpine
$ docker run --name alpy -dit Alpine
$ docker ps
$ docker attach alpy