Docker: any way to list open sockets inside a running docker container?

前端 未结 3 1700
遇见更好的自我
遇见更好的自我 2021-01-29 21:53

I would like to execute netstat inside a running docker container to see open TCP sockets and their statuses. But, on some of my docker containers, netstat is not available. Is

相关标签:
3条回答
  • 2021-01-29 22:31

    You can use the nsenter command to run a command on your host inside the network namespace of the Docker container. Just get the PID of your Docker container:

    docker inspect -f '{{.State.Pid}}' container_name_or_id
    

    For example, on my system:

    $ docker inspect -f '{{.State.Pid}}' c70b53d98466
    15652
    

    And once you have the PID, use that as the argument to the target (-t) option of nsenter. For example, to run netstat inside the container network namespace:

    $ sudo nsenter -t 15652 -n netstat
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State      
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
    

    Notice that this worked even though the container does not have netstat installed:

    $ docker exec -it c70b53d98466 netstat
    rpc error: code = 13 desc = invalid header field value "oci runtime error: exec failed: container_linux.go:247: starting container process caused \"exec: \\\"netstat\\\": executable file not found in $PATH\"\n"
    

    (nsenter is part of the util-linux package)

    0 讨论(0)
  • 2021-01-29 22:39

    server:docker container ls

    CONTAINER ID    IMAGE              COMMAND                  CREATED          STATUS           PORTS       NAMES
    
    80acfa804b59    admirito/gsad:10   "docker-entrypoint.s…"   18 minutes ago   Up 10 minutes    80/tcp      gvmcontainers_gsad_1
    
    0 讨论(0)
  • 2021-01-29 22:44

    The two commands from @larsks answer merged into one-liner - no need to copy-paste the PID(s) (just replace container_name_or_id):

    sudo nsenter -t $(docker inspect -f '{{.State.Pid}}' container_name_or_id) -n netstat
    
    0 讨论(0)
提交回复
热议问题