python docker容器即使停止也会保持重新启动

hzbexzde  于 2022-12-11  发布在  Docker
关注(0)|答案(1)|浏览(124)

我在Dockerfile中有一个简单的python图像:

FROM python:3.8-slim-buster
RUN apt-get -y update
RUN apt-get -y install git
RUN apt-get update \
 && apt-get install gcc -y \
 && apt-get clean
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install --upgrade pip
RUN pip3 install -r requirements.txt
ENTRYPOINT ["python"]

我曾经用一个restart: unless-stoped属性的docker-compose.yml文件运行过这个程序。现在每次我停止容器,它都会立即重新启动。它的行为就像restart: always一样。即使当我放入restart: no,停止容器,重建和docker run,同样的事情还是会发生。“
"我怎样才能彻底杀死这个容器“

更多详细信息:

这是每次自动运行的命令(根据建议here执行docker inspect --format "$(curl -s https://gist.githubusercontent.com/efrecon/8ce9c75d518b6eb863f667442d7bc679/raw/run.tpl)" <container id>时获得此命令:

docker run \
  --name "/src_python_run_b28e47065e14" \
  --runtime "runc" \
  --volume "/home/dir/src:/app:rw" \
  --log-driver "json-file" \
  --restart "" \
  --network "my-network_default" \
  --network-alias "src_python_run_b28e47065e14" \
  --network-alias "6116957bb6af" \
  --hostname "6116957bb6af" \
  --env "PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \
  --env "LANG=C.UTF-8" \
  --env "PYTHON_VERSION=3.8.15" \
  --env "PYTHON_PIP_VERSION=22.0.4" \
  --env "PYTHON_SETUPTOOLS_VERSION=57.5.0" \
  --env "PYTHON_GET_PIP_URL=https://github.com/pypa/get-pip/raw/66030fa0332b4914d4c4d089661a0bdeeeb274/public/get-pip.py" \
  --label "com.docker.compose.config-hash"="b2a7338a55582eb17895d8b5c2ee820d7c84ed2c900d7d7de0bb1fa787638d" \
  --label "com.docker.compose.container-number"="1" \
  --label "com.docker.compose.depends_on"="" \
  --label "com.docker.compose.image"="sha256:83d2d8f4fc6374f478b982ecc217caf34c58bccf4a497d182a6e1fe35e5e04" \
  --label "com.docker.compose.oneoff"="True" \
  --label "com.docker.compose.project"="src" \
  --label "com.docker.compose.project.config_files"="/home/dir/src/docker-compose.yml" \
  --label "com.docker.compose.project.working_dir"="/home/dir/src" \
  --label "com.docker.compose.service"="python" \
  --label "com.docker.compose.slug"="b28e47065e14275ac786d683ffcc7cc7489e3efef144d45ab9e2ad4bf48023" \
  --label "com.docker.compose.version"="2.5.0" \
  --attach stdin \
  --attach stdout \
  --attach stderr \
  --interactive \
  --entrypoint "python" \
  "src_python" \
  "-m" "test" "run" "--file" "true"

有趣的更新

作为一个临时测试,我删除了docker-compose.ymlDockerfile,这样我就知道没有容器可以重新启动。
奇怪的是,尽管容器停止了并且没有重新启动,但我仍然可以将其视为一个进程。

user  2963491  0.0  0.3 728792 24608 ?        Rl   17:01   0:00 docker-compose run python -m test run --file true

我试着杀死这个进程,但它不工作,因为它没有修复,PID正在改变意味着进程被停止,并重新启动。为什么会发生这种情况?

bkhjykvo

bkhjykvo1#

在您的描述中,您有一个排印错误unless-stoped-〉unless-stop**p* 艾德并且在检查响应中,重新启动参数为空。
查看docker run --restart的文档,您正在使用¨¨,但这不是一个选项:https://docs.docker.com/engine/reference/run/#restart-policies---restart

相关问题