blog/_posts/Linux/docker/docker-exec-cd.md

55 lines
1.4 KiB
Markdown
Raw Normal View History

2023-02-12 11:38:45 +08:00
---
title: docker exec 执行命令
date: 2023-02-11
2024-09-06 17:30:22 +08:00
tags:
- Docker
2023-02-12 11:38:45 +08:00
---
目前一些场景在运行的容器时候需要附带执行一些命令,可以使用`docker exec`命令
`docker exec [OPTIONS] CONTAINER COMMAND [ARG...]`
OPTIONS说明
-d,detach :分离模式: 在后台运行
-i,interactive :即使没有附加也保持STDIN 打开
-t,--tty:分配一个伪终端
-u,-user :指定执行用户
-w,workdir :指定工作目录
## docker 定时任务执行
2024-09-06 17:30:22 +08:00
2023-05-16 09:28:35 +08:00
> 下面是PHP的satis私有镜像仓库命令在docker中同步命令如下
2024-09-06 17:30:22 +08:00
2023-10-24 10:54:34 +08:00
<!--more-->
2024-09-06 17:30:22 +08:00
```sh
2023-02-12 11:40:13 +08:00
docker exec php74 /bin/sh -c "cd satis/ && php bin/satis build satis.json public/"
```
2024-09-06 17:30:22 +08:00
2023-05-16 09:25:26 +08:00
1. `php74` 指定容器名称
2. `/bin/sh` 指定shell环境
3. `-c "cd satis/ && php bin/satis build satis.json public/"` 具体命令执行详情
2023-05-16 09:28:35 +08:00
> 且让它每分钟执行一次,执行`crontab -e` 新增如下代码:
2023-02-12 11:38:45 +08:00
2024-09-06 17:30:22 +08:00
```sh
2023-02-12 11:40:13 +08:00
* * * * * docker exec php74 /bin/sh -c "cd satis/ && php bin/satis build satis.json public/" > /dev/null 2>&1
```
2023-02-12 11:38:45 +08:00
保存即可!
### 注意
2024-09-06 17:30:22 +08:00
2023-02-12 11:38:45 +08:00
1. 定时任务不需要开启一个终端,所以命令 `docker exec` 后面无需跟`-t` 分配一个终端
2023-02-12 11:45:30 +08:00
2. 每个容器交互shell有bash或sh命令中`/bin/sh` 应是具体容器交互shell决定使用哪个
## 参考
2024-09-06 17:30:22 +08:00
2023-02-12 11:45:30 +08:00
1. [linux crontab命令 参考](http://linux.zyimm.com/c/crontab.html)
2024-09-06 17:30:22 +08:00
2. [crontab 使用](https://learnku.com/articles/26172)