gpt4 book ai didi

docker - 如何使docker撰写状态运行,当前在docker撰写后停止

转载 作者:行者123 更新时间:2023-12-02 19:20:16 24 4
gpt4 key购买 nike

我正在尝试通过在docker-compose yaml下面尝试使docker-compose状态启动并运行,但是似乎当我执行docker-compose ps时,我看到容器已停止,如何使docker-compose up并运行无限次

docker-compose.yml

  version: "3.7"
services:
execute:
command: tail -f /dev/null
image: abc/SREBlackBoxTester
labels:
- mylabelOne= "SREBlackBoxTester"
volumes:
- type: volume
source: AWS_CREDENTIALS_FOLDER
target: /home/scar/.aws
source: SCAR_CONFIG_FOLDER
target: /home/scar/.scar
volume:
nocopy: true
command: bash -c "while true; do sleep 10; done"

volumes:
AWS_CREDENTIALS_FOLDER:
SCAR_CONFIG_FOLDER:

Docker文件在这里
 FROM python:3.8-alpine

RUN apk add zip unzip
RUN addgroup --system scar && adduser -S -G scar scar
USER scar

WORKDIR /home/scar/
RUN mkdir /home/scar/.scar && \
mkdir /home/scar/.aws && \
echo '[default]' > /home/scar/.aws/config && \
echo 'region=us-west-2' >> /home/scar/.aws/config && \
echo '[default]' > /home/scar/.aws/credentials && \
echo 'aws_access_key_id=AX' >> /home/scar/.aws/credentials && \
echo 'aws_secret_access_key=wctKx/KdRCSQ' >> /home/scar/.aws/credentials

ENV PATH=/home/scar/.local/bin:$PATH
ENV SCAR_LOG_PATH=/home/scar/.scar/

RUN pip3 install scar --user
CMD scar init -n SREBlack -i image


ENTRYPOINT /bin/sh

docker ps -a的输出
$ docker ps -a
CONTAINER ID IMAGE COMMAND

CREATED STATUS PORTS
NAMES
f5af892b3b19 abc/image "/bin/sh -c /bin/sh …"
Less than a second ago Exited (0) Less than a second ago
clever_wescoff

最佳答案

通常,应将Docker容器设置为运行特定程序。在大多数情况下,默认值不应为交互式shell或人工tail -f /dev/null命令。在您的示例中,实际上没有任何运行您安装的程序。您应该更改Dockerfile的末尾以实际运行它

FROM python:3.8-alpine
RUN pip install scar
CMD scar

并通过 volumes:挂载提供凭据等详细信息。 (请考虑将您的AWS凭证嵌入到Docker镜像中是否对它们造成了威胁;拥有该镜像的任何人都可以根据您的IAM权限执行允许执行的任何操作。)

在该示例中,您显示了 ENTRYPOINTcommand:的组合导致无意义的命令行。 Understand how CMD and ENTRYPOINT interact上的Dockerfile文档具有技术细节。由于您指定了 shell 格式的 ENTRYPOINT,因此将其包装在 sh -c中,然后将 command:文件中的 docker-compose.yml附加到该格式。你结束时喜欢
/bin/sh -c '/bin/sh' tail -f /dev/null

它只是启动一个 shell 程序(“ tail ...”被忽略),并且由于没有输入,它会立即退出。

通常,Docker Compose面向运行长时间运行的应用程序,例如数据库或Web服务器。 SCAR文档中有一个 running the tool in Docker的示例。但是,对于像这样的命令行工具,由于需要做一些事情,例如将AWS凭证从主机手动推送到容器中,并且具有完全等同于root的权限来运行该工具,因此您可能会发现运行该工具更加方便。工具直接在主机上,可能安装在Python虚拟环境中。

关于docker - 如何使docker撰写状态运行,当前在docker撰写后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60454026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com