Compare commits
6 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e4ca616d3f | ||
|
|
0e8c5ef59c | ||
|
|
eb12462323 | ||
|
|
344dc9a034 | ||
|
|
fb5d633b7d | ||
|
|
899a09a024 |
6 changed files with 117 additions and 24 deletions
|
|
@ -1,5 +1,5 @@
|
|||
# This image is the base image for all s2i configurable container images.
|
||||
FROM registry.fedoraproject.org/fedora:rawhide
|
||||
FROM registry.fedoraproject.org/fedora:32
|
||||
|
||||
ENV SUMMARY="Base image which allows using of source-to-image." \
|
||||
DESCRIPTION="The s2i-core image provides any images layered on top of it \
|
||||
|
|
@ -40,6 +40,7 @@ ENV \
|
|||
RUN INSTALL_PKGS="bsdtar \
|
||||
findutils \
|
||||
gettext \
|
||||
glibc-langpack-en \
|
||||
groff-base \
|
||||
rsync \
|
||||
tar \
|
||||
|
|
|
|||
|
|
@ -61,10 +61,10 @@ $ make build VERSIONS=core TARGET=rhel7
|
|||
|
||||
* **CentOS7 base image**
|
||||
|
||||
This image is available on DockerHub. To download it run:
|
||||
This image is available on Quay.io. To download it run:
|
||||
|
||||
```console
|
||||
podman pull sclorg/s2i-core-centos7
|
||||
podman pull quay.io/centos7/s2i-core-centos7
|
||||
```
|
||||
|
||||
To build a Base image from scratch run:
|
||||
|
|
|
|||
26
bot-cfg.yml
Normal file
26
bot-cfg.yml
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
version: "1"
|
||||
|
||||
betka:
|
||||
# is betka enabled for this repository
|
||||
# optional - defaults to false
|
||||
enabled: true
|
||||
|
||||
# optional
|
||||
notifications:
|
||||
email_addresses: [phracek@redhat.com]
|
||||
|
||||
# Specify if master branch in upstream repository is synced
|
||||
master_checker: true
|
||||
# Should pull requests be synced?
|
||||
# optional
|
||||
pr_checker: false
|
||||
# Either 'upstream_branch_name' or 'upstream_git_path' has to be specified
|
||||
# Branch name which is used for sync
|
||||
upstream_branch_name: master
|
||||
# Path to directory with dockerfile withing upstream repository
|
||||
upstream_git_path: "core"
|
||||
# Github comment message to enforce sync of a pull request
|
||||
# required if pr_checker is true otherwise optional
|
||||
pr_comment_message: "[test]"
|
||||
# optional
|
||||
image_url: quay.io/rhscl/cwt-generator
|
||||
12
root/help.1
12
root/help.1
|
|
@ -1,4 +1,3 @@
|
|||
.nh
|
||||
.TH OpenShift base images (core variant)
|
||||
.PP
|
||||
This repository contains Dockerfiles for images which can be used as base images
|
||||
|
|
@ -21,8 +20,6 @@ Normally, SCL requires manual operation to enable the collection you want to use
|
|||
This is burdensome and can be prone to error.
|
||||
The OpenShift S2I approach is to set Bash environment variables that
|
||||
serve to automatically enable the desired collection:
|
||||
|
||||
.RS
|
||||
.IP \(bu 2
|
||||
\fB\fCBASH\_ENV\fR: enables the collection for all non\-interactive Bash sessions
|
||||
.IP \(bu 2
|
||||
|
|
@ -30,8 +27,6 @@ serve to automatically enable the desired collection:
|
|||
.IP \(bu 2
|
||||
\fB\fCPROMPT\_COMMAND\fR: enables the collection in interactive shell
|
||||
|
||||
.RE
|
||||
|
||||
.PP
|
||||
Two examples:
|
||||
* If you specify \fB\fCBASH\_ENV\fR, then all your \fB\fC#!/bin/bash\fR scripts
|
||||
|
|
@ -91,13 +86,9 @@ $ make build VERSIONS=core TARGET=rhel7
|
|||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.RS
|
||||
.IP \(bu 2
|
||||
\fBCentOS7 base image\fP
|
||||
|
||||
.RE
|
||||
|
||||
.PP
|
||||
This image is available on DockerHub. To download it run:
|
||||
|
||||
|
|
@ -130,7 +121,8 @@ on all provided versions of s2i image.\fP
|
|||
|
||||
.SH See also
|
||||
.PP
|
||||
Dockerfile and other sources are available on https://github.com/sclorg/s2i\-base\-container.
|
||||
Dockerfile and other sources are available on
|
||||
\[la]https://github.com/sclorg/s2i-base-container\[ra]\&.
|
||||
In that repository you also can find another variants of S2I Base Dockerfiles.
|
||||
The Dockerfile for CentOS is called Dockerfile, the Dockerfile for RHEL7 is called Dockerfile.rhel7,
|
||||
the Dockerfile for RHEL8 is called Dockerfile.rhel8 and the Dockerfile for Fedora is Dockerfile.fedora.
|
||||
|
|
|
|||
|
|
@ -19,10 +19,12 @@ Variables currently supported:
|
|||
Maximum amount of user memory in bytes. If this value is set
|
||||
to the same value as MAX_MEMORY_LIMIT_IN_BYTES, it means that
|
||||
there is no limit set. The value is taken from
|
||||
/sys/fs/cgroup/memory/memory.limit_in_bytes
|
||||
/sys/fs/cgroup/memory/memory.limit_in_bytes for cgroups v1
|
||||
and from /sys/fs/cgroup/memory.max for cgroups v2
|
||||
NUMBER_OF_CORES
|
||||
Number of detected CPU cores that can be used. This value is
|
||||
calculated from /sys/fs/cgroup/cpuset/cpuset.cpus
|
||||
calculated from /sys/fs/cgroup/cpuset/cpuset.cpus for cgroups v1
|
||||
and from /sys/fs/cgroup/cpuset.cpus.effective for cgroups v2
|
||||
NO_MEMORY_LIMIT
|
||||
Set to "true" if MEMORY_LIMIT_IN_BYTES is so high that the caller
|
||||
can act as if no memory limit was set. Undefined otherwise.
|
||||
|
|
@ -46,7 +48,11 @@ def get_memory_limit():
|
|||
"""
|
||||
|
||||
limit = _read_file('/sys/fs/cgroup/memory/memory.limit_in_bytes')
|
||||
# If first file does not exist, try cgroups v2 file
|
||||
limit = limit or _read_file('/sys/fs/cgroup/memory.max')
|
||||
if limit is None or not limit.isdigit():
|
||||
if limit == 'max':
|
||||
return 9223372036854775807
|
||||
print("Warning: Can't detect memory limit from cgroups",
|
||||
file=sys.stderr)
|
||||
return None
|
||||
|
|
@ -61,7 +67,11 @@ def get_number_of_cores():
|
|||
core_count = 0
|
||||
|
||||
line = _read_file('/sys/fs/cgroup/cpuset/cpuset.cpus')
|
||||
# If first file does not exist, try cgroups v2 file
|
||||
line = line or _read_file('/sys/fs/cgroup/cpuset.cpus.effective')
|
||||
if line is None:
|
||||
# None of the files above exists when running podman as non-root,
|
||||
# so in that case, this warning is printed every-time
|
||||
print("Warning: Can't detect number of CPU cores from cgroups",
|
||||
file=sys.stderr)
|
||||
return None
|
||||
|
|
|
|||
82
test/run
82
test/run
|
|
@ -1,26 +1,90 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# The 'run' performs a simple test that verifies that STI image.
|
||||
# The 'run' performs a simple test that verifies that S2I image.
|
||||
# The main focus is that the image prints out the base-usage properly.
|
||||
#
|
||||
# IMAGE_NAME specifies a name of the candidate image used for testing.
|
||||
# The image has to be available before this script is executed.
|
||||
#
|
||||
IMAGE_NAME=${IMAGE_NAME-centos/s2i-core-centos7-candidate}
|
||||
test -n "${IMAGE_NAME-}" || { echo 'make sure $IMAGE_NAME is defined'; exit 1; }
|
||||
|
||||
test_docker_run_usage() {
|
||||
echo "Testing 'docker run' usage..."
|
||||
docker run --rm ${IMAGE_NAME} &>/dev/null
|
||||
echo "Testing 'docker run' usage..."
|
||||
docker run --rm ${IMAGE_NAME} &>/dev/null
|
||||
}
|
||||
|
||||
test_cgroup_limits() {
|
||||
echo "Testing 'cgroup limits' usage..."
|
||||
if [ $EUID -eq 0 ]; then
|
||||
echo " The test is running as root, all tests for cgroup limits will be run"
|
||||
|
||||
# check memory limited (only works when running as root)
|
||||
echo " Testing 'limited memory' usage..."
|
||||
if ! ( eval $(docker run --rm --memory=512M ${IMAGE_NAME} /usr/bin/cgroup-limits)
|
||||
echo "MEMORY_LIMIT_IN_BYTES=$MEMORY_LIMIT_IN_BYTES"
|
||||
[ "$MEMORY_LIMIT_IN_BYTES" -eq 536870912 ] ); then
|
||||
echo "MEMORY_LIMIT_IN_BYTES not set to 536870912."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# check cores number (only works when running as root)
|
||||
echo " Testing 'NUMBER_OF_CORES' value..."
|
||||
if ! ( eval $(docker run --rm ${IMAGE_NAME} /usr/bin/cgroup-limits)
|
||||
echo "NUMBER_OF_CORES=$NUMBER_OF_CORES"
|
||||
[ "$NUMBER_OF_CORES" -gt 0 ] ); then
|
||||
echo "NUMBER_OF_CORES not set."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# check cores number (only works when running as root)
|
||||
echo " Testing 'NUMBER_OF_CORES' value with --cpuset-cpus=0..."
|
||||
if ! ( eval $(docker run --rm --cpuset-cpus=0 ${IMAGE_NAME} /usr/bin/cgroup-limits)
|
||||
echo "NUMBER_OF_CORES=$NUMBER_OF_CORES"
|
||||
[ "$NUMBER_OF_CORES" -eq 1 ] ); then
|
||||
echo "NUMBER_OF_CORES not set to 1 when set --cpuset-cpus=0."
|
||||
return 1
|
||||
fi
|
||||
|
||||
else
|
||||
echo " The test is running as non-root, some tests for cgroup limits are skipped"
|
||||
fi
|
||||
|
||||
# check NO_MEMORY_LIMIT when no limit is set
|
||||
echo " Testing 'NO_MEMORY_LIMIT' value..."
|
||||
if ! ( eval $(docker run --rm ${IMAGE_NAME} /usr/bin/cgroup-limits)
|
||||
echo "NO_MEMORY_LIMIT=$NO_MEMORY_LIMIT"
|
||||
[ "$NO_MEMORY_LIMIT" == 'true' ] ); then
|
||||
echo "NO_MEMORY_LIMIT not set to true."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# check default memory in bytes
|
||||
echo " Testing 'MEMORY_LIMIT_IN_BYTES' value..."
|
||||
if ! ( eval $(docker run --rm ${IMAGE_NAME} /usr/bin/cgroup-limits)
|
||||
echo "MEMORY_LIMIT_IN_BYTES=$MEMORY_LIMIT_IN_BYTES"
|
||||
# This value can be different, but it must be very big (comparing to 10TB)
|
||||
[ "$MEMORY_LIMIT_IN_BYTES" -gt 10000000000000 ] ); then
|
||||
echo "MEMORY_LIMIT_IN_BYTES not greater than 10000000000000."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_result() {
|
||||
local result="$1"
|
||||
if [[ "$result" != "0" ]]; then
|
||||
echo "STI image '${IMAGE_NAME}' test FAILED (exit code: ${result})"
|
||||
exit $result
|
||||
fi
|
||||
local result="$1"
|
||||
if [[ "$result" != "0" ]]; then
|
||||
echo "S2I image '${IMAGE_NAME}' test FAILED (exit code: ${result})"
|
||||
exit $result
|
||||
fi
|
||||
}
|
||||
|
||||
# Verify the 'usage' script is working properly when running the base image with 'docker run ...'
|
||||
test_docker_run_usage
|
||||
check_result $?
|
||||
|
||||
# Verify the cgroup-limits script works as expected
|
||||
test_cgroup_limits
|
||||
check_result $?
|
||||
|
||||
echo "Tests for '${IMAGE_NAME}' succeeded."
|
||||
|
||||
# vim: set tabstop=2:shiftwidth=2:expandtab:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue