Docker container functions don't operate on Mac/Win10 local - docker

I launch web application with docker, docker-compose.
On remote linux, all function launch without problems.
But on Mac local and Win10 local, some issues occur.
Mac issue is container and api can't load file with FileNotFoundException.
Func need to load file and scan, parse data.
But file didn't loaded, API Func return Null data.
File share with docker volume.
And Win10 issue is on build time.
On Mac and Linux, build has no problems.
But, Win10 can't load docker init.sh.
board | /docker-entrypoint.sh: Launching /docker-entrypoint.d/00-init.sh
board | /docker-entrypoint.sh: 31: /docker-entrypoint.d/00-init.sh: not found
board exited with code 127
I think these issues occured by path and fs problem.
But I don't know exact reason and solution.
How can I fix these?

I solve this problem on Windows 10.
The reason is encoding-difference between Windows and Mac/Linux.
In sh file, CR is 0d and LF is 0a.
And if CR(0d) contains, container can't read this file.
So, remove all CR(0d) in file.

Related

WebKitWebProcess / Gdk-Error when trying to run a Tauri app in a container via x11 connection

I'm trying to display a basic Tauri app GUI running in a Docker container but connected to the host's X11 server through a unix socket. But I get the following warning and error when running npm run tauri dev:
(WebKitWebProcess:6009): Gdk-ERROR **: 00:17:37.147: The program 'WebKitWebProcess' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadValue (integer parameter out of range for operation)'.
(Details: serial 258 error_code 2 request_code 152 (GLX) minor_code 34)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the GDK_SYNCHRONIZE environment
variable to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
I get opened a GUI window on the host but it's blank (but should contain some text / HTML markup).
As I am able to get Firefox and Gedit running from within the container but not the gnome-terminal, I think it's some permissions issue or there is some missing package to get the Webkit based GUI window connecting to my host's X server.
$DISPLAY and /tmp/.X11-unix are set properly. On the host I set xhost +
The container is running as node user. Cargo is installed in /home/node/.cargo/bin. /home/node is owned by root:node with 775 permissions on folders and 664 on files (+x on executable scripts).
I'm just getting started with Rust and Tauri and also not a big expert on X server and Docker networking.
Any ideas how to get it work?
I ended up using Qemu + Virt-Manager instead of docker. For the starters I've used an Ubuntu template as the clipboard sharing works out of the box with my host running on Ubuntu as well. Sound sharing and video playback works out of the box, too. And if I should get in the situation where I would need a separate VM for each app, then I would use my minimalist Arch template to spin up the VM's - the size should be pretty close to that of a docker container.
Edit:
LXC/LXD and Podman might be even better alternatives, I have been told.

Running gdb in Debian docker image results

I have some trouble when running gdb in a docker image and I am not sure what is causing the problems since I am a complete newbie when it comes to gdb and docker.
Background
I am trying to write a c++ program for the Lego EV3 which runs on ev3dev. In order to compile it, I have set up docker with the ev3dev image on my Windows machine and am able to successfully build inside that image, transfer the binary to the EV3 and execute it there. This all works well until I need to start (remote) debugging. My plan is to start a gdbserver on the EV3 with the program and the open a gdb session inside the docker container in my Windows machine and connect to the EV3 gdbserver. After I have fixed the first error when remote debugging - I needed to use gdb-multiarch on my Windows machine - I have encountered more problems which I don't really find a solution too.
Problem
When running gdb directly on my Windows machine inside the docker container (or when connecting to the gdbserver from docker using gdb-multiarch) I always get the following output after starting the program with run:
(gdb) run
Starting program: /src/ev3/build/src/EV3_main
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.
Warning:
Cannot insert breakpoint -1.
Cannot access memory at address 0x4f58
and when using next or step I get:
(gdb) next
Cannot find bounds of current function
Since I couldn't really find any solution online, I would really appreciate any help!
Thanks in advance!
I always get the following output after starting the program with run
This error usually means that the dynamic loader in your docker container has been fully stripped. It's a packaging mistake by the creator of that container.
If you are not using dlopen(), this isn't a big problem.
(gdb) next
Don't do that: you are not stopped in a location where GDB knows where the next line is. Do continue instead.

How to get started development inside docker container in windows operating system

I am a developer who is using Ubuntu 20.04 LTS regularly for my development. I never install any packages like, node, PHP, python in the OS and make use of docker for the purpose. VS Code is the editor I use, and the extension of the remote container will help me to develop & debug inside the docker container.
Right now, I am in the process of moving the development to a windows environment and I wanted to follow a similar workflow there too. Unfortunately, I am facing few issues like "file changes are not getting detected" (when npm serve in angular and react projects).
https://github.com/microsoft/WSL/issues/4739
https://www.reddit.com/r/bashonubuntuonwindows/comments/c48yej/wsl_2_react_not_reloading_with_file_changes/
I have tried different methods to solve the issue like
use wsl2 and then docker inside that and then serve from the container
use just docker and serve the code from inside the container
Regardless of the methods, the file changes are not getting detected inside the docker.
Trust me I have gone through many bizarre words like inotify, increasing the watchers, etc... Nothing helped.
Is there a developer out there following a similar practice in a Windows environment? (docker + windows)
Any help is highly appreciated.
I suggest moving the files to the wsl2 file system and not the windows.
Wsl2 'sees' the windows file system from inside a mount image /mnt/c .
Move out of it, like at ~ (cd ~) and i think your files will be normally watched .

Docker commands and setup running successfully yesterday started giving error "ENOENT" today suddenly on windows 10

I am relatively new for the docker technology.
Yesterday I setup docker on windows 10 machine and ran few dockers.
Today I first used command "docker system prune" so that I can run all of it once again without any conflicts.
But now I am firing below command:
docker run --name DockerName -v /c/collections:/etc/newman -t
postman/newman:ubuntu run
"MyAPITestCollection.postman_collection.json"
--environment="MyAPITestEnvironment.postman_environment.json" --reporters="json,cli" --reporter-json-export="reports/MyAPITestReport.json"
And getting below error:
error: ENOENT: no such file or directory, open 'MyAPITestEnvironment.postman_environment.json'
I haven't made any changes to the directories or anything else.
I checked the docker desktop setup option and found that the drive on which the file is located is still showing as the shared drive.
I tried by restarting the docker desktop several times and once by rebooting the machine as well but still found same error.
Kindly requesting to help me figure out the root cause of this issue and the solution as well.
My docker network had once again become public so firewall might be preventing the file access.
I changed it to private by using below command and it ran successfully:
Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private

Removing Docker on windows 10 with script file

I have tried a lot of steps to remove docker desktop on my machine. It prompts a lot of errors during uninstallation. Performed the script file as well. But it still in the app list.

Resources