たとえば、私が欲しいとしましょう。
docker run --interactive --tty ubuntu:18.04 bash
apt update; apt install -y git nano wget; mkdir t; cd t
代わりに、1行のコマンドを使用してください。
私の試みが失敗しました:
docker run --interactive --tty ubuntu:18.04 (bash; apt update; apt install -y git nano wget; mkdir t; cd t)
そして
docker run --interactive --tty ubuntu:18.04 "bash; apt update; apt install -y git nano wget; mkdir t; cd t"
答え1
インタラクティブなサブシェルを得るために、最後の呼び出しbash
で終わるコマンドを作成してください。bash
docker run --interactive --tty ubuntu:18.04 bash -c "apt update; apt install -y git nano wget; mkdir t; cd t; exec bash"
exec
execは、新しいbashをコンテナの基本プロセスにするために必要であり、推奨されます(コンテナに送信された割り込みを受け取ります)。
つまり、apt
呼び出しを Dockerfile に入れ、対話型 bash を使用して直接起動できる派生イメージを生成する必要があります。
FROM ubuntu:18.04
RUN apt update && apt install -y git nano wget
RUN mkdir /somedir
WORKDIR /somedir
一度だけ実行してください(または最新バージョンが必要になるまで)。
docker build -t testbuild . # done once for all
そして
docker run -it testbuild # bash already in /somedir