docker如何启动容器并执行容器内脚本

本文介绍如何在Docker容器中运行CentOS7环境并执行Python定时任务。通过多次尝试,包括使用systemctl、编写启动脚本等方法,最终实现目标。文章详细记录了每一步的实施过程和技术细节。
部署运行你感兴趣的模型镜像

1.问题描述:

启动docker容器后,执行容器内脚本

2.案例需求:

现在需要用docker起一个centos7的环境,安装一个pyhton,跑一个定时任务,当时执行脚本。

3.解决:

开始尝试 使用systemctl 启动crond 执行pyhton项目脚本,结果docker容器中没有systemctl

注:如想在容器内使用systemctl,在启动容器时需加权限 如:docker run --privileged -idt -p 10028:8080  --name graph graph:v2 /usr/sbin/init && docker exec -it graph /bin/bash -c 'nginx && systemctl start mariadb ' && docker exec -i graph bash /data/knowledge_graph/graph.sh

第二次尝试 写一个启动crond 的脚本,放到/etc/init.d目录下,docker容器启动后会执行该目录下脚本,但没有生效

第三次 

写一个启动crond 的脚本,使用  docker exec -it 【容器名或id】bash 执行

docker run -idt --name green -v /data/log:/root/log green:latest && docker exec -it green bash /root/crondtask.sh

docker run 启动容器,并执行容器中crondtask.sh

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 配置Docker容器开机自启运行特定脚本 为了使 Docker 容器启动时自动执行指定的脚本,可以利用 `CMD` 或者 `ENTRYPOINT` 指令来定义容器启动时要执行的任务。对于更复杂的初始化逻辑,则可以通过创建一个可执行的 shell 脚本来完成这些任务。 #### 使用 Shell 脚本作为入口点 编写一个名为 `startup.sh` 的 Bash 脚本文件,在其中加入必要的命令以确保当容器启动时能够正确地配置环境以及启动所需的服务[^2]: ```bash #!/bin/bash # 设置环境变量 (如果需要的话) export APP_ENV=production # 执行其他任何预处理工作... # 启动应用程序或服务 npm start ``` 此脚本应当具有可执行权限,放置于镜像构建上下文中适当的位置以便后续引用。 #### 修改 Dockerfile 来集成启动脚本 更新项目的 Dockerfile 文件,使其包含将上述脚本复制到新生成的镜像内将该脚本设为默认启动指令的部分: ```dockerfile FROM node:alpine WORKDIR /usr/src/app COPY package*.json ./ RUN npm install --only=production COPY . . # 将本地的 startup.sh 复制至容器中, 赋予其执行权能. COPY ./scripts/startup.sh / RUN chmod +x /startup.sh # 设定 ENTRYPOINT 使得每次容器启动都会调用这个脚本 ENTRYPOINT ["/startup.sh"] ``` 通过这种方式,每当基于此 Dockerfile 构建出来的镜像被用来启动新的容器实例时,就会按照设定好的流程去加载所需的依赖项、调整环境参数最后再激活目标程序。 #### 实现容器重启策略 为了让容器能够在主机重新启动之后也跟着一起恢复运行状态,可以在使用 docker run 命令部署容器的时候加上相应的选项来开启自动重启功能。例如: ```shell docker run -d \ --name myapp \ --restart unless-stopped \ your_docker_image_name ``` 这里设置了除非手动停止否则总是尝试重启容器的行为模式,从而实现了所谓的“开机自启”。
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值