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

容器退出,并显示以下消息docker Container退出,代码为0,docker,docker-compose,Docker,Docker Compose,嗨,我是docker和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

嗨,我是docker和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 build运行得很好,但是当我运行docker compose up时,我得到以下结果。如何确保容器继续运行

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

您应该将docker文件更改为使用
CMD
命令而不是
RUN
RUN
命令,该命令仅在构建docker映像时使用。docker希望您的容器具有或要运行,并且它必须是后台进程,例如web服务器。 检查关于
RUN
CMD
entrypoint
将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"]

当我的磁盘空间用完时,它发生在我身上。尝试修剪,看看它是否解决了问题“docker system prune”尝试交换这两行。
COPY LicenseServer.zip/opt/MicroFocus
然后
WORKDIR/opt/MicroFocus
@AmirImani docker systme prune没有任何区别。但docker ps怎么会显示不运行的图像呢/start-licenseserver.sh应该在后台启动一项服务您从运行ls-lart得到什么?好的,这很有帮助。但现在我得到了一个错误:对于e6e3c75ca623_at_licenseserver_1无法启动服务licenseserver:OCI运行时创建失败:container_linux.go:349:启动容器进程导致“exec:\“start licenserver.sh\”:在$PATH中找不到可执行文件:unknownok尝试将命令更改为
CMD[“/opt/MicroFocus/start licenseserver.sh”]
我猜这是完整的,错误显示容器无法看到可执行文件,因此应该修复它,让我知道它是否工作,以便我更新我的答案。这是一个许可问题。I chmod 777脚本,现在可以运行,但容器仍然存在。退出0表示进程已停止,没有错误。您确定脚本运行后台服务吗?