jpetazzo/pipework

Docker Inspect Returned Invalid PID 0

Rodman101 opened this issue · 3 comments

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

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.

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.