Tôi muốn chạy một ứng dụng GUI được đóng gói từ một máy từ xa.
Tôi không muốn giải quyết vấn đề này bằng cách thêm máy chủ ssh vào container vì
- Tôi đã có quyền truy cập vào máy chủ qua SSH
- Nó thêm chi phí không cần thiết
- Nó làm cho container không di động giữa sử dụng từ xa và cục bộ
Tôi đã có thể chạy thành công các ứng dụng GUI trên máy chủ, nhưng không phải từ trong container. Đây là những bước tôi đã thực hiện cho đến nay:
Người dẫn chương trình
xauth +
(không lâu dài, nhưng hữu ích để loại bỏ các vấn đề có thể xảy ra)docker-user
với uid 501000 trên máy chủ ==docker-user
với uid 1000 trong vùng chứa thông qua tính năng không gian tên.Xauthority
tập tin sao chép vàodocker-user
thư mục nhà
Dockerfile
- Dựa trên núi cao
- Cài đặt
xauth
và, cho mục đích thử nghiệm,xterm
- Tạo ra
docker-user
với uid / gid thích hợp
docker-soạn
- Biến môi trường
DISPLAY
chuyển tiếp trong - Khối lượng
/home/docker-user/:/home/docker-user/:ro
để cung cấp.Xauthority
cookie - Âm lượng
/tmp/.X11-unix:/tmp/.X11-unix:ro
để cung cấp quyền truy cập ổ cắm X11 - Chạy lệnh
su - docker-user -c "export DISPLAY=$DISPLAY && xterm"
su
được sử dụng để chạy nhưdocker-user
DISPLAY
chuyển tiếp vàosu
bối cảnh
Thật không may, điều này vẫn chưa đủ. Trong khi xterm trên hệ điều hành máy chủ kết nối với máy chủ X cục bộ của tôi mà không gặp sự cố, xterm trong vùng chứa nói Xt error: Can't open display: localhost:10.0
.
Tôi đã xác nhận rằng "localhost: 10.0" là chính xác, localhost tồn tại trong bộ chứa /etc/hosts
và cookie và ổ cắm đang thực hiện với các quyền phù hợp.
Điều gì khác có thể có thể đi sai?