我有一个简单的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.yml
和Dockerfile
,所以我知道没有容器可以重新启动。
奇怪的是,虽然容器停止并且没有重新启动,但我仍然可以将其视为一个进程。如果我输入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