最近思考如何不进入容器使用docker中安装的程序运行宿主机脚本, 尝试了多种方法,终于实现了目标
- 运行docker
假设你已经安装好了docker,并下载好了镜像,你需要后台运行docker镜像, 目标脚本是/home/test/文件夹中test.py, 如下图所示:
1.首先运行docker 镜像,并在后台挂起
docker run -d -v /home/test:/test -p 8888:8888 73a20c2c0b6b /bin/sh -c "while true; do echo hello world; sleep 100;done"
解释:
1. -d :后台运行容器,并返回容器ID(不进入容器)
2. /home/test:/test :宿主机文件夹映射到容器的文件夹(任意名称都可以)
3. 73a20c2c0b6b :IMAGE ID
4. 若只执行下面命令 docker run -d -v /home/test:/test -p 8888:8888 73a20c2c0b6b
则容器不会在后台持续运行, 会直接退出容器,因此需要添加一个持续运行的脚本,
这里执行一个死循环的脚本使容器持续运行(当然top之类的命令也可以)
5. 运行上述命令会返回容器ID,当然也可以使用docker -ps -a 获取
2.执行脚本
docker exec -ti 3ee54e0a /test/test.py
[out]:ok
解释:
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
/test/test.py :容器映射宿主机脚本