Tag: 入口点

Nginx容器没有开始

I build the nginx container image successfully. but its not getting started. 我走进了图像使用sudodocker运行-it imageid / bin / sh并尝试启动nginx容器。 find用于启动下面的nginx的脚本: Entrypoint.sh: cd /app/server/sbin/ ./nginx -g 'daemon off' echo "After start" At the ./nginx command the script is not executing, am also not seeing any error. I cross verified the nginx status. 命令来检查我的图像中的nginx状态:nginx -t命令。 nginx:configuration文件/opv/nginx-18/nginx/nginx.conf语法正常nginx:configuration文件/opv/nginx-18/nginx/nginx.conftesting成功请让我知道如何启动nginx命令。

在docker-compose.yml的入口点env文件中的环境variables

我想在入口点使用docker-compose中的env-filevariables: # environment.env HOST=example.com # docker-compose.yml some_service: … env_file: ['environment.env'] entrypoint: ['myexecutable', '–host', '$HOST'] 有没有办法做到这一点? 我发现只有一个解决scheme: # docker-compose.yml some_service: … env_file: ['environment.env'] entrypoint: sh -c 'myexecutable –host $$HOST' 但它看起来违反了docker概念“每个容器一个进程”(因为会有2个进程: sh和myexecutable )。 而容器不能正常停止,我不得不用docker kill或docker-compose kill杀死它。

当孩子定义另外一个时,Docker父图像的入口点会发生什么?

比方说,我有这个Dockerfile构build的Docker镜像父项: FROM ubuntu ENTRYPOINT ["parent-entry"] 现在我从我的子图像中inheritance这个父图像: FROM parent ENTRYPOINT ["child-entry"] 据我testing,子图像的入口点覆盖父图像的入口点。 但是因为我是Docker的新手,所以我不太确定。 我的研究还没有得到满意的答案。 那么上面的假设是正确的吗?

如何在每个“exec”命令中执行Docker镜像的入口点?

在试图用DockerspectestingDockerfiles之后,我终于遇到了一个我无法正确解决的问题 。 我想,问题在于Docker本身。 如果我理解它的过程, 一个入口点只在运行时执行 ,但是如果容器保持启动状态,我启动一个“exec”命令,它不会被重新调用。 我认为这是想要的行为。 但是,如果入口点是所有命令之前的“gosu”脚本,这是一个问题… 例 “myImage”有这个入口点:gosu gosu 1000:1000 "$@" 如果我启动: docker run -it myImage id -u 输出是“1000”。 如果我启动一个容器: docker run -it myImage bash 在这个容器中, id -u输出“1000”。 但是如果我在这个容器中启动一个新的命令,它会启动一个新的shell,并且不会执行入口点,所以:docker docker exec CONTAINER_ID id -u 输出“0”,因为新的shell以“root”身份启动。 有没有一种方法来执行每个入口点? 或者重新使用shell打开? 或者更好的方法来做到这一点? 或者,也许我什么都不懂? ;) 谢谢 ! 编辑 在阅读了这里提出的解决scheme之后,我明白问题不在于Docker的工作方式,而在于Serverspec如何工作。 我的目标是直接testing一个命令作为docker docker run参数,但是Serverspec使用docker exec启动一个容器和testing命令。 所以,最好的解决办法是find如何获得由Serverspec执行的docker run的标准输出。 但是,在我个人的使用情况下,最好的解决办法可能是不使用Gosu,但 – 用户标志:)

如何编写一个Dockerfile,我可以启动一个服务并运行一个shell,并接受shell的参数?

在Dockerfile中,最新的指令是: CMD sudo chown -R user:user /home/user/che && \ sudo service docker start && \ cd /home/user/che/bin/ && ./che.sh run 它的工作原理,但我不能传递更多的参数./che.sh 。 che.sh检查在执行其他任务后是否启动内部docker 。 它可以接受多个可选参数,如-r:111.111.111.111 。 我试图修改指令为: RUN sudo chown -R user:user /home/user/che && \ sudo service docker start ENTRYPOINT ["/home/user/che/bin/che.sh"] 为了像docker run -it –priviledged my/che -r:111.111.111.111 run那样调用它, docker run -it –priviledged my/che -r:111.111.111.111 run […]

当使用docker run命令时,Docker容器退出(0),但使用docker start命令

我试图dockerize一个GUI应用程序,并取得了一些成功。 如果我build立一个图像的dockerfile,然后执行一个docker run –name testcontainer testimage似乎该过程开始,但突然停止。 然后用docker ps检查容器,确认没有容器正在运行。 然后我检查docker ps -a ,可以看到它退出状态码exit(0) 。 然后,如果我运行命令docker start testcontainer ,它似乎再次启动ENTRYPOINT命令,但是这次它能够继续并popupGUI。 我最好的猜测是,我认为当我运行docker run命令时,进程开始,但可能被分成后台进程,导致容器退出,因为前台进程已经结束。 虽然这可能是因为你会认为docker start命令会导致相同的结果。 我正在考虑试图强制这个过程留在前台,但不知道如何去做。 有什么build议么? 更新 :我编辑我的Dockerfile使用supervisord来pipe理GUI应用程序的开始。 现在我的docker运行命令将启动supervisor,这将启动我的GUI应用程序,它的工作原理。 有些事情要注意的是,主pipe表示: INFO spawned: myguiapp with pid 7 INFO success: myguiapp entered RUNNING state INFO: exited: myguiapp (exit status 0; expected) 主pipe和集装箱在这一点上还在运行,这似乎表明主stream程启动了一个subprocess。 由于主pipe仍在运行,我的容器保持不变,GUI应用程序显示出来,我可以使用它。 当我closuresGUI时,主pipe报告: CRIT reaped unknown pid 93 主pipe仍在运行,导致集装箱不能closures。 […]