我想要启动带有“centos:latest”图像的容器,并且应该执行我的脚本。使用docker cp命令复制脚本。
docker create --name centos1 centos:latest
docker cp . 5db38b908880:/opt ---> scripts are in current directory, hence .
docker commit centos1 new_centos1 --> now new_centos1 image has scripts
现在我想用要执行的脚本启动新容器:我尝试了下面的命令:
docker run -ti --rm --entrypoint "cd /opt && deploy_mediainfo_lambda.sh" new_centos1:latest
docker run -ti --rm new_centos1:latest "cd /opt && deploy_mediainfo_lambda.sh"
上述两个命令都失败了:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:296: starting container process caused "exec: \"cd /opt && deploy_mediainfo_lambda.sh\": stat cd /opt && deploy_mediainfo_lambda.sh: no such file or directory": unknown.
ERRO[0000] error waiting for container: context canceled
如果在启动容器时使用bash命令,我可以在容器内使用'execuateble path'/'execuatble name'运行我的脚本,但是在命令行启动容器时我不能这样做
docker run -ti --rm new_centos1:latest bash
[root@c34207f3f1c4 /]# ./opt/deploy_mediainfo_lambda.sh
如果在命令下面使用,它直接调用可执行文件,则会产生路径错误。
docker run -ti --rm new_centos1:latest "deploy_mediainfo_lambda.sh"
docker: Error response from daemon: OCI runtime create failed: container_linux.go:296: starting container process caused "exec: \"deploy_mediainfo_lambda.sh\": executable file not found in $PATH": unknown.
ERRO[0000] error waiting for container: context canceled
还不确定在启动容器时从命令行设置$ PATH。
我知道,使用 Dockerfile 这是可以实现的,例如:
如何使用docker命令行实现它?
答案 0 :(得分:0)
感谢 melpomene 。
这是我的bash脚本,用于在复制它们之后自动执行容器内的脚本执行,所有这些都使用docker命令。
# Start docker container
docker create --name mediainfo_docker centos:latest
# copy script files
docker cp . mediainfo_docker:/opt
# save container with the new image, which contains all scripts.
docker commit mediainfo_docker mediainfo_docker_with_scripts
# Now run scripts inside docker container
docker run -ti --rm mediainfo_docker_with_scripts:latest /opt/deploy_mediainfo_lambda.sh
由于deploy_mediainfo_lambda.sh是一个脚本,因此第一行是: #!/斌/庆典的