jpetazzo / pipework

Software-Defined Networking tools for LXC (LinuX Containers)
Apache License 2.0
4.21k stars 727 forks source link

Docker Inspect Returned Invalid PID 0 #240

Closed Rodman101 closed 5 months ago

Rodman101 commented 4 years ago

Hello,

I have an Intel I350-T4 that I'm trying to pass through to containers. I understand pipework isn't really being maintained, but I think it's my only choice for what I'm trying to do.

I would like to have the containers be on the same subnet of 192.168.1.0/24 which is why I'm trying to use pipework. Setting up separate MACVLANs with their own parent devices does not allow for them to all be on the same subnet from my testing.

I followed the instructions in the readme and ended up with this for one of the containers: sudo pipework --direct-phys ens4f0 LanCache 192.168.1.101/32 Then it will return: Docker inspect returned invalid PID 0

If I run the pipework command with the container up, it will return: RTNETLINK answers: Device or resource busy

Docker version output: root@Home-Server:~# docker version Client: Docker Engine - Community Version: 19.03.12 API version: 1.40 Go version: go1.13.10 Git commit: 48a66213fe Built: Mon Jun 22 15:45:50 2020 OS/Arch: linux/amd64 Experimental: false

Server: Docker Engine - Community Engine: Version: 19.03.12 API version: 1.40 (minimum version 1.12) Go version: go1.13.10 Git commit: 48a66213fe Built: Mon Jun 22 15:44:21 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.2.13 GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429 runc: Version: 1.0.0-rc10 GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init: Version: 0.18.0 GitCommit: fec3683

jpetazzo commented 4 years ago

Hi!

Pipework can't work if the container is stopped. In other words, the container must be running.

Device or resource busy might indicate a route or subnet conflict. You could try run pipework with sh -x to see all the commands that it's running; it will be very verbose but perhaps give you a hint about what's happening.

Generally speaking - I suppose that you try to assign each of the 4 ports of the NIC to a different container? You could probably achieve it by moving the network interface manually without pipework, too.

Rodman101 commented 4 years ago

I ran pipework with the below command with the container up. There's no output that I can find.

root@Home-Server:~# sh -x pipework --direct-phys ens4f1 PlexMediaServer 192.168.1.102/24 root@Home-Server:~# When I run ip link show the interface shows that it's up, but pinging the IP does nothing.

Should the container have a network defined in order for this to work?

Generally speaking - I suppose that you try to assign each of the 4 ports of the NIC to a different container? You could probably achieve it by moving the network interface manually without pipework, too.

This is basically what I'm trying to do. I have LanCache Plex Media Server, and a Minecraft server (all in docker containers) that I am trying to run with the same subnet and gateway using different ports on the NIC. How would you recommend doing it manually? Using MACVLAN doesn't work because of subnet overlap.

jpetazzo commented 4 years ago

That's weird - "sh -x" should give you a lot of output, e.g.

[jp@hex pipework]$ sh -x pipework
+ set -e
+ case "$1" in
+ IFNAME=
+ CONTAINER_IFNAME=
+ '[' '' = -i ']'
+ '[' '' = -l ']'
+ FAMILY_FLAG=-4
+ '[' '' = -a ']'
+ GUESTNAME=
+ IPADDR=
+ MACADDR=
+ case "$MACADDR" in
+ VLAN=
+ case "$MACADDR" in
...

On Mon, Aug 10, 2020 at 8:44 PM Rodman101 notifications@github.com wrote:

I ran pipework with the below command with the container up. There's no output that I can find.

root@Home-Server:~# sh -x pipework --direct-phys ens4f1 PlexMediaServer 192.168.1.102/24 root@Home-Server:~# When I run ip link show the interface shows that it's up, but pinging the IP does nothing.

Should the container have a network defined in order for this to work?

Generally speaking - I suppose that you try to assign each of the 4 ports of the NIC to a different container? You could probably achieve it by moving the network interface manually without pipework, too.

This is basically what I'm trying to do. I have LanCache Plex Media Server, and a Minecraft server (all in docker containers) that I am trying to run with the same subnet and gateway using different ports on the NIC. How would you recommend doing it manually? Using MACVLAN doesn't work because of subnet overlap.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/jpetazzo/pipework/issues/240#issuecomment-671523634, or unsubscribe https://github.com/notifications/unsubscribe-auth/AABJ3WNRDNDRC6DDC2AIRPTSAA52BANCNFSM4PZIC4VA .

-- @jpetazzo https://twitter.com/jpetazzo http://jpetazzo.github.io/