例如,假设我想要
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)
和
docker run --interactive --tty ubuntu:18.04 "bash; apt update; apt install -y git nano wget; mkdir t; cd t"
答案1
使其成为一个bash
命令,以最终调用结束,bash
以便您获得交互式子 shell:
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