Code Monkey home page Code Monkey logo

archlinux's Introduction

Basic Arch Linux images Build Status

Docker images for Arch Linux. Built daily by Travis CI on publicly visible infrastructure.

Running the images

The images are on Docker Hub. Use the convenient docker run:

docker run --rm -ti archimg/base
docker run --rm -ti archimg/base-devel

Tags

Repo Tag Update Type Description
base latest daily minimal most packages of base-group, except some big ones like linux-firmware
base full daily full all packages of base-group
base‑devel latest daily full all packages of base and base-devel-group

The monthly tagged images aren't supposed to be used in production. Arch Linux is a rolling release distro and partial upgrades are unsupported there. It requires you to always do a full system upgrade, so it wouldn't make any difference to use the latest tag.

Layer structure

The image consists of two parts:

  • the basement layer, derived from the tarball (updated monthly)
    • this layer has always its own tag in form of YEAR.MONTH.01
    • it's discouraged to use this as your base image
  • the update layer, which only contains the updates (updated daily)
    • this layer has always its own tag as latest

This implies, that you get daily updates, but only have to download the actual change and not the full image.

Issues and improvements

If you want to contribute, get to the issues-section of this repository.

Common hurdles

Setting the timezone

Simply add the TZ environment-variable and define it with a valid timezone-value.

docker run -e TZ=Europe/Berlin archimg/base

Building it yourself

Prerequisites

  • docker-squash
  • sudo or root is absolutely neccessary to build the image from scratch
    • if you use ./pull instead of ./build, sudo is not required

Building

  • Run either sudo -H ./build or ./pull
    • If you run sudo -H ./build, it'll download the tarball and build the images from scratch (sudo required)
    • If you run ./pull, docker will download the images from dockerhub
  • Run ./update to generate the latest-tags and update the images.

If you want to push the images, run ./push. But be aware you have no push access to the repos!

archlinux's People

Contributors

bebehei avatar gtmanfred avatar kbabioch avatar lopsided98 avatar tmc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

archlinux's Issues

systemctl issue

When i'm run command like systemctl start httpd.service in container shell, i get error message Failed to connect to bus: No such file or directory. It's possible to solve this or its docker image limitation?

travis CI does not build on 1. day of month

Travis CI does not properly build on first day of month

possible solutions

  • how to delay travis on this day?
  • use date always with --date=yesterday -> build will use image of previous month on first of the current.

libcryptsetup.so.4: cannot open shared object file: No such file or directory

Found the current buildlog https://travis-ci.org/archimg/archlinux/builds/249975158

upgrading systemd...
systemd-sysusers: error while loading shared libraries: libcryptsetup.so.4: cannot open shared object file: No such file or directory
journalctl: error while loading shared libraries: libcryptsetup.so.4: cannot open shared object file: No such file or directory

This occurs multiple times (of course).

Is this a temporary issue or is this based on some optimisations I've included?

Misleading tag names

It looks like a tag named YYYY.MM.01 will actually contain an image built towards the end of the YYYY.MM month. E.g. the tag 2018.12.01 was apparently last updated "3 hours ago".

Getting the date in the tag name to match the image content would be nice to minimize the overhead of updating to a point-in-time snapshot of the distribution using the Arch Linux Archive.

Add a testbench

Add some $type_of_stuff to perform automated tests on the images.

These tests should validate the image.

Avoid "Read-only file system" error

I want to change TTL of archlinux docker container. But when I run command:

echo 65 >/proc/sys/net/ipv4/ip_default_ttl

I got error:

bash: /proc/sys/net/ipv4/ip_default_ttl: Read-only file system

Could you say, please, what should I do to avoid this error? Thanks a lot.

ip: command not found

I get the following on my arch host:

[ad@rout dialer]$ uname -a
Linux rout 4.14.6-1-ARCH #1 SMP PREEMPT Thu Dec 14 21:26:16 UTC 2017 x86_64 GNU/Linux
[ad@rout dialer]$ docker run -it base/archlinux
[root@5208ca648bc4 /]# ip addr
bash: ip: command not found
[root@5208ca648bc4 /]#

Why?

Describe the internals better

  • Describe the internals better, why i have chosen to use such shitty names like archimg-base_full-currenttar Edit: Don't write documentation for bad code, write better code! Will be fixed with #14
  • add build instructions
  • describe available tags

Build fails with libidn2.so.0 - No such file or directory

Hi, Can you shed some light on why my archlinux image builds just fine for some time and then suddenly fails with the message wget: error while loading shared libraries: libidn2.so.0: cannot open shared object file: No such file or directory ?

This behaviour has happened before. On the last occurrence, I switched from ' base/archlinux:2017.07.01' to 'base/archlinux:2017.11.01' which addressed the abend behaviour but since the last 3 or so days, base/archlinux:2017.11.01 is now failing as described.

You can see the log trace here.

I'm using Docker Compose on Travis-CI. Here is my compose .yml...

FROM base/archlinux:2017.11.01
LABEL maintainer "Trevor SANDY <[email protected]>"
RUN pacman -Syy --noconfirm 
# > CreateDockerImage_archlinux.log 2>&1
RUN pacman -S --noconfirm --needed git wget unzip ccache base-devel libidn2 
# >> CreateDockerImage_archlinux.log 2>&1
RUN pacman -S --noconfirm --needed qt5-base qt5-tools 
# >> CreateDockerImage_archlinux.log 2>&1
RUN pacman -S --noconfirm --needed sudo \
    && groupadd -r user -g 1000 \
    && useradd -u 1000 -r -g user -m -d /user -s /sbin/nologin -c "Build pkg user" user \
    && chmod 755 /user \
    && echo "user ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/user \
    && chmod 0440 /etc/sudoers.d/user
WORKDIR /user
USER user
VOLUME ["/buildpkg", "/user/pkgbuild/src/lpub3d_linux_3rdparty"]
CMD sudo chown -R user:user /user/pkgbuild/.* \
    && wget https://raw.githubusercontent.com/trevorsandy/lpub3d-ci/master/builds/linux/CreatePkg.sh \
    && export DOCKER=true \
    && chmod +x CreatePkg.sh \
    && ./CreatePkg.sh \
    && if test -d /buildpkg; then \
      sudo cp -f /user/pkgbuild/*.pkg.tar.xz /buildpkg/; \
      sudo cp -f /user/pkgbuild/src/*.log /buildpkg/; \
      sudo cp -f /user/*.log /buildpkg/; \
      sudo cp -f /*.log /buildpkg/; \
    fi

Cheers,

how to make docker image `archimg/base` work with nvidia-docker ?

Hey ArchImg team, somehow the docker image archimg/base does not work with nvidia-docker.

Run following command:
docker run --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all -ti --rm archimg/base:latest nvidia-smi
Get error:
NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system. Please also try adding directory that contains libnvidia-ml.so to your system PATH.

However ubuntu:latest docker image work with nvidia-docker
docker run --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all -ti --rm ubuntu:latest nvidia-smi
works.

Do you think there's some problem in the archimg/base image, or am I doing something wrong ? 🙂

Deprecating the Repo?

In the meantime, there evolved archlinux/archlinux-docker, which is also managed by Arch TUs.

Instead of closing down the repository, I'd think about changing the build script to simply link it to archlinux/base.

make base-devel image children of base

Make the base-devel image a direct children of base. This increases a bit more the storage needs for base-devel, but as the base is fully included in base-devel, it should turn out to have less storage needed if both images are used simultaneously.

Can't use pacman

I thougt I would use a Docker image to test my PKGBUILD, but I can't get this package to work with pacman. My Dockerfile lookslike this:

FROM base/devel
RUN pacman-db-upgrade && pacman -Syu --noconfirm jdk8-openjdk

When I run docker build . -t test, I get this error, but the image builds.

<lots of output from pacma omitted...>
installing jdk8-openjdk...
upgrading libpsl...
error: could not remove database entry libpsl-0.17.0-2
ldconfig: Cannot lstat /usr/lib/libexpat.so.1.6.4: No such file or directory
ldconfig: Cannot lstat /usr/lib/libpsl.so.5.1.1: No such file or directory
ldconfig: Cannot lstat /usr/lib/libdbus-1.so.3.14.11: No such file or directory

The problem is that I can't run any pacman commands after this. For example docker run -ti test pacman -Syu, which fails with

:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
:: Starting full system upgrade...
error: duplicated database entry 'libpsl'
error: could not open file /var/lib/pacman/local/libpsl-0.17.0-2/desc: No such file or directory
resolving dependencies...
looking for conflicting packages...
warning: could not fully load metadata for package libpsl-0.17.0-2
error: failed to prepare transaction (invalid or corrupted package)

Am I using pacman wrong?

implement `--squash` for docker build

This got introduced by docker 1.13 but currently TravisCI only uses docker 1.12.3 which should lack this feature.

With the use of this feature, the image should be able to remove all old files, which are updated via pacman -Syu in the meantime.

See moby/moby#22641

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.