Docker,悬挂容器?

时间:2018-08-01 10:23:12

标签: docker docker-compose containers

我无法启动docker-compose环境,因为端口是由某些东西分配的。

ERROR: for ***** Cannot start service *****: driver failed programming external connectivity on endpoint ***** (4314ec13837d41ca8ef1b7e1d8446ab8cfa96136539a75ac763ba1cf538ffdc1): Bind for 0.0.0.0:8881 failed: port is already allocated
Encountered errors while bringing up the project.

但是,没有这样的容器

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

但是当我检查docker-compose网络时,我可以在网络中看到一个容器

$ docker network inspect *****
[
    {
        "Name": "*****",
        "Id": "56d09f51e8fe5a9ad11dd6cdaff7e89983f519fd1ecff08116c2e48a3b34ff32",
        "Created": "2018-08-01T08:17:30.704352821Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "08a5defa5ceae7a5a5ac7ec85f5ecd0924ecb4e5eacca4f5752049e32a0f190c": {
                "Name": "08a5defa5cea_*****",
                "EndpointID": "5d081a19b5ffe4e893965a4306668059900812532cc4995e168ce017f2765e12",
                "MacAddress": "02:42:ac:12:00:06",
                "IPv4Address": "172.18.0.6/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {
            "com.docker.compose.network": "*****",
            "com.docker.compose.project": "docker"
        }
    }
]

但是不可能删除此容器

docker rm -f *****
Error: No such container: *****

如何进行?

1 个答案:

答案 0 :(得分:0)

我运行此脚本来关闭所有有时滞留的卡住的容器

#!/bin/bash

# ... bring down all containers

force_it=""  #  normal
# force_it=" -f "  #  when you see  "device or resource busy"

for curr_container_id in $( docker ps -q ); do

    echo curr_container_id $curr_container_id
    echo
    echo "docker stop $curr_container_id "
          docker stop $curr_container_id
    echo
    echo "docker rm $force_it $curr_container_id "
          docker rm $force_it $curr_container_id
done

for curr_container_id in $( docker ps -q -a ); do

    echo curr_container_id $curr_container_id
    echo
    echo "docker stop $curr_container_id "
          docker stop $curr_container_id
    echo
    echo "docker rm $force_it $curr_container_id "
          docker rm $force_it $curr_container_id
done

它有99%的时间能正常工作...如果不在顶部附近,您可以切换强制参数并重新运行它...这可让您避免不得不跳动任何docker服务器