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



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

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,同样的事情不断发生'

如何一次性终止此容器?

更多细节:

这是每次自动运行的命令(从这里建议的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,所以我知道没有容器可以重新启动。

奇怪的是,虽然容器停止并且没有重新启动,但我仍然可以将其视为一个进程。如果我输入ps aux | grep docker,有

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

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

在你的描述中,你有一个拼写错误unless-stoped->unless-stopp

检查docker run --restart的文档,你正在使用¨¨,但这不是一个选项:https://docs.docker.com/engine/reference/run/#restart-policies---restart

最新更新