/ docker

任意のDockerコンテナ上でbashを起動する

結構な頻度でdockerを使ったことがない人から"どうやって操作するの?"って聞かれるのでまとめます

まずDockerはイメージとコンテナがあり、イメージからコンテナまたはコンテナからイメージを作ることができます
普通(?)はイメージからコンテナを作ってそこで遊ぶはずなので、ここではコンテナを操作するということですね

イメージからコンテナを起動する

多くの人は目的に近いイメージから派生させてカスタムしてると思います
カスタムする方法はDockerfileやdocker-composeなどがありますね
もちろんコンテナからイメージを作れるのでそれでもOKです

まぁとりあえずコンテナを操作したいのですからdocker-composeでもなんでもよいのでコンテナを起動しましょう
例えば下記のようにするとubuntuコンテナを起動できます

docker run -it ubuntu /bin/bash

Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
7996ebd2246a: Pull complete 
de532f9a4f9f: Pull complete 
7de2709b2a83: Pull complete 
70b6ac64a142: Pull complete 
23caf550e032: Pull complete 
Digest: sha256:30e04ddada6eb09c12330c7df72cad1573916c7100168c34076808169ff6d805
Status: Downloaded newer image for ubuntu:latest
root@75def10f3f33:/# 

はい。rootで操作できてますね
これで目的は達成です

既に存在する起動済のコンテナに対して操作したい

先程のでもよいですが、あの例のままでは毎回別のコンテナとして起動してしまいます
多くの場合、起動済みのコンテナに対して接続したいはずですね

そのためにまずは操作する対象のIDを手に入れます

docker ps -a

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                            PORTS               NAMES
7316979b7143        ubuntu              "/bin/bash"         5 seconds ago       Up 4 seconds                                          serene_ptolemy
17f439cf0d99        ubuntu              "/bin/bash"         16 seconds ago      Exited (0) 11 seconds ago                             dazzling_heyrovsky
75def10f3f33        ubuntu              "/bin/bash"         7 minutes ago       Exited (130) About a minute ago                       jovial_keller

ここで、操作したい対象コンテナIDを7316979b7143とします
操作対象のコンテナは起動(STATUS=UP)してないとダメです

コンテナ内を操作する

docker exec -it 7316979b7143 /bin/bash

root@7316979b7143:/#

このようにdocker execコマンドで操作できます
標準入出力等を使うので-itオプションを付けて、コマンドにはbashを指定して起動しています
ただそれが実行されるだけなのでコマンドはbash以外でも良いです
ここではコンテナ内を操作したいのでbashを指定しています

zienchan

zienchan

ハードウェアからソフトウェアまで広範囲で何か作ってます

Read More
任意のDockerコンテナ上でbashを起動する
Share this