首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

"docker run“在退出bash shell脚本后终止

"Docker run"命令用于在Docker容器中运行一个命令。当在bash shell脚本中使用该命令并退出后,容器将终止。

Docker是一种开源的容器化平台,它允许开发人员将应用程序及其依赖项打包到一个独立的容器中,以便在任何环境中运行。Docker容器是轻量级、可移植且可隔离的,使得应用程序在不同的环境中具有一致的运行方式。

在使用"docker run"命令时,可以通过添加参数来控制容器的行为。例如,可以使用"-d"参数使容器在后台运行,"-p"参数指定端口映射,"-v"参数指定文件卷挂载等。

当在bash shell脚本中使用"docker run"命令并退出后,容器将终止。这是因为默认情况下,Docker容器在没有运行任何进程时会自动停止。当bash shell脚本执行完毕并退出后,容器中的主进程也会结束,从而导致容器终止。

"Docker run"命令的终止行为可以通过添加参数来改变。例如,可以使用"--restart"参数来指定容器的重启策略,使得容器在退出后自动重启。

总结:

  • "Docker run"命令用于在Docker容器中运行一个命令。
  • 当在bash shell脚本中使用该命令并退出后,容器将终止。
  • Docker是一种开源的容器化平台,可以将应用程序及其依赖项打包到独立的容器中。
  • Docker容器是轻量级、可移植且可隔离的,使得应用程序在不同环境中具有一致的运行方式。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Bash shell脚本中如何检查一个目录是否存在

问: Bash shell 脚本中什么命令检查某个目录是否存在?... Unix 的早期设计中,许多系统资源都被抽象为文件,以实现统一和一致的接口处理,这样程序员可以使用相同的系统调用来操作不同的资源,如普通文件、目录、设备等。...这里顺便整理一下 Bash 中对文件的各种测试: -a file -- 如果文件存在则为真。 -b file -- 如果文件存在且为块特殊文件则为真。...-N file -- 如果文件存在且自上次读取已被修改则为真。 -O file -- 如果文件存在且属于有效用户ID所有则为真。...参考文档: stackoverflow question 59838 https://www.gnu.org/software/bash/manual/bash.html#Bash-Conditional-Expressions

17710

kubernetes 实用技巧: SHELL 中传递信号

通常是因为我们的业务进程是脚本中启动的,容器的启动入口使用了脚本,所以容器中的主进程并不是我们所希望的业务进程而是 shell 进程,比如下面的 Dockerfile: FROM centos:7 ADD...CMD ["/start.sh"] start.sh 脚本中运行二进制以启动业务进程: #! /bin/bash ......使用 exec 启动 shell 中启动二进制的命令前加一个 exec 即可让该二进制启动的进程代替当前 shell 进程,即让新启动的进程成为主进程: #! /bin/bash ......这个时候我们可以 shell 中使用 trap 来捕获信号,当收到信号触发回调函数来将信号通过 kill 传递给业务进程,脚本示例: #!...和 tini 都可以作为 init 进程,作为主进程 (PID 1) 容器中启动,然后它再运行 shell 来执行我们指定的脚本 (shell 作为子进程),shell 中启动的业务进程也成为它的子进程

2.5K71

kubernetes 实用技巧: SHELL 中传递信号

通常是因为我们的业务进程是脚本中启动的,容器的启动入口使用了脚本,所以容器中的主进程并不是我们所希望的业务进程而是 shell 进程,比如下面的 Dockerfile: FROM centos:7 ADD...CMD ["/start.sh"] start.sh 脚本中运行二进制以启动业务进程: #! /bin/bash ......使用 exec 启动 shell 中启动二进制的命令前加一个 exec 即可让该二进制启动的进程代替当前 shell 进程,即让新启动的进程成为主进程: #! /bin/bash ......这个时候我们可以 shell 中使用 trap 来捕获信号,当收到信号触发回调函数来将信号通过 kill 传递给业务进程,脚本示例: #!...和 tini 都可以作为 init 进程,作为主进程 (PID 1) 容器中启动,然后它再运行 shell 来执行我们指定的脚本 (shell 作为子进程),shell 中启动的业务进程也成为它的子进程

2K51

Docker启动react项目时遇到“一启动就终止”的问题和解决

二、分析 主要原因就是当你在后台运行的时候,这个镜像创建的容器会首先执行/bin/bash,这意味着,当在后台运行(-d)时,shell立即退出。...所以除非命令未在前台运行,否则容器会立即停止 注意到:当我们本地 执行 yarn start ,终端会刷新,然后启动程序,看起来在这个过程中类似“ 原先的终端终止,又启动了新的终端窗口 ”。...而如果是docker容器中,即导致容器的运行终止了。...Docker中系统镜像的缺省命令是 bash,如果不加 -ti bash 命令执行了自动会退出。这是因为如果没有衔接输入流,本身就会马上结束。...加-ti docker命令会为容器分配一个伪终端,并接管其stdin/stdout支持交互操作,这时候bash命令不会自动退出

1.1K30

Docker命令

启动里面的 bash 并且进行交互式操作:docker run -it --rm ubuntu:latest bash图片-it:这是两个参数,一个是 -i 交互式操作,一个是 -t 终端--rm:这个参数是说容器退出随之将其删除...ubuntu:latest:这是指用 ubuntu:latest 镜像为基础来启动容器bash:放在镜像名的是命令,这里我们希望有个交互式 Shell,因此用的是 bash可以通过 exit 退出容器...例如 docker run hello-world 会把日志打印控制台:图片而 docker run -d hello-world 只会打印 容器id。...,其实还可以通过镜像的ID去运行一个容器如下所示:docker run -it 845c6a20ad11 /bin/bash图片删除容器删除一个处于终止状态的容器docker container rm...图片容器生命周期图片create:创建容器,并没有启动kill:发出的是 sigkill 的信号,是无条件终止的信号stop:发出的是 sigterm 的信号,程序终结信号,可以退出的时候,被阻塞,可以做一些清理工作我正在参与

15610

Docker 使用小结

RUN npm install: /app 目录下,运行 npm install 命令安装依赖。注意,安装所有的依赖,都将打包进入 image 文件。...container run 命令的 --rm 参数,容器终止运行自动删除容器文件。...你可能会问,RUN 命令与 CMD 命令的区别在哪里?简单说,RUN 命令 image 文件的构建阶段执行,执行结果都会打包进入 image 文件;CMD 命令则是容器启动执行。...# 由镜像来启动一个容器 $ docker run 镜像ID/镜像名:Tag # 启动镜像可以添加的参数 -d(在后台运行容器,守护进程) -it(容器的 Shell 映射到当前的 Shell,然后你本机窗口输入的命令...容器终止运行自动删除容器文件) -v 本机地址:容器地址(将主机的文件或目录挂载到容器里(只有一份源文件)) # 终止容器 $ docker stop 容器ID # 终止所有容器(先查询出所有的容器

52030

Docker快速入门(二)

有些容器提供服务,并不会自动终止,如Ubuntu的image: [@sjs_123_183 ~]# docker container run -it ubuntu bash root@cd902f829884...中写入下面两行,保存退出: FROM nginx RUN echo 'Hello, Docker!...RUN 就像 Shell 脚本一样可以执行命令,很多初学者写Dockerfile的时候会像Shell 脚本一样把每个命令对应一个 RUN,比如这样: FROM debian:jessie RUN apt-get...撰写 Dockerfile 的时候,要经常提醒自己,这并不是Shell 脚本,而是定义每一层该如何构建。 (2)这里为了格式化还进行了换行。...比如有些初学者发现 COPY /opt/xxxx /app 不工作,于是干脆将 Dockerfile 放到了硬盘根目录去构建,结果发现 docker build 执行发送一个几十 GB 的东西

69730

2小时入门Docker

i 让容器的标准输入保持打开 # -t 让Docker分配一个伪终端,并绑定到容器的标准输入上 # /bin/bash 指定docker容器,用shell解释器交互 当利用docker...从地址池配置一个ip地址给容器 执行用户指定的应用程序 执行完毕容器被终止 2、将一个终止状态(stopped)的容器重新启动 [root@localhost ~]# docker ps -a #...ENTRYPOINT RUN:执行命令并创建新的Image Layer CMD:设置容器启动默认执行的命令和参数 ENTRYPOINT:设置容器启动时运行的命令 Shell格式和Exec格式 RUN...ENTRYPOINT 让容器以应用程序或服务形式运行 不会被忽略,一定会执行 最佳实践:写一个shell脚本作为entrypoint COPY docker-entrypoint.sh /usr/local...https://hub.docker.com/ # 注册docker idlinux中登录dockerhub docker login # 注意要保证image的tag是账户名,如果镜像名字不对

70620

两小时入门Docker

i 让容器的标准输入保持打开 # -t 让Docker分配一个伪终端,并绑定到容器的标准输入上 # /bin/bash 指定docker容器,用shell解释器交互 当利用docker...执行完毕容器被终止 2)将一个终止状态(stopped)的容器重新启动 [root@localhost ~]# docker ps -a # 先查询记录 CONTAINER ID IMAGE...RUN:执行命令并创建新的Image Layer CMD:设置容器启动默认执行的命令和参数 ENTRYPOINT:设置容器启动时运行的命令 Shell格式和Exec格式 RUN yum install...ENTRYPOINT 让容器以应用程序或服务形式运行 不会被忽略,一定会执行 最佳实践:写一个shell脚本作为entrypoint COPY docker-entrypoint.sh /usr/local...官方网站(需注册使用) https://hub.docker.com/ # 注册docker idlinux中登录dockerhub docker login # 注意要保证image

51950

必学必会 ● 1小时入门 Docker,让部署应用更快更简单

i 让容器的标准输入保持打开 # -t 让Docker分配一个伪终端,并绑定到容器的标准输入上 # /bin/bash 指定docker容器,用shell解释器交互 当利用docker...从地址池配置一个ip地址给容器 执行用户指定的应用程序 执行完毕容器被终止 2、将一个终止状态(stopped)的容器重新启动 [root@localhost ~]# docker ps -a #...ENTRYPOINT RUN:执行命令并创建新的Image Layer CMD:设置容器启动默认执行的命令和参数 ENTRYPOINT:设置容器启动时运行的命令 Shell格式和Exec格式 RUN...ENTRYPOINT 让容器以应用程序或服务形式运行 不会被忽略,一定会执行 最佳实践:写一个shell脚本作为entrypoint COPY docker-entrypoint.sh /usr/local...https://hub.docker.com/ # 注册docker idlinux中登录dockerhub docker login # 注意要保证image的tag是账户名,如果镜像名字不对

88120

Docker 学习总结

,允许对容器内的标准输入(STDIN)进行交互 $ docker run -it ubuntu /bin/bash # 可以通过运行exit命令或者使用 CTRL+D 来退出容器 输出提示以后,hello...CMD ["python", "app.py"] ENTRYPOINT,设置容器启动时运行的命令,让容器以应用程序或服务的形式运行,不会被忽略,推荐写一个 shell 脚本作为 entrypoint COPY...image文件 EXPOSE 暴露3000端口,允许外部连接这个端口 CMD npm start 容器启动执行,一个 Dockerfile 可以包含多个RUN命令,但是只能有一个CMD命令,指定了...CMD命令docker container run 命令就不能附加命令(如 /bin/bash),否则会覆盖CMD命令 6.4 创建 image # -t 指定image镜像的名称,后面还可以加冒号指定标签...端口映射为本机的3333端口 # /bin/bash 容器启动执行的第一个命令,会覆盖文件中配置的CMD # --rm 容器终止运行自动删除容器文件 $ docker container run

2.9K87

两小时入门 Docker

让容器的标准输入保持打开 # -t 让Docker分配一个伪终端,并绑定到容器的标准输入上 # /bin/bash 指定docker容器,用shell解释器交互 当利用docker run...从地址池配置一个ip地址给容器 执行用户指定的应用程序 执行完毕容器被终止 2、将一个终止状态(stopped)的容器重新启动 [root@localhost ~]# docker ps -a #...RUN:执行命令并创建新的Image Layer CMD:设置容器启动默认执行的命令和参数 ENTRYPOINT:设置容器启动时运行的命令 Shell格式和Exec格式 RUN yum install...ENTRYPOINT 让容器以应用程序或服务形式运行 不会被忽略,一定会执行 最佳实践:写一个shell脚本作为entrypoint COPY docker-entrypoint.sh /usr/local...://hub.docker.com/ # 注册docker idlinux中登录dockerhub docker login # 注意要保证image的tag是账户名,如果镜像名字不对,

61720

两小时入门 Docker

i 让容器的标准输入保持打开 # -t 让Docker分配一个伪终端,并绑定到容器的标准输入上 # /bin/bash 指定docker容器,用shell解释器交互 当利用docker...执行完毕容器被终止 2、将一个终止状态(stopped)的容器重新启动 [root@localhost ~]# docker ps -a # 先查询记录 CONTAINER ID IMAGE...RUN:执行命令并创建新的Image Layer CMD:设置容器启动默认执行的命令和参数 ENTRYPOINT:设置容器启动时运行的命令 Shell格式和Exec格式 RUN yum install...ENTRYPOINT 让容器以应用程序或服务形式运行 不会被忽略,一定会执行 最佳实践:写一个shell脚本作为entrypoint COPY docker-entrypoint.sh /usr/local...//hub.docker.com/ # 注册docker idlinux中登录dockerhub docker login # 注意要保证image的tag是账户名,如果镜像名字不对,需要改一下

44010

Docker入门及自定义容器

有些容器不会自动终止,因为它们提供的是服务例如网站容器和虚拟操作系统容器,运行ubuntu的容器,docker会从镜像仓库下载ubuntu的镜像,下载完成直接从ubuntu镜像运行容器实例: docker...-it:Shell 映射到当前的 Shell,然后你本机窗口输入的命令,就会传入容器 bash: launches a Bash shell inside our container....输入exit或按Ctrl+D可退出此ubuntu容器实例进程,此种方式依赖命令行运行,命令行退出则容器进程终止(使用Ctrl+P+Q也可退出容器且不关闭容器)。...,使用nohup使得java程序运行于后台,不至于命令行退出java程序终止。...run -p 8000:8000 -itd maven-quiz -docker run:运行容器 -p:指定本地:容器端口映射 -itd:容器在后台运行 maven-quiz:指定镜像,:加标签,

1.4K20

容器中的一号进程

注意:当你运行一个Docker容器时,镜像的ENTRYPOINT就是你的根进程,即PID 1(如果你没有ENTRYPOINT,那么CMD就会作为根进程,你可能配置了一个shell脚本,或其他的可执行程序...:第一个问题是:如果将Bash作为PID 1运行,那么发送到Docker容器docker stop的信号,最终都是将 SIGTERM信号发送到Bash,但是Bash默认不会处理SIGTERM信号,也不会将它们转发到任何地方...docker stop命令执行,容器会有一个关闭的时限,默认为10秒,超过十秒则用kill强制关闭。...第二个问题是:一旦进程退出Bash也会继续退出。...如果程序出了bug退出了,Bash退出退出代码为0,而进程实际上崩溃了(但0表示“一切正常”;这将导致Docker或者k8s上重启策略不符合预期)。

1.5K60

docker实践(2)常用命令和DockerFile详解

docker run -t -i centos /bin/bash:启动一个bash 终端, 允许用户进行交互: -t 选项让Docker分配一个伪终端( pseudo-tty) 并绑定到容器的标准输入上...1) 例如只启动了一个终端的容器:docker run -t -i centos /bin/bash .用户通过 exit 命令或 Ctrl+d 来退出终端时, 所创建的容器立刻终止。...而且也不会像attach方式因为退出,导致 整个容器退出。 这种方式可以替代ssh或者nsenter、nsinit方式,容器内进行操作。...:构建镜像时执行的命令 RUN用于镜像容器中执行命令,其有以下两种命令执行方式: shell执行 格式: RUN exec执行 格式: RUN ["executable...镜像构建完成,通过docker run运行容器时,可以通过-u参数来覆盖所指定的用户。

57820
领券