繁体   English   中英

容器退出并显示以下消息 docker 容器退出并显示代码 0

[英]Container exits with the following message docker container exited with code 0

嗨,我是 docker 和 docker-compose 的新手。

这是我的 docker-compose

version: "2.1"
services:
  licenseserver:
   build:
    context: ./licenseserver
    dockerfile: .dockerfile
   ports:
       - "20000:20000"
   mac_address: C8-D9-D2-A5-8F-DE
   hostname: idol

dockerfile 内容

FROM ubuntu:18.04

RUN apt-get update
RUN apt-get install unzip
RUN mkdir /opt/MicroFocus

WORKDIR /opt/MicroFocus
ADD LicenseServer.zip /opt/MicroFocus
RUN chmod 777 LicenseServer.zip
RUN unzip LicenseServer.zip
RUN rm -f LicenseServer.zip


WORKDIR /opt/MicroFocus/LicenseServer_12.5.0_LINUX_X86_64
ADD idol.dat /opt/MicroFocus/LicenseServer_12.5.0_LINUX_X86_64
RUN ls -lart
RUN pwd
RUN ./start-licenseserver.sh

docker-compose 构建工作正常,但是当我运行 docker-compose 时,我得到以下信息。 如何确保容器继续运行。

root@development-vm:/home/vinay/docker/AT# docker-compose up
Starting at_licenseserver_1 ... done
Attaching to at_licenseserver_1
at_licenseserver_1 exited with code 0
root@development-vm:/home/vinay/docker/AT# docker-compose exec licenseserver bash
ERROR: No container found for licenseserver_1

start-licenseserver.sh 的内容如下

#!/bin/sh
LD_LIBRARY_PATH=./:../bin:./ffmpeg:./filters:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
clear
echo "--------------------------------------------------------------------"
echo "Micro Focus License Server"
echo "(c) 1999-2018 Micro Focus"
echo "--------------------------------------------------------------------"
echo "This script will start License Server"
echo "(licenseserver.exe)"
echo ""
echo "Hit return to continue"
echo "Hit Ctrl-C to end this script now!"
echo "--------------------------------------------------------------------"
read DUMMY
echo "Starting License Server..."
chmod u+x licenseserver.exe
nohup $PWD/licenseserver.exe > licenseserver.out 2> licenseserver.err &
serverpid=$!
echo "Started License Server with PID $serverpid"
exit

您应该更改您的 Dockerfile 以使CMD命令不是RUNRUN命令仅在构建 docker 映像时使用。 docker 期望您的容器具有入口点或要运行的命令,并且它必须是后台进程,例如 web 服务器。 检查这篇文章关于RUNCMDentrypoint点的区别将你的 Dockerfile 更改为此并尝试再次运行它:

FROM ubuntu:18.04

RUN apt-get update
RUN apt-get install unzip
RUN mkdir /opt/MicroFocus

WORKDIR /opt/MicroFocus
ADD LicenseServer.zip /opt/MicroFocus
RUN chmod 777 LicenseServer.zip
RUN unzip LicenseServer.zip
RUN rm -f LicenseServer.zip


WORKDIR /opt/MicroFocus/LicenseServer_12.5.0_LINUX_X86_64
ADD idol.dat /opt/MicroFocus/LicenseServer_12.5.0_LINUX_X86_64
RUN ls -lart
RUN pwd
CMD ["start-licenseserver.sh"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM