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

Bash脚本在进入docker容器时退出

Bash脚本在进入Docker容器时退出是因为Docker容器默认情况下是以交互式的方式运行的,而Bash脚本在执行完毕后会退出。为了解决这个问题,可以使用以下方法:

  1. 使用docker exec命令:可以通过docker exec命令在已经运行的Docker容器中执行Bash脚本,而不需要进入容器的交互式终端。例如,可以使用以下命令执行脚本:
  2. 使用docker exec命令:可以通过docker exec命令在已经运行的Docker容器中执行Bash脚本,而不需要进入容器的交互式终端。例如,可以使用以下命令执行脚本:
  3. 这样可以在容器中执行脚本,并且脚本执行完毕后不会退出容器。
  4. 在Bash脚本中添加sleep命令:可以在脚本的最后添加一个sleep命令,使脚本在执行完毕后暂停一段时间,以防止容器退出。例如,在脚本的最后添加以下命令:
  5. 在Bash脚本中添加sleep命令:可以在脚本的最后添加一个sleep命令,使脚本在执行完毕后暂停一段时间,以防止容器退出。例如,在脚本的最后添加以下命令:
  6. 这样脚本会在执行完毕后暂停1小时,保持容器的运行状态。
  7. 使用docker run命令的-it参数:可以在运行Docker容器时使用-it参数,使容器进入交互式终端模式,并且保持运行状态。例如,可以使用以下命令运行容器:
  8. 使用docker run命令的-it参数:可以在运行Docker容器时使用-it参数,使容器进入交互式终端模式,并且保持运行状态。例如,可以使用以下命令运行容器:
  9. 这样容器会进入交互式终端模式,并且保持运行状态,可以在终端中执行Bash脚本。

总结起来,解决Bash脚本在进入Docker容器时退出的方法有:使用docker exec命令执行脚本、在脚本中添加sleep命令延长容器运行时间、使用docker run命令的-it参数进入交互式终端模式。以上方法可以根据具体需求选择适合的方式来解决该问题。

腾讯云相关产品和产品介绍链接地址:

  • Docker容器服务:提供了高性能、高可靠性的容器化应用部署和管理服务。详情请参考:https://cloud.tencent.com/product/tke
  • 云服务器(CVM):提供了弹性、安全、稳定的云服务器实例,可用于运行Docker容器。详情请参考:https://cloud.tencent.com/product/cvm
  • 云函数(SCF):无需管理服务器即可运行代码的事件驱动型计算服务,可用于执行Bash脚本等任务。详情请参考:https://cloud.tencent.com/product/scf
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

docker容器中使用非root用户执行脚本 (

应用容器化之后,docker容器启动,默认使用的是root用户执行命令,因此容器中的应用默认都是使用root用户来运行的,存在很高的安全风险,那么如何能够使用非root的业务用户来运行应用呢,下面我将举一个简单的例子来说明...该例子是容器中使用自建的用户来运行一个简单的shell脚本,并将脚本输出日志持久到容器外部。接下来让我们来看从制作镜像到容器运行的全过程吧。...Sending build context to Docker daemon 3.072 kB Step 1 : FROM docker.io/ubuntu:14.04  ---> c69811d4e993...: 注意,启动容器之前,需要将宿主机上/data/hepf/log目录的权限,否则容器启动脚本中的日志将没有权限写该目录,我直接将该目录权限修改成777了。...[root@host09 log]# cat /etc/passwd |grep hpf1 hpf1:x:1000:1000::/data1:/bin/bash[root@host09 log]# ll

2K10

Docker守护进程停机期间保持容器运行(即重启Docker,正在运行的容器不会停止)

前言: 默认情况下,当 Docker 守护进程终止,它将关闭正在运行的容器。不过,我们可以配置该守护进程,以便在该守护进程不可用时容器仍在运行。这种功能称为实时恢复。... Linux 上,默认的配置文件为/etc/docker/daemon.json vim /etc/docker/daemon.json { "live-restore": true } 2.Docker...$(pidof dockerd) 3.检查上面的配置是否成功 docker info | grep -i live 4.重启Docker,此时重启Docker容器就不会停止了 systemctl...Docker后,上面在运行的两个容器的运行时间分别为1小、32分钟,容器并没有我们重启Docker停止,而是一直保持运行状态 。...以后不用再担心处理问题必须重启 dockerd 时会影响现有业务了,如升级 docker 版本、dockerd 内存泄漏等!

3.5K20

使用Docker搭建Tomcat运行环境

容器镜像的基础上来运行的,一旦容器启动了,我们就可以登录到容器中,安装自己所需的软件或应用程序。...,需要运行的命令,此时使用“/bin/bash”,表示启动后直接进入bash shell。...然后,移动Tomcat目录: # mv apache-tomcat-7.0.81/ /opt/tomcat/ 6.3 编写运行脚本 编写一个运行脚本,当启动容器,运行该脚本,启动 Tomcat。...run 最后,为运行脚本添加执行权限: # chmod u+x /root/run.sh 7 退出容器 当以上步骤全部完成后,可使用exit命令,退出容器。...随后,可使用如下命令查看正在运行的容器docker ps 此时,应该看不到任何正在运行的程序,因为刚才已经使用exit命令退出容器,此时容器处于停止状态,可使用如下命令查看所有容器: # docker

87410

【云原生 | Docker】Linux 定时自动化备份Mysql数据到本地 & Windows 最佳实践,确定不来看看?

保存和退出:保存Cron表的修改,并退出编辑器。 测试备份脚本:运行备份脚本进行测试,确保备份正常工作。终端中执行bash /path/to/backup.sh命令,检查备份文件是否生成。...执行备份命令,需要替换用户名、密码、数据库名、表名和备份文件路径为实际的值。...如果是docker之中,则需要先进入docker中 要备份Docker中的MySQL,您可以使用以下步骤:查找MySQL容器的名称或ID:运行以下命令来获取正在运行的MySQL容器的名称或ID:docker...ps 进入MySQL容器:使用以下命令进入MySQL容器的命令行界面:docker exec -it bash MySQL容器中执行备份命令:MySQL容器的命令行界面中,可以使用...MySQL容器:完成备份后,使用以下命令退出MySQL容器的命令行界面:exit 将备份文件从容器复制到宿主机:宿主机上使用以下命令将备份文件从MySQL容器复制到宿主机的特定位置:docker cp

60051

Dockerfile命令及实践构建一个网站

镜像的创建有两种方式: 1、手动修改容器内容,然后docker commit提交容器为新的镜像 2、通过dockerfile中定义一系列的命令和参数构成的脚本,然后这些命令应用于基础镜像,依次添加层,...例如centos 镜像默认的CMD是/bin/bash,直接docker run -it centos 会直接进入bash解释器。...容器就是为了主进程而存在的,主进程如果退出了,容器也就失去意义了,自动退出。...off;" ENTRYPOINT 和 CMD的区别及用法 ENTRYPOINT 和CMD的区别及用法 ENV和ARG都是给容器设置环境变量 区别在于ENV无论是镜像构建,还是容器运行时,该变量都可以使用...(1)进入容器 docker exec -it 容器id bash (2)修改容器内的程序 cat test_flask.py (3)退出容器,重启容器 exit docker restart 容器id

1.3K20

Hexo -43- 友链朋友圈 后端部署

部署方式来说,需要进到容器内部修改配置 创建容器后,进入容器docker exec -it circle bash 进入 /home/fcircle_src/hexo_circle_of_friends...容器内创建启动服务脚本 进入容器 docker exec -it circle bash /home/fcircle_src 创建启动脚本文件 setup.sh #!.../api/main.py > /dev/null 2>&1 & 这样服务器(容器外)就可以通过 docker exec 命令启动这个脚本实现服务启动了 修改容器后可以通过 docker commit...命令保存配置于自启动脚本docker image 创建自动运行脚本 /usr/local/friend-circle 文件夹下创建 friend_circle.sh 文件,内容为: #!.../setup.sh 该脚本创建容器后,可以复活容器并启动友链朋友圈服务 systemctl 添加服务 添加 systemctl 服务随开机启动,创建 /lib/systemd/system/friend-circle.service

58510

docker容器中的前台程序和后台程序,为什么一定要前台运行

例子:docker run -d --name my-redis redis bash# 指定命令是bash,但显然bash容器起来后,很快就会结束,导致没有前台进程,故容器处于退出状态Docker容器后台运行...容器运行的命令如果不是那些一直挂起的命令(比如运行ping,sleep),就是会自动退出的。而上面的代码中bash就是需要执行的指定的命令。命令如果执行完毕了,或者叫指定的应用终结容器会自动停止。...2.使用交互界面后退出容器docker run -it --name my-redis redis bash之后会进入容器,如果想保持容器后台运行,我们可以 Ctrl + p + q,再次查看容器运行状态...当多个窗口同时使用该命令进入容器,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作,建议开发使用。...name或容器ID进入容器中:如果我们启动容器的时候指定-name选项,我们可以:docker exec -it container_name bash没指定name,我们可以通过docker ps

3.3K30

如何从看不懂Dockerfile到创建自己的镜像

github.com/ZhihaoPlus/DokcerTest.git 若考虑数据的储存和保密性,可使用挂载指令(VOLUME),不过需要注意的是此指令无法指定宿主机上对应的目录,而是自动生成的,因此启动容器选择了另一种挂载方式...启动容器并运行脚本 docker run -it -v ~/data/fastq:/data/fastq -v ~/data/script:/data/script aca8551e61bb nohup...,其启动容器执行echo命令,然而奇怪的事情发生了,启动容器后确实输出了"Hello,World!"却没进入容器中,就好像没被开启。如下图: ?...这跟Docker自身机制有关,当容器内的进程全部退出容器也会停止运行,也就是说你得让它一直有事干,没有,就会退出。...有需要让脚本容器启动时运行,则可以加-d参数让容器在后台以守护状态运行docker run -it -d IMAGES_ID /bin/bash

2.7K20

二、php环境之nginx的docker镜像制作

同时用镜像做服务还一个好处,php站点容易被黑挂马什么的,这样发现被黑了抛弃旧的容器,直接重启一个新的容器即可,不用再麻烦处理了,以前有个被黑挂马的站藏的很深,它修改了内核系统命令,你登录服务器主动杀死挖矿程序...版本选择 见后面的常见问题归纳 1 docker pull centos 启动并进入容器准备安装nginx docker run -it centos /bin/bash 先安装nginx所需的相关依赖包...中已经完成,我们来提交创建我们刚才的容器做成镜像 #容器内执行exit退出容器 exit #查看容器信息 [root@xxx]docker ps -a CONTAINER ID IMAGE...#当然也可以直接运行nginx启动,但后续脚本最后写全地址和指定配置比较好 nginx -t nginx #Ctrl + Q 可以退出容器不关闭容器 #docker ps CONTAINER ID...#程序变动直接在服务器的/wwwdocker/wwwroot下修改即可 #nginx配置变更后 执行下面命令重启容器内部的nginx即可,不需要再进入docker exec <容器 ID 或容器

71630

Docker必备基础知识

可根据需要下载 2)docker基本操作:安装、仓库设置、启动、关闭、退出进入 docker安装 https://yeasy.gitbook.io/docker_practice/install/ubuntu...--help来查看 # 关闭容器 docker stop -t=ContainerID 或 docker kill -t=ContainerID # 暂时退出镜像 exit # 重新进入镜像 sudo...images #查看本地仓库内的镜像 # 用image启动一个容器 docker run -it ubuntu:18.04 bash # 暂时退出并重新进入容器 exit docker ps -a sudo...docker exec -it 067 /bin/bash #此处067是上一指令查到的需要进入容器ID # 容器内进行操作 和ubuntu系统内的操作一致 cat /etc/os-release...或 VOLUME image启动可替换 docker run -d -v mydata:/data xxxx #其中的 -v mydata:/data 就是挂载宿主机的卷到容器内 EXPOSE

71920

centos7 下 基于docker搭建javatomcat (方式一)

CentOS 7 中 Docker 的安装 Docker 软件包已经包括默认的 CentOS-Extras 软件源里。...Docker运行,通过下面的命令参数启动容器: docker run -i:表示以“交互模式”运行容器 -t:表示容器启动后会进入其命令行 -v:表示需要将本地哪个目录挂载到容器中.../bin/bash 安装jdk/tomcat 创建好容器自动进入容器 然后安装JDK和Tomcat等(这步最重要的就是配置tomcat环境,配置不好重启容器不能运行) 可以用命令【docker...,设置立即生效: root@29ca665c0a12:/data# source /etc/profile Tomcat 启动脚本 创建start.sh启动脚本 root@29ca665c0a12...1 2 异常: 启动一个有 nat 映射端口的容器,iptables 报 No chain/target/match by that name  ?

1.1K50

Docker 基础

如何退出这个 bash?...有两种方法,两种方法的效果完全不同: 直接 exit,这时候 bash 程序终止,容器进入到停止状态 使用组合键退出,仍然保持容器运行,我们可以随时回来到这个 bash 中来,组合键是 Ctrl-p...而是容器执行一下就退出了。...使用 Dockerfile 自动化镜像构建 ---- 除了像之前一样手工打造一个新镜像,Docker 还提供了脚本的功能,允许我们把打造镜像的过程”记录”一个脚本里,并且自动”回放”出来。...作为一个最佳实践,构建一个新镜像,我们应该尽可能减少 RUN 命令的使用次数,这样可以减少镜像的大小 CMD 用于设置容器启动默认执行的命令,显然,我们就是要启动 nginx 这样,这个简单的镜像构建脚本就完成了

52550

Docker知识点(二):常用命令介绍

/bin/bash图片3.2 列举运行的容器 我们要查看当前正在运行的容器有哪些,可以通过ps 命令来查看docker ps [OPTIONS]OPTONS可用的参数OPTIONS说明-a列出当前所有正在运行的容器...图片3.3 退出容器命令 我们启动了一个容器后,如何退出容器退出方式说明exit容器停止退出ctrl+p+q容器不停止退出3.4 启动容器docker start 容器ID或者容器名称3.5 重启容器...其他命令4.1 守护式容器docker run -d 容器名称图片我们通过 docker ps -a 可以看到刚刚启动的容器已经退出了图片 为了让守护式容器能够一直执行,我们可以启动容器后在后台运行一个循环的脚本...docker run -d centos /bin/bash -c 'while true;do echo hello bobo;sleep 2;done'图片查看我们运行的日志docker logs...4.3 进入运行的容器进入方式说明exec容器中打开新的终端,并且可以启动新的进程attach直接进入容器启动命令的终端,不会启动新的进程图片图片4.4 文件复制 我们有时需要从容器中拷贝内容到宿主机中

31100

使用 Docker 搭建 Java Web 运行环境

然后,进入 CentOS 官方镜像页面,“Pull this repository”输入框中,有一段命令,把它复制下来,自己的命令行上运行该命令,随后将立即下载该镜像。...初始命令表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示什么也不做,只需进入命令行即可。...我们需要编写一个运行脚本,当启动容器,运行该脚本,启动 Tomcat,具体过程如下: 首先,创建运行脚本: vi /root/run.sh 然后,编辑脚本内容如下: #!...最后,为运行脚本添加执行权限: chmod u+x /root/run.sh 退出容器 当以上步骤全部完成后,可使用exit命令,退出容器。...随后,可使用如下命令查看正在运行的容器docker ps 此时,您应该看不到任何正在运行的程序,因为刚才已经使用exit命令退出容器,此时容器处于停止状态,可使用如下命令查看所有容器docker

1.5K20

使用 Docker 搭建 Java Web 运行环境

然后,进入 CentOS 官方镜像页面,“Pull this repository”输入框中,有一段命令,把它复制下来,自己的命令行上运行该命令,随后将立即下载该镜像。...初始命令表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示什么也不做,只需进入命令行即可。...我们需要编写一个运行脚本,当启动容器,运行该脚本,启动 Tomcat,具体过程如下: 首先,创建运行脚本: vi /root/run.sh 然后,编辑脚本内容如下: #!...最后,为运行脚本添加执行权限: chmod u+x /root/run.sh 退出容器 当以上步骤全部完成后,可使用exit命令,退出容器。...随后,可使用如下命令查看正在运行的容器docker ps 此时,您应该看不到任何正在运行的程序,因为刚才已经使用exit命令退出容器,此时容器处于停止状态,可使用如下命令查看所有容器docker

1.5K10

自定义AWVS的Docker镜像

docker run -it -d -p 8088:3443 eb348505474e 进入容器 docker exec -it 8d6e162ff38f /bin/bash 宿主机复制文件至容器 docker...,对应路径为:/var/local/ 等待环境依赖安装完成之后,执行acunetix_14.6.211220100_x64.sh脚本,并选择Enter进入下一步 root@10a035ad6a67:/var.../start.sh 再使用Ctrl+P+Q退出容器而不停止运行里面的内容 访问https://服务器IP:8088,输入账户xsgcs@xsgcs.com、密码Xsgcs.com即可登录 image.png... rmi xsgcs:awvs14v211220100 错误异常3 容器重启后AWVS没有自动重启运行,可手动执行容器里面的/var/local/awvs.sh脚本 脚本内容为: #!.../hosts su -l acunetix -c "/home/acunetix/.acunetix/start.sh"; 或在run容器添加bash命令 完整运行命令如下 docker run -it

1.9K00
领券