{"id":22242308,"url":"https://github.com/diixo/viix-img","last_synced_at":"2026-02-14T15:32:34.181Z","repository":{"id":264837845,"uuid":"894289795","full_name":"diixo/viix-img","owner":"diixo","description":"A minimal Ubuntu base image modified for Docker-friendliness","archived":false,"fork":false,"pushed_at":"2025-01-31T05:57:13.000Z","size":412,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-26T16:09:23.307Z","etag":null,"topics":["docker","docker-image","docker-starter","ubuntu-packages","ubuntu22"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/diixo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-26T05:07:47.000Z","updated_at":"2025-01-31T05:57:17.000Z","dependencies_parsed_at":"2024-12-20T23:26:34.984Z","dependency_job_id":"29954fbf-97d9-40bd-bbe6-fd9a0ca95564","html_url":"https://github.com/diixo/viix-img","commit_stats":null,"previous_names":["diixo/aiveex-img","diixo/viix-img"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/diixo/viix-img","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diixo%2Fviix-img","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diixo%2Fviix-img/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diixo%2Fviix-img/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diixo%2Fviix-img/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/diixo","download_url":"https://codeload.github.com/diixo/viix-img/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diixo%2Fviix-img/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29448002,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T14:10:32.461Z","status":"ssl_error","status_checked_at":"2026-02-14T14:09:49.945Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-image","docker-starter","ubuntu-packages","ubuntu22"],"created_at":"2024-12-03T04:15:38.241Z","updated_at":"2026-02-14T15:32:34.167Z","avatar_url":"https://github.com/diixo.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# viix : minimal Ubuntu base image modified for Docker-friendliness\n\n\nFork of [phusion/baseimage-docker](https://github.com/phusion/baseimage-docker)\n\nCurrent version was based on **ubuntu:22.04**\n\n\n-----------------------------------------\n\n**Table of contents**\n * [Docker](#docker)\n   * [Build](#docker_build)\n   * [Run](#docker_run)\n   * [Run with SSH](#run_with_ssh)\n   * [Access into docker](#access_into_docker)\n   * [Stop all active containers](#docker_stop_all)\n * [Docker-compose](#docker_compose)\n * [SSH service](#ssh_service)\n   * [SSH status](#ssh_status)\n   * [SSH settings](#ssh_settings)\n * [Container administration](#container_administration)\n   * [Running a one-shot command in a new container](#oneshot)\n   * [Running a command in an existing, running container](#run_inside_existing_container)\n   * [Login to the container via `docker exec`](#login_docker_exec)\n     * [Usage](#docker_exec)\n   * [Login to the container via SSH](#login_ssh)\n     * [Enabling SSH](#enabling_ssh)\n     * [About SSH keys](#ssh_keys)\n     * [Using the insecure key for one container only](#using_the_insecure_key_for_one_container_only)\n     * [Enabling the insecure key permanently](#enabling_the_insecure_key_permanently)\n     * [Using your own key](#using_your_own_key)\n * [References](#references)\n\n-----------------------------------------\n\n\n\u003ca name=\"docker\"\u003e\u003c/a\u003e\n## Docker:\nUse **Dockerfile1**\n\u003ca name=\"docker_build\"\u003e\u003c/a\u003e\n### build\n```\ndocker build -f image/Dockerfile1 -t viix:22.04 .\n```\n\n\n\u003ca name=\"docker_run\"\u003e\u003c/a\u003e\n### run\n```\ndocker run -d --name new_container viix:22.04\n```\n\n\n\u003ca name=\"run_with_ssh\"\u003e\u003c/a\u003e\n### run with SSH\n```\ndocker run -d --name new_container -p 2222:22 viix:22.04\n```\n\n\n\u003ca name=\"access_into_docker\"\u003e\u003c/a\u003e\n### access into docker\n```\nwinpty docker exec -it new_container bash\n```\n\n\n\u003ca name=\"docker_stop_all\"\u003e\u003c/a\u003e\n### stop all active containers\n```\ndocker stop $(docker ps -q)\n```\n\n\n\u003ca name=\"docker_compose\"\u003e\u003c/a\u003e\n## Docker-compose:\n#### run containers orchestration:\n```\ndocker-compose up -d --build\n```\n#### stop containers orchestration:\n```\ndocker-compose down --volumes\n```\n\n\n\u003ca name=\"ssh_service\"\u003e\u003c/a\u003e\n## SSH:\n\u003ca name=\"ssh_status\"\u003e\u003c/a\u003e\n### SSH status\n```\nservice ssh status\n```\n\nLocation, where all SSH keys are automatically generated by script **00_regen_ssh_host_keys.sh** (if SSH enabled):\n```\ncd /etc/ssh\n```\n\n\n\u003ca name=\"ssh_settings\"\u003e\u003c/a\u003e\n#### SSH settings:\n```\ncat /etc/ssh/sshd_config\n```\n\n\n\u003ca name=\"container_administration\"\u003e\u003c/a\u003e\n## Container administration\n\nOne of the ideas behind Docker is that containers should be stateless, easily restartable, and behave like a black box. However, you may occasionally encounter situations where you want to login to a container, or to run a command inside a container, for development, inspection and debugging purposes. This section describes how you can administer the container for those purposes.\n\n\u003ca name=\"oneshot\"\u003e\u003c/a\u003e\n### Running a one-shot command in a new container\n\n_**Note:** This section describes how to run a command insider a -new- container. To run a command inside an existing running container, see [Running a command in an existing, running container](#run_inside_existing_container)._\n\nNormally, when you want to create a new container in order to run a single command inside it, and immediately exit after the command exits, you invoke Docker like this:\n\n    docker run YOUR_IMAGE COMMAND ARGUMENTS...\n\nHowever the downside of this approach is that the init system is not started. That is, while invoking `COMMAND`, important daemons such as cron and syslog are not running. Also, orphaned child processes are not properly reaped, because `COMMAND` is PID 1.\n\nBaseimage-docker provides a facility to run a single one-shot command, while solving all of the aforementioned problems. Run a single command in the following manner:\n\n    docker run YOUR_IMAGE /sbin/my_init -- COMMAND ARGUMENTS ...\n\nThis will perform the following:\n\n * Runs all system startup files, such as /etc/my_init.d/* and /etc/rc.local.\n * Starts all runit services.\n * Runs the specified command.\n * When the specified command exits, stops all runit services.\n\nFor example:\n\n    $ docker run phusion/baseimage:\u003cVERSION\u003e /sbin/my_init -- ls\n    *** Running /etc/rc.local...\n    *** Booting runit daemon...\n    *** Runit started as PID 80\n    *** Running ls...\n    bin  boot  dev  etc  home  image  lib  lib64  media  mnt  opt  proc  root  run  sbin  selinux  srv  sys  tmp  usr  var\n    *** ls exited with exit code 0.\n    *** Shutting down runit daemon (PID 80)...\n    *** Killing all processes...\n\nYou may find that the default invocation is too noisy. Or perhaps you don't want to run the startup files. You can customize all this by passing arguments to `my_init`. Invoke `docker run YOUR_IMAGE /sbin/my_init --help` for more information.\n\nThe following example runs `ls` without running the startup files and with less messages, while running all runit services:\n\n    $ docker run phusion/baseimage:\u003cVERSION\u003e /sbin/my_init --skip-startup-files --quiet -- ls\n    bin  boot  dev  etc  home  image  lib  lib64  media  mnt  opt  proc  root  run  sbin  selinux  srv  sys  tmp  usr  var\n\n\u003ca name=\"run_inside_existing_container\"\u003e\u003c/a\u003e\n### Running a command in an existing, running container\n\nThere are two ways to run a command inside an existing, running container.\n\n * Through the `docker exec` tool. This is builtin Docker tool, available since Docker 1.4. Internally, it uses Linux kernel system calls in order to execute a command within the context of a container. Learn more in [Login to the container, or running a command inside it, via `docker exec`](#login_docker_exec).\n * Through SSH. This approach requires running an SSH daemon inside the container, and requires you to setup SSH keys. Learn more in [Login to the container, or running a command inside it, via SSH](#login_ssh).\n\nBoth way have their own pros and cons, which you can learn in their respective subsections.\n\n\n\u003ca name=\"login_ssh\"\u003e\u003c/a\u003e\n### Login to the container, or running a command inside it, via SSH\n\nYou can use SSH to login to any container that is based on baseimage-docker. You can also use it to run a command inside a running container.\n\nHere's how it compares to [using `docker exec` to login to the container or to run a command inside it](#login_docker_exec):\n\n * Pros\n   * Does not require root privileges on the Docker host.\n   * Allows you to let users login to the container, without letting them login to the Docker host. However, this is not enabled by default because baseimage-docker does not expose the SSH server to the public Internet by default.\n * Cons\n   * Requires setting up SSH keys. However, baseimage-docker makes this easy for many cases through a pregenerated, insecure key. Read on to learn more.\n\n\n\u003ca name=\"enabling_ssh\"\u003e\u003c/a\u003e\n#### Enabling SSH\n\nBaseimage-docker disables the SSH server by default. Add the following to your Dockerfile to enable it:\n\n    RUN rm -f /etc/service/sshd/down\n\n    # Regenerate SSH host keys. baseimage-docker does not contain any, so you\n    # have to do that yourself. You may also comment out this instruction; the\n    # init system will auto-generate one during boot.\n    RUN /etc/my_init.d/00_regen_ssh_host_keys.sh\n\nAlternatively, to enable sshd only for a single instance of your container, create a folder with a [startup script](#running_startup_scripts).  The contents of that should be\n\n    ### In myfolder/enable_ssh.sh (make sure this file is chmod +x):\n    #!/bin/sh\n    rm -f /etc/service/sshd/down\n    ssh-keygen -P \"\" -t dsa -f /etc/ssh/ssh_host_dsa_key\n\nThen, you can start your container with\n\n    docker run -d -v `pwd`/myfolder:/etc/my_init.d my/dockerimage\n\nThis will initialize sshd on container boot.  You can then access it with the insecure key as below, or using the methods to add a secure key.  Further, you can publish the port to your machine with -p 2222:22 allowing you to ssh to 127.0.0.1:2222 instead of looking up the ip address of the container.\n\n\u003ca name=\"ssh_keys\"\u003e\u003c/a\u003e\n#### About SSH keys\n\nFirst, you must ensure that you have the right SSH keys installed inside the container. By default, no keys are installed, so nobody can login. For convenience reasons, we provide [a pregenerated, insecure key](https://github.com/phusion/baseimage-docker/blob/master/image/services/sshd/keys/insecure_key) [(PuTTY format)](https://github.com/phusion/baseimage-docker/blob/master/image/services/sshd/keys/insecure_key.ppk) that you can easily enable. However, please be aware that using this key is for convenience only. It does not provide any security because this key (both the public and the private side) is publicly available. **In production environments, you should use your own keys**.\n\n\u003ca name=\"using_the_insecure_key_for_one_container_only\"\u003e\u003c/a\u003e\n#### Using the insecure key for one container only\n\nYou can temporarily enable the insecure key for one container only. This means that the insecure key is installed at container boot. If you `docker stop` and `docker start` the container, the insecure key will still be there, but if you use `docker run` to start a new container then that container will not contain the insecure key.\n\nStart a container with `--enable-insecure-key`:\n\n    docker run YOUR_IMAGE /sbin/my_init --enable-insecure-key\n\nFind out the ID of the container that you just ran:\n\n    docker ps\n\nOnce you have the ID, look for its IP address with:\n\n    docker inspect -f \"{{ .NetworkSettings.IPAddress }}\" \u003cID\u003e\n\nNow that you have the IP address, you can use SSH to login to the container, or to execute a command inside it:\n\n    # Download the insecure private key\n    curl -o insecure_key -fSL https://github.com/phusion/baseimage-docker/raw/master/image/services/sshd/keys/insecure_key\n    chmod 600 insecure_key\n\n    # Login to the container\n    ssh -i insecure_key root@\u003cIP address\u003e\n\n    # Running a command inside the container\n    ssh -i insecure_key root@\u003cIP address\u003e echo hello world\n\n\u003ca name=\"enabling_the_insecure_key_permanently\"\u003e\u003c/a\u003e\n#### Enabling the insecure key permanently\n\nIt is also possible to enable the insecure key in the image permanently. This is not generally recommended, but is suitable for e.g. temporary development or demo environments where security does not matter.\n\nEdit your Dockerfile to install the insecure key permanently:\n\n    RUN /usr/sbin/enable_insecure_key\n\nInstructions for logging into the container is the same as in section [Using the insecure key for one container only](#using_the_insecure_key_for_one_container_only).\n\n\u003ca name=\"using_your_own_key\"\u003e\u003c/a\u003e\n#### Using your own key\n\nEdit your Dockerfile to install an SSH public key:\n\n    ## Install an SSH of your choice.\n    COPY your_key.pub /tmp/your_key.pub\n    RUN cat /tmp/your_key.pub \u003e\u003e /root/.ssh/authorized_keys \u0026\u0026 rm -f /tmp/your_key.pub\n\nThen rebuild your image. Once you have that, start a container based on that image:\n\n    docker run your-image-name\n\nFind out the ID of the container that you just ran:\n\n    docker ps\n\nOnce you have the ID, look for its IP address with:\n\n    docker inspect -f \"{{ .NetworkSettings.IPAddress }}\" \u003cID\u003e\n\nNow that you have the IP address, you can use SSH to login to the container, or to execute a command inside it:\n\n    # Login to the container\n    ssh -i /path-to/your_key root@\u003cIP address\u003e\n\n    # Running a command inside the container\n    ssh -i /path-to/your_key root@\u003cIP address\u003e echo hello world\n\n\n\n\n### What are the problems with the stock Ubuntu base image?\n\nUbuntu is not designed to be run inside Docker. Its init system, Upstart, assumes that it's running on either real hardware or virtualized hardware, but not inside a Docker container. But inside a container you don't want a full system anyway, you want a minimal system. But configuring that minimal system for use within a container has many strange corner cases that are hard to get right if you are not intimately familiar with the Unix system model. This can cause a lot of strange problems.\n\nBaseimage-docker gets everything right. The \"Contents\" section describes all the things that it modifies.\n\n\n### Why use baseimage-docker?\nYou can configure the stock ubuntu image yourself from your Dockerfile, so why bother using baseimage-docker?\n\nConfiguring the base system for Docker-friendliness is no easy task. As stated before, there are many corner cases. By the time that you've gotten all that right, you've reinvented baseimage-docker. Using baseimage-docker will save you from this effort.\n\n* It sets up the base system correctly. Many people may not think so, but Unix has many corner cases caused by decades of cruft. Getting them wrong can result in very strange problems. This image does everything correctly. Learn more.⁠\n* It reduces the time needed to run docker build, allowing you to iterate your Dockerfile more quickly.\n* It reduces download time during redeploys. Docker only needs to download the base image once: during the first deploy. On every subsequent deploys, only the changes you make on top of the base image are downloaded.\n\n\n## Contents\n\nBaseimage-docker only contains essential components. Learn more about the rationale.⁠\n\n\n**Ubuntu 22.04 LTS** as base system.\n\n* A correct init process [learn more](https://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem/).\n* Fixes APT incompatibilities with Docker.\n* syslog-ng.\n* The cron daemon.\n  * An optional SSH server (disabled by default), for those use cases where docker exec is inappropriate.\nPassword and challenge-response authentication are disabled by default. Only key authentication is allowed.\n  * It allows an predefined key by default to make debugging easy. You should replace this ASAP. See instructions.\n  * [Runit](https://smarden.org/runit) for service supervision and management.\n\n\n[Learn more](https://github.com/phusion/baseimage-docker)\n\n\n\u003ca name=\"references\"\u003e\u003c/a\u003e\n## References:\n\n* **Source**: https://github.com/phusion/baseimage-docker\n* **Source**: https://github.com/phusion/baseimage-docker/releases?page=3\n* **Source**: https://registry.hub.docker.com/r/phusion/baseimage/\n* **Source**: https://hub.docker.com/r/phusion/baseimage/tags\n\n* **Dockerfile.txt** is from https://github.com/diixo/docker-sge/Dockerfile\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiixo%2Fviix-img","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdiixo%2Fviix-img","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiixo%2Fviix-img/lists"}