Jump to content

EUXeGou.png.2eb8775a24383c0b60a8a7223652b87c.png

20 minutes ago, AJB_YT said:

I really need help understanding what docker is I thought I understood it. it's basically a bunch of OS/VM in one area. But then I found a Holo ISO Docker image and now I'm confused. cause Holo ISO is  A WHOLE FRICKEN OS 

docker is a containerization platform meant to offer easy deployment and isolation of different applications.

 

Unlike a VM, docker containers are not virtualized. They share the kernel with the host system but use their own user space.

If your question is answered, mark it so.  | It's probably just coil whine, and it is probably just fine |   LTT Movie Club!

Read the docs. If they don't exist, write them. | Professional Thread Derailer

Desktop: i7-8700K, RTX 2080, 16G 3200Mhz, EndeavourOS(host), win10 (VFIO), Fedora(VFIO)

Server: ryzen 9 5900x, GTX 970, 64G 3200Mhz, Unraid.

 

Link to comment
https://linustechtips.com/topic/1485828-docker/#findComment-15782859
Share on other sites

Link to post
Share on other sites

Docker just encapsulates the userspace in a separate "environment" from your regular userspace, but still sharing the kernel underneath. It's not a VM since it makes use of the kernel, it provides less isolation because of that but it's also way more lightweight.

 

Is this Holo ISO? https://github.com/theVakhovskeIsTaken/holoiso

 

If so, that's just another linux distro sharing the same linux kernel, you can just re-use that same userland in a container while sharing the host's kernel.

FX6300 @ 4.2GHz | Gigabyte GA-78LMT-USB3 R2 | Hyper 212x | 3x 8GB + 1x 4GB @ 1600MHz | Gigabyte 2060 Super | Corsair CX650M | LG 43UK6520PSA
ASUS X550LN | i5 4210u | 12GB
Lenovo N23 Yoga

Link to comment
https://linustechtips.com/topic/1485828-docker/#findComment-15782862
Share on other sites

Link to post
Share on other sites

I've asked chatGPT about it.
I'm still learning in class about docker so I couln't explain much about it.

 

Docker is an open-source platform that automates the deployment, scaling, and management of applications inside containers.

A container is a lightweight, stand-alone, and executable package of software that includes everything needed to run a piece of software, including the code, runtime, system tools, libraries, and settings. Because containers provide a consistent environment, applications running in containers can be easily moved between development, testing, and production environments.

Here are some use cases of Docker:

  1. Application Development and Testing: Docker provides an environment to develop and test applications in an isolated environment, which eliminates inconsistencies that can occur between development and production environments.

  2. Continuous Integration and Deployment (CI/CD): Docker can be used to automate the build and deployment of applications, which makes it easier to continuously deliver new features to customers.

  3. Microservices Architecture: Docker enables the creation of microservices-based applications, which break down a large application into smaller, independent services. This makes it easier to develop, test, deploy, and scale each service individually.

  4. Cloud Migration: Docker containers can run on any infrastructure, making it easier to move applications to the cloud or between clouds.

  5. Infrastructure Optimization: Docker can reduce the size of the infrastructure required to run applications, because multiple applications can run on a single host, and multiple containers can run on a single host.

  6. Deploying legacy applications: Docker enables legacy applications to be deployed in a container, allowing organizations to take advantage of modern infrastructure while preserving the functionality of older applications.

 

 

¿Could you please explain me real-life uses of docker?
  1. Web Applications: Docker can be used to run and manage web applications, allowing developers to easily deploy and scale their applications in a consistent environment.

  2. Database Management: Docker can be used to run databases, such as MongoDB, MySQL, and PostgreSQL, in containers. This makes it easier to manage and scale database infrastructure.

  3. CI/CD Pipelines: Docker can be used to build and test applications in an isolated environment, as part of a continuous integration and deployment (CI/CD) pipeline. This ensures that applications are tested in a consistent environment before they are deployed to production.

  4. Big Data Analytics: Docker can be used to run big data analytics tools, such as Apache Hadoop and Apache Spark, in containers. This makes it easier to manage and scale big data infrastructure.

  5. Network Services: Docker can be used to run network services, such as DNS, Load Balancers, and Reverse Proxies, in containers. This makes it easier to manage and scale network infrastructure.

  6. Legacy Applications: Docker can be used to run legacy applications, such as old versions of software or applications that are difficult to run on modern infrastructure, in containers. This allows organizations to take advantage of modern infrastructure while preserving the functionality of older applications.

  7. Development Environments: Docker can be used to create and manage development environments, which are isolated environments that are used by developers to build, test, and debug applications.

  8. Educational purposes: Docker can be used in educational settings to provide students with a consistent and isolated environment to work on software projects, without interfering with the host operating system.

3700x PBO stock | b550-f | Crucial Ballistix 32GB 3200MHz | RTX 4080 Asus TUF OC | SN 850X 2TB - SN 850 1T | Cooler Master XG 850w Platinum PSU

Link to comment
https://linustechtips.com/topic/1485828-docker/#findComment-15782866
Share on other sites

Link to post
Share on other sites

Just now, igormp said:

Docker just encapsulates the userspace in a separate "environment" from your regular userspace, but still sharing the kernel underneath. It's not a VM since it makes use of the kernel, it provides less isolation because of that but it's also way more lightweight.

 

Is this Holo ISO? https://github.com/theVakhovskeIsTaken/holoiso

 

If so, that's just another linux distro sharing the same linux kernel, you can just re-use that same userland in a container while sharing the host's kernel.

for some more clarity.

a linux distribution is actually just a conglomeration of different components.

 

Usually something like:

Some version of the linux kernel,

a display server (x, wayland, or none),

core libraries (gcc, etc)

applications (window managers, web browsers, text editors)

 

 

a docker container has everything below the kernel. since linux distributions are really just collections of software, you can remove parts of it and use other parts.

 

If your question is answered, mark it so.  | It's probably just coil whine, and it is probably just fine |   LTT Movie Club!

Read the docs. If they don't exist, write them. | Professional Thread Derailer

Desktop: i7-8700K, RTX 2080, 16G 3200Mhz, EndeavourOS(host), win10 (VFIO), Fedora(VFIO)

Server: ryzen 9 5900x, GTX 970, 64G 3200Mhz, Unraid.

 

Link to comment
https://linustechtips.com/topic/1485828-docker/#findComment-15782867
Share on other sites

Link to post
Share on other sites

1 hour ago, igormp said:

Docker just encapsulates the userspace in a separate "environment" from your regular userspace, but still sharing the kernel underneath. It's not a VM since it makes use of the kernel, it provides less isolation because of that but it's also way more lightweight.

 

Is this Holo ISO? https://github.com/theVakhovskeIsTaken/holoiso

 

If so, that's just another linux distro sharing the same linux kernel, you can just re-use that same userland in a container while sharing the host's kernel.

This the the thing i was talking about https://github.com/SteamDeckHomebrew/holo-docker

Link to comment
https://linustechtips.com/topic/1485828-docker/#findComment-15783026
Share on other sites

Link to post
Share on other sites

23 minutes ago, AJB_YT said:

This the the thing i was talking about https://github.com/SteamDeckHomebrew/holo-docker

Yeah, this just downloads the SteamOS image (which is based off arch), and uses its userland inside a docker image.

FX6300 @ 4.2GHz | Gigabyte GA-78LMT-USB3 R2 | Hyper 212x | 3x 8GB + 1x 4GB @ 1600MHz | Gigabyte 2060 Super | Corsair CX650M | LG 43UK6520PSA
ASUS X550LN | i5 4210u | 12GB
Lenovo N23 Yoga

Link to comment
https://linustechtips.com/topic/1485828-docker/#findComment-15783058
Share on other sites

Link to post
Share on other sites

On 2/4/2023 at 4:44 AM, AJB_YT said:

This the the thing i was talking about https://github.com/SteamDeckHomebrew/holo-docker

 

So if we look at this docker we can see what theyre doing. 

 

First they download the "jupiter" build of SteamOS and they unzip it to a folder called "steamos_image"

#!/bin/sh
set -e

# these are hardcoded and can be found in ~/.netrc
AUTH="jupiter-image-2021:e54fe7f0-756e-46e1-90d2-7843cda0ac01"
FILE=$(curl -sS --user $AUTH "https://steamdeck-atomupd.steamos.cloud/updates?product=steamos&release=holo&variant=steamdeck&arch=amd64&version=snapshot&buildid=20220526.1&checkpoint=False&estimated_size=0" | jq -r ".minor.candidates[0].update_path" | sed 's/\.raucb/\.img.zip/')
echo "Downloading image $FILE"
curl --user $AUTH "https://steamdeck-images.steamos.cloud/$FILE" -o ./steamos.zip
unzip ./steamos.zip -d ./steamos_image
rm ./steamos.zip

 

Then they build that into a "base image" called "holo-base" which they might use for multiple Docker containers.

This is just SteamOS in this case, but building this "base image" is where you might add user permissions, tools, and packages that are common amongst all your Docker containers that use this base. 

#!/bin/bash
set -e

LOOP=$(losetup --find --partscan --show ./steamos_image/disk.img)
mkdir -p ./steamos
mount ${LOOP}p3 ./steamos
unmountimg() {
    umount ./steamos
    losetup -d $LOOP
}
trap unmountimg ERR

docker build -t ghcr.io/steamdeckhomebrew/holo-base:latest .

unmountimg

 

 

Then they build the actual holo-docker image. 

They start from scratch which means its empty...theres no base image, then they add the /steamos folder, which is a copy of the above "holo-base"

 

They then remove a whole bunch of packages from the image using pacman (package manager). 

They then update everything and then they add some packages back to it. 

 

FROM scratch as builder
ADD ./steamos /
ADD ./steamos/usr/share/factory /

# not removing libcroco holo-desync holo-keyring holo-pacman holo-pipewire holo-sudo holo-wireplumber elfutils
RUN pacman -R --noconfirm accounts-qml-module accountsservice adobe-source-code-pro-fonts adwaita-icon-theme alsa-card-profiles alsa-lib alsa-plugins alsa-topology-conf alsa-ucm-conf alsa-utils amd-ucode anthy aom appstream appstream-glib appstream-qt arch-install-scripts archlinux-appstream-data ark aspell aspell-en assimp atkmm at-spi2-core attica avahi baloo baloo-widgets bash-bats bash-completion bluedevil bluez bluez-libs bluez-plugins bluez-qt bluez-utils bolt boost-libs breeze breeze-grub breeze-gtk breeze-icons btop btrfs-progs bubblewrap cairo cairomm cantarell-fonts caps casync-git cdparanoia cfitsio cifs-utils clang-libs convertlit cpio cpupower dav1d dbus-glib dbus-python dconf desktop-file-utils desync-git discount discover djvulibre dmidecode dmraid dnssec-anchors dolphin dos2unix dosfstools double-conversion dracut drkonqi ebook-tools editorconfig-core-c efibootmgr efivar ell enchant evtest exfat-utils exiv2 f3 fatresize fd ffmpeg fish flac flashrom flatpak fontconfig frameworkintegration freeglut freerdp freetype2 fribidi fuse2 fuse3 fuse-common fwupd gamemode gamescope gcab gdb gdb-common gdk-pixbuf2 geoclue geocode-glib giflib git ghostscript glew glfw-x11 glibmm glib-networking glslang glu gobject-introspection-runtime gpm gptfdisk gpu-trace graphene graphite grub gsettings-desktop-schemas gsm gst-plugins-base gst-plugins-base-libs drm_info gstreamer gtk3 gtkmm3 gtk-update-icon-cache gwenview harfbuzz hicolor-icon-theme hidapi htop hunspell ibus ibus-anthy ibus-hangul ibus-pinyin ibus-table ibus-table-cangjie-lite iniparser iotop iso-codes iw iwd jasper jbig2dec jq json-glib jupiter-dock-updater-bin jupiter-fan-control jupiter-hw-support jupiter-legacy-support kaccounts-integration kactivities kactivities-stats kactivitymanagerd karchive kate kauth kbookmarks kcmutils kcodecs kcolorpicker kcompletion kconfig kconfigwidgets kcontacts kcoreaddons kcrash kdbusaddons kdeclarative kde-cli-tools kdeconnect kdecoration kded kde-gtk-config kdelibs4support kdeplasma-addons kdesu kdialog kdnssd kdsoap kdsoap-ws-discovery-client kdump-steamos kemoticons kfilemetadata kgamma5 kglobalaccel kguiaddons kholidays khotkeys ki18n kiconthemes kidletime kimageannotator kinfocenter kio kio-extras kio-fuse kirigami2 kitemmodels kitemviews kitty-terminfo kjobwidgets kjs kmenuedit knewstuff knotifications knotifyconfig konsole kpackage kparts kpeople kpeoplevcard kpipewire kpmcore kpty kquickcharts krunner kscreen kscreenlocker kservice ksshaskpass ksystemstats ktexteditor ktextwidgets kunitconversion kuserfeedback kwallet kwallet-pam kwayland kwayland-integration kwidgetsaddons kwin kwindowsystem kwrited kxmlgui lame layer-shell-qt lcms2 ldb ldns lib32-alsa-lib lib32-alsa-plugins lib32-brotli lib32-bzip2 lib32-curl lib32-dbus lib32-e2fsprogs lib32-expat lib32-flac lib32-fontconfig lib32-freetype2 lib32-gamemode lib32-gcc-libs lib32-glib2 lib32-glibc lib32-harfbuzz lib32-icu lib32-keyutils lib32-krb5 lib32-libasyncns lib32-libcap lib32-libdrm lib32-libelf lib32-libffi lib32-libgcrypt lib32-libglvnd lib32-libgpg-error lib32-libice lib32-libidn2 lib32-libldap lib32-libnm lib32-libogg lib32-libpciaccess lib32-libpng lib32-libpsl lib32-libpulse lib32-libsm lib32-libsndfile lib32-libssh2 lib32-libtasn1 lib32-libtirpc lib32-libunistring lib32-libunwind lib32-libva lib32-libva-mesa-driver lib32-libvdpau lib32-libvorbis lib32-libx11 lib32-libxau lib32-libxcb lib32-libxcrypt lib32-libxdamage lib32-libxdmcp lib32-libxext lib32-libxfixes lib32-libxi lib32-libxinerama lib32-libxml2 lib32-libxshmfence lib32-libxss lib32-libxtst lib32-libxxf86vm lib32-llvm-libs lib32-lm_sensors lib32-mangohud lib32-mesa lib32-mesa-vdpau lib32-ncurses lib32-nspr lib32-nss lib32-openal lib32-openssl lib32-opus lib32-p11-kit lib32-pam lib32-pcre2 lib32-pipewire lib32-sqlite lib32-systemd lib32-util-linux lib32-vulkan-icd-loader lib32-vulkan-radeon lib32-wayland lib32-xz lib32-zlib lib32-zstd libaccounts-glib libaccounts-qt libaio libass libasyncns libatasmart libavc1394 libblockdev libbluray libbs2b libbsd libbytesize libcanberra libclc libcloudproviders libcolord libcups libdaemon libdatrie libdbusmenu-qt5 libdmtx libedit libepoxy libevdev libfakekey libfdk-aac libfontenc libfreeaptx libftdi libglvnd libgssglue libgudev libgusb libhangul libibus libical libice libiec61883 libimobiledevice libinih libinput libjcat libjpeg-turbo libkdcraw libkexiv2 libkscreen libksysguard libldac libmbim libmd libmfx libmm-glib libmodplug libmtp libndp libnewt libnm libnotify libogg libomxil-bellagio libspectre libdrm ds-inhibit libpciaccess libpgm libpipeline libplist libpng libproxy libpulse libqaccessibilityclient libqalculate libqmi libqrtr-glib libraw libraw1394 librsvg libsamplerate libsigc++ libsm libsndfile libsodium libsoup libsoup3 libsoxr libssh libstemmer libteam libthai libtheora libtiff libtommath libtraceevent libtracefs libunwind liburcu libusb libusbmuxd libutempter libva libva-intel-driver libva-mesa-driver libvdpau libvisual libvorbis libvpx libwacom libwebp libx11 libxau libxaw libxcb libxcomposite libxcursor libxcvt libxdamage libxdmcp libxext libxfixes libxfont2 libxft libxi libxinerama libxkbcommon libxkbcommon-x11 libxkbfile libxmlb libxmu libxpm libxrandr libxrender libxres libxshmfence libxslt libxss libxt libxtst libxv libxxf86vm libyaml libzip lilv linux-firmware-neptune linux-neptune llvm-libs lmdb lm_sensors lsb-release l-smash lsof lua luit lv2 lvm2 lzo maliit-framework maliit-keyboard man-db mangohud md4c mdadm media-player-info mesa mesa-utils mesa-vdpau milou minizip mobile-broadband-provider-info modemmanager modemmanager-qt mtdev nano ndctl nethogs networkmanager networkmanager-qt noise-suppression-for-voice noto-fonts noto-fonts-cjk nspr nss nss-mdns ntfs-3g numactl nvme-cli ocl-icd okular oniguruma openal opencl-mesa opencore-amr openjpeg2 openssh openvpn opus orc ostree oxygen p7zip pango pangomm parted partitionmanager paru pavucontrol pcsclite perf perl-error perl-mailtools perl-timedate phonon-qt5 phonon-qt5-gstreamer pipewire pipewire-alsa pipewire-audio pipewire-jack pipewire-pulse pixman pkcs11-helper plasma-browser-integration plasma-desktop plasma-disks plasma-firewall plasma-framework plasma-integration plasma-meta plasma-nm plasma-pa plasma-systemmonitor plasma-thunderbolt plasma-vault plasma-wayland-protocols plasma-wayland-session plasma-workspace plasma-workspace-wallpapers plymouth polkit polkit-kde-agent polkit-qt5 poppler poppler-qt5 powerdevil powertop ppp presage prison pulseaudio-qt purpose python-aiohttp python-aiosignal python-async-timeout python-attrs python-chardet python-charset-normalizer python-click python-crcmod python-evdev python-frozenlist python-gobject python-hid python-idna python-multidict python-progressbar python-psutil python-pyaml python-pyenchant python-pyinotify python-semantic-version python-systemd python-sysv_ipc python-typing_extensions python-utils python-yaml python-yarl pyzy qca-qt5 qqc2-desktop-style qrencode qt5-base qt5-declarative qt5-feedback qt5-graphicaleffects qt5-location qt5-multimedia qt5-quickcontrols qt5-quickcontrols2 qt5-sensors qt5-speech qt5-svg qt5-tools qt5-translations qt5-wayland qt5-webchannel qt5-webengine qt5-webview qt5-x11extras rauc rav1e re2 ripgrep rsync rtkit rxvt-unicode-terminfo sbc sddm-kcm sddm-wayland sdl2 seatd serd shared-mime-info signond signon-kwallet-extension signon-plugin-oauth2 signon-ui slang smartmontools smbclient snappy socat solid sonnet sord sound-theme-freedesktop source-highlight spectacle speex speexdsp squashfs-tools sratom srt sshfs steamdeck-kde-presets steam-im-modules steam-jupiter-stable steamos-atomupd-client-git steamos-customizations-jupiter steamos-devkit-service steamos-efi strace svt-av1 syndication syntax-highlighting sysfsutils systemd-swap systemsettings taglib talloc tcl tdb tevent thin-provisioning-tools threadweaver tk trace-cmd tracker3 tree tslib ttf-dejavu ttf-hack ttf-twemoji-default udisks2 unrar unzip upower usbmuxd usbutils v4l-utils vid.stab vim vim-runtime vkmark-git vmaf volume_key vpower vulkan-icd-loader vulkan-radeon vulkan-tools wayland wayland-utils webrtc-audio-processing wget wireless-regdb wireless_tools wireplumber wpa_supplicant x264 x265 xbindkeys xbitmaps xcb-proto xcb-util xcb-util-cursor xcb-util-errors xcb-util-image xcb-util-keysyms xcb-util-renderutil xcb-util-wm xdg-dbus-proxy xdg-desktop-portal xdg-desktop-portal-kde xdg-user-dirs xdg-utils xdotool xf86-input-libinput xf86-video-amdgpu xfsprogs xkeyboard-config xorg-fonts-encodings xorgproto xorg-server xorg-server-common xorg-setxkbmap xorg-xauth xorg-xdpyinfo xorg-xhost xorg-xkbcomp xorg-xmessage xorg-xprop xorg-xrandr xorg-xrdb xorg-xset xorg-xsetroot xorg-xwayland-jupiter xorg-xwininfo xterm xvidcore xxhash zenity-light zeromq zimg zip zsh zxing-cpp renderdoc-minimal lib32-renderdoc-minimal lib32-xcb-util-keysyms \
 && sed -r -i 's/\[(jupiter|core|extra|community|multilib|holo)\]/\[\1-rel\]/g' /etc/pacman.conf \
 && pacman-key --init \
 && pacman-key --populate archlinux \
 && pacman-key --populate holo \
 && pacman -Sy \
#  && comm -1 -2  <(pacman -Qeq | sort) <(pacman -Qoq /usr/include/ | sort) | pacman -S --noconfirm - \
 && comm -1 -2  <(pacman -Qdq | sort) <(pacman -Qoq /usr/include/ | sort) | pacman -S --noconfirm --asdeps - \
 && pacman -S --noconfirm gcc make autoconf automake bison fakeroot flex m4 tpm2-tss \
 && yes | pacman -Scc

FROM scratch
COPY --from=builder / /

 

After this script you will have your "holo-docker" image which in this specific case is just a version of SteamOS Jupiter with a few configuration changes. 

 

 

I presume this docker container is to provide an environment to run and test their homebrews in before installing it to the Steam Deck...

Spoiler

Desktop: Ryzen9 5950X | ASUS ROG Crosshair VIII Hero (Wifi) | EVGA RTX 3080Ti FTW3 | 32GB (2x16GB) Corsair Dominator Platinum RGB Pro 3600Mhz | EKWB EK-AIO 360D-RGB | EKWB EK-Vardar RGB Fans | 1TB Samsung 980 Pro, 4TB Samsung 980 Pro | Corsair 5000D Airflow | Corsair HX850 Platinum PSU | Asus ROG 42" OLED PG42UQ + LG 32" 32GK850G Monitor | Roccat Vulcan TKL Pro Keyboard | Logitech G Pro X Superlight  | MicroLab Solo 7C Speakers | Audio-Technica ATH-M50xBT2 LE Headphones | TC-Helicon GoXLR | Audio-Technica AT2035 | LTT Desk Mat | XBOX-X Controller | Windows 11 Pro

 

Spoiler

Server: Fractal Design Define R6 | Ryzen 3950x | ASRock X570 Taichi | Asus RTX 4060 Dual OC | 64GB (4x16GB) Corsair Vengeance LPX 3000Mhz | Corsair RM850v2 PSU | Fractal S36 Triple AIO + 4 Additional Venturi 120mm Fans | 8 x 20TB Seagate Exos X22 | 4 x 16TB Seagate Exos X18 | 3 x 2TB Samsung 970 Evo Plus NVMe | LSI 9211-8i HBA

 

Spoiler

NAS: Innovision 4U 24-bay chassis (12GB MiniHD SGIO Backplane) | Intel Core i9-10980xe | EVGA X299 FTW-K | EVGA RTX 2080Ti Super FTW3 | 128GB (8x16GB) Corsair Vengeance LPX 3200Mhz | DEEPCOOL PN1000M PSU| Noctua NH-D12L Chromax Black | 16 x 16TB Seagate Exos X18 | 2 x 2TB Samsung 990 Pro | 2 x 2TB Intel U.2 P4510 | LSI 9305-24i HBA

 

Link to comment
https://linustechtips.com/topic/1485828-docker/#findComment-15785223
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×