Sqush merge latest code to github branch
This commit is contained in:
parent
537242d213
commit
85f354b77b
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[submodule "docker-base"]
|
||||||
|
path = docker-base
|
||||||
|
url = https://github.com/Azure/sonic-docker-base.git
|
@ -33,6 +33,7 @@ The root is disabled, but the created user could sudo.
|
|||||||
./build_docker.sh docker-bgp
|
./build_docker.sh docker-bgp
|
||||||
./build_docker.sh docker-snmp
|
./build_docker.sh docker-snmp
|
||||||
./build_docker.sh docker-lldp
|
./build_docker.sh docker-lldp
|
||||||
|
./build_docker.sh docker-basic_router
|
||||||
|
|
||||||
# Contribution guide
|
# Contribution guide
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ mkdir -p $FILESYSTEM_ROOT
|
|||||||
|
|
||||||
## Build a basic Debian system by debootstrap
|
## Build a basic Debian system by debootstrap
|
||||||
echo '[INFO] Debootstrap...'
|
echo '[INFO] Debootstrap...'
|
||||||
sudo debootstrap --arch amd64 jessie $FILESYSTEM_ROOT http://ftp.us.debian.org/debian
|
sudo debootstrap --variant=minbase --arch amd64 jessie $FILESYSTEM_ROOT http://ftp.us.debian.org/debian
|
||||||
|
|
||||||
## Config hostname and hosts, otherwise 'sudo ...' will complain 'sudo: unable to resolve host ...'
|
## Config hostname and hosts, otherwise 'sudo ...' will complain 'sudo: unable to resolve host ...'
|
||||||
sudo LANG=C chroot $FILESYSTEM_ROOT /bin/bash -c "echo '$HOSTNAME' > /etc/hostname"
|
sudo LANG=C chroot $FILESYSTEM_ROOT /bin/bash -c "echo '$HOSTNAME' > /etc/hostname"
|
||||||
@ -82,11 +82,13 @@ clean_sys() {
|
|||||||
$FILESYSTEM_ROOT/sys/fs/cgroup \
|
$FILESYSTEM_ROOT/sys/fs/cgroup \
|
||||||
$FILESYSTEM_ROOT/sys || true
|
$FILESYSTEM_ROOT/sys || true
|
||||||
}
|
}
|
||||||
trap_push 'sudo umount $FILESYSTEM_ROOT/sys || true'
|
trap_push clean_sys
|
||||||
sudo LANG=C chroot $FILESYSTEM_ROOT mount sysfs /sys -t sysfs
|
sudo LANG=C chroot $FILESYSTEM_ROOT mount sysfs /sys -t sysfs
|
||||||
|
|
||||||
## Pointing apt to public apt mirrors and getting latest packages, needed for latest security updates
|
## Pointing apt to public apt mirrors and getting latest packages, needed for latest security updates
|
||||||
sudo cp files/sources.list $FILESYSTEM_ROOT/etc/apt/
|
sudo cp docker-base/sources.list $FILESYSTEM_ROOT/etc/apt/
|
||||||
|
sudo cp files/apt/apt.conf.d/81norecommends $FILESYSTEM_ROOT/etc/apt/apt.conf.d/
|
||||||
|
sudo LANG=C chroot $FILESYSTEM_ROOT bash -c 'apt-mark auto `apt-mark showmanual`'
|
||||||
|
|
||||||
## Note: set lang to prevent locale warnings in your chroot
|
## Note: set lang to prevent locale warnings in your chroot
|
||||||
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y update
|
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y update
|
||||||
@ -129,7 +131,6 @@ curl -sSL https://get.docker.com/ | sudo LANG=C chroot $FILESYSTEM_ROOT sh
|
|||||||
## Remove garbage left by docker installation script
|
## Remove garbage left by docker installation script
|
||||||
sudo rm $FILESYSTEM_ROOT/etc/apt/sources.list.d/docker.list
|
sudo rm $FILESYSTEM_ROOT/etc/apt/sources.list.d/docker.list
|
||||||
sudo chroot $FILESYSTEM_ROOT service docker stop
|
sudo chroot $FILESYSTEM_ROOT service docker stop
|
||||||
sudo chroot $FILESYSTEM_ROOT service dbus stop
|
|
||||||
## Add docker config drop-in to select aufs, otherwise it may other storage driver
|
## Add docker config drop-in to select aufs, otherwise it may other storage driver
|
||||||
## Note: $_ means last argument of last command
|
## Note: $_ means last argument of last command
|
||||||
sudo mkdir -p $FILESYSTEM_ROOT/etc/systemd/system/docker.service.d/
|
sudo mkdir -p $FILESYSTEM_ROOT/etc/systemd/system/docker.service.d/
|
||||||
@ -149,16 +150,23 @@ sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y install \
|
|||||||
## Note: gdisk is needed for sgdisk in install.sh
|
## Note: gdisk is needed for sgdisk in install.sh
|
||||||
## Note: parted is needed for partprobe in install.sh
|
## Note: parted is needed for partprobe in install.sh
|
||||||
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y install \
|
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y install \
|
||||||
|
file \
|
||||||
|
ifupdown \
|
||||||
|
iproute2 \
|
||||||
|
isc-dhcp-client \
|
||||||
sudo \
|
sudo \
|
||||||
vim \
|
vim \
|
||||||
tcpdump \
|
tcpdump \
|
||||||
ntp \
|
ntp \
|
||||||
|
ntpstat \
|
||||||
openssh-server \
|
openssh-server \
|
||||||
python \
|
python \
|
||||||
python-setuptools \
|
python-setuptools \
|
||||||
|
rsyslog \
|
||||||
python-apt \
|
python-apt \
|
||||||
gdisk \
|
traceroute \
|
||||||
parted \
|
iputils-ping \
|
||||||
|
net-tools \
|
||||||
efibootmgr
|
efibootmgr
|
||||||
|
|
||||||
## docker-py is needed by Ansible docker module
|
## docker-py is needed by Ansible docker module
|
||||||
@ -167,9 +175,6 @@ sudo LANG=C chroot $FILESYSTEM_ROOT pip install 'docker-py==1.6.0'
|
|||||||
## Remove pip which is unnecessary in the base image
|
## Remove pip which is unnecessary in the base image
|
||||||
sudo LANG=C chroot $FILESYSTEM_ROOT pip uninstall -y pip
|
sudo LANG=C chroot $FILESYSTEM_ROOT pip uninstall -y pip
|
||||||
|
|
||||||
echo '[INFO] Install apt-transport-sftp package from deps directory'
|
|
||||||
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y install libssh2-1
|
|
||||||
|
|
||||||
## Config DHCP for eth0
|
## Config DHCP for eth0
|
||||||
sudo tee -a $FILESYSTEM_ROOT/etc/network/interfaces > /dev/null <<EOF
|
sudo tee -a $FILESYSTEM_ROOT/etc/network/interfaces > /dev/null <<EOF
|
||||||
|
|
||||||
@ -178,10 +183,13 @@ allow-hotplug eth0
|
|||||||
iface eth0 inet dhcp
|
iface eth0 inet dhcp
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
sudo cp files/dhcp/rfc3442-classless-routes $FILESYSTEM_ROOT/etc/dhcp/dhclient-exit-hooks.d
|
||||||
|
|
||||||
## Clean up apt
|
## Clean up apt
|
||||||
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get autoremove
|
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get autoremove
|
||||||
|
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get autoclean
|
||||||
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get clean
|
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get clean
|
||||||
sudo LANG=C chroot $FILESYSTEM_ROOT rm -rf /tmp/*
|
sudo LANG=C chroot $FILESYSTEM_ROOT bash -c 'rm -rf /usr/share/doc/* /usr/share/locale/* /var/lib/apt/lists/* /tmp/*'
|
||||||
|
|
||||||
## Umount all
|
## Umount all
|
||||||
echo '[INFO] Umount all'
|
echo '[INFO] Umount all'
|
||||||
@ -195,6 +203,8 @@ sudo mkdir $FILESYSTEM_ROOT/host
|
|||||||
|
|
||||||
## Compress most file system into squashfs file
|
## Compress most file system into squashfs file
|
||||||
sudo rm -f $ONIE_INSTALLER_PAYLOAD $FILESYSTEM_SQUASHFS
|
sudo rm -f $ONIE_INSTALLER_PAYLOAD $FILESYSTEM_SQUASHFS
|
||||||
|
## Output the file system total size for diag purpose
|
||||||
|
sudo du -hs $FILESYSTEM_ROOT
|
||||||
sudo mksquashfs $FILESYSTEM_ROOT $FILESYSTEM_SQUASHFS -e boot -e var/lib/docker
|
sudo mksquashfs $FILESYSTEM_ROOT $FILESYSTEM_SQUASHFS -e boot -e var/lib/docker
|
||||||
|
|
||||||
## Compress together with /boot and /var/lib/docker as an installer payload zip file
|
## Compress together with /boot and /var/lib/docker as an installer payload zip file
|
||||||
|
@ -20,6 +20,7 @@ REGISTRY_PASSWD=$5
|
|||||||
|
|
||||||
## Docker image label, so no need to remember its hash
|
## Docker image label, so no need to remember its hash
|
||||||
docker_image_name=$DOCKER_BUILD_DIR
|
docker_image_name=$DOCKER_BUILD_DIR
|
||||||
|
remote_image_name=$REGISTRY_SERVER:$REGISTRY_PORT/$docker_image_name
|
||||||
|
|
||||||
## File name for docker image
|
## File name for docker image
|
||||||
docker_image_gz=$docker_image_name.gz
|
docker_image_gz=$docker_image_name.gz
|
||||||
@ -32,30 +33,42 @@ docker_image_gz=$docker_image_name.gz
|
|||||||
function cleanup {
|
function cleanup {
|
||||||
rm -rf $DOCKER_BUILD_DIR/files
|
rm -rf $DOCKER_BUILD_DIR/files
|
||||||
rm -rf $DOCKER_BUILD_DIR/deps
|
rm -rf $DOCKER_BUILD_DIR/deps
|
||||||
docker rmi -f $docker_image_name || true
|
docker rmi $remote_image_name || true
|
||||||
}
|
}
|
||||||
trap cleanup exit
|
trap cleanup exit
|
||||||
|
|
||||||
## Copy dependencies
|
## Copy dependencies
|
||||||
## Note: Dockerfile ADD doesn't support reference files outside the folder, so copy it locally
|
## Note: Dockerfile ADD doesn't support reference files outside the folder, so copy it locally
|
||||||
mkdir -p $DOCKER_BUILD_DIR/deps
|
if ls deps/* 1>/dev/null 2>&1; then
|
||||||
cp deps/*.deb $DOCKER_BUILD_DIR/deps
|
mkdir -p $DOCKER_BUILD_DIR/deps
|
||||||
|
cp -r deps/* $DOCKER_BUILD_DIR/deps
|
||||||
|
fi
|
||||||
|
|
||||||
## Copy the suggested Debian sources
|
## Copy the suggested Debian sources
|
||||||
## ref: https://wiki.debian.org/SourcesList
|
## ref: https://wiki.debian.org/SourcesList
|
||||||
mkdir -p $DOCKER_BUILD_DIR/files
|
cp -r files $DOCKER_BUILD_DIR/files
|
||||||
cp files/sources.list $DOCKER_BUILD_DIR/files
|
docker build --no-cache -t $docker_image_name $DOCKER_BUILD_DIR
|
||||||
docker build -t $docker_image_name $DOCKER_BUILD_DIR
|
|
||||||
|
## Flatten the image by importing an exported container on this image
|
||||||
|
## Note: it will squash the image with only one layer and lost all metadata such as ENTRYPOINT,
|
||||||
|
## so apply only to the base image
|
||||||
|
## TODO: wait docker-squash supporting Docker 1.10+
|
||||||
|
## ref: https://github.com/jwilder/docker-squash/issues/45
|
||||||
|
if [ "$docker_image_name" = "docker-base" ]; then
|
||||||
|
tmp_container=$(docker run -d ${docker_image_name} /bin/bash)
|
||||||
|
docker export $tmp_container | docker import - ${docker_image_name}
|
||||||
|
docker rm -f $tmp_container || true
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -n "$REGISTRY_SERVER" ] && [ -n "$REGISTRY_PORT" ]; then
|
if [ -n "$REGISTRY_SERVER" ] && [ -n "$REGISTRY_PORT" ]; then
|
||||||
## Add registry information as tag, so will push as latest
|
## Add registry information as tag, so will push as latest
|
||||||
## Temporarily add -f option to prevent error message of Docker engine version < 1.10.0
|
## Temporarily add -f option to prevent error message of Docker engine version < 1.10.0
|
||||||
docker tag -f $docker_image_name $REGISTRY_SERVER:$REGISTRY_PORT/$docker_image_name
|
docker tag -f $docker_image_name $remote_image_name
|
||||||
|
|
||||||
## Login the docker image registry server
|
## Login the docker image registry server
|
||||||
## Note: user name and password are passed from command line, use fake email address to bypass login check
|
## Note: user name and password are passed from command line, use fake email address to bypass login check
|
||||||
docker login -u $REGISTRY_USERNAME -p "$REGISTRY_PASSWD" -e "@" $REGISTRY_SERVER:$REGISTRY_PORT
|
docker login -u $REGISTRY_USERNAME -p "$REGISTRY_PASSWD" -e "@" $REGISTRY_SERVER:$REGISTRY_PORT
|
||||||
docker push $REGISTRY_SERVER:$REGISTRY_PORT/$docker_image_name
|
docker push $remote_image_name
|
||||||
fi
|
fi
|
||||||
|
|
||||||
docker save $docker_image_name | gzip -c > $docker_image_gz
|
docker save $docker_image_name | gzip -c > $docker_image_gz
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
## Retrieval short version of Git revision hash for partition metadata
|
## Retrieval short version of Git revision hash for partition metadata
|
||||||
[ -z $(git status --untracked-files=no -s) ] || {
|
[ -z "$(git status --untracked-files=no -s)" ] || {
|
||||||
echo "Error: There is local changes not committed to git repo. Cannot get a revision hash for partition metadata."
|
echo "Error: There is local changes not committed to git repo. Cannot get a revision hash for partition metadata."
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
1
docker-base
Submodule
1
docker-base
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 915f0fc71276e8819107edf605ab891764a01870
|
17
docker-basic_router/Dockerfile
Normal file
17
docker-basic_router/Dockerfile
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
FROM docker-base
|
||||||
|
|
||||||
|
MAINTAINER Xudong Wu
|
||||||
|
|
||||||
|
## Set the apt source
|
||||||
|
RUN apt-get clean && apt-get update
|
||||||
|
|
||||||
|
COPY deps /deps
|
||||||
|
RUN dpkg -i /deps/libopennsl_*.deb; \
|
||||||
|
dpkg -i /deps/libsaibcm_*.deb; \
|
||||||
|
apt-get -y install -f
|
||||||
|
|
||||||
|
|
||||||
|
RUN mv /deps/basic_router /usr/sbin/basic_router
|
||||||
|
|
||||||
|
ENTRYPOINT service rsyslog start \
|
||||||
|
&& /bin/bash
|
@ -1,17 +1,12 @@
|
|||||||
FROM debian:jessie
|
FROM docker-base
|
||||||
|
|
||||||
## Set the apt source
|
|
||||||
COPY files/sources.list /etc/sources.list
|
|
||||||
RUN apt-get clean && apt-get update
|
|
||||||
|
|
||||||
## Pre-install the fundamental packages
|
|
||||||
RUN apt-get -y install \
|
|
||||||
rsyslog \
|
|
||||||
python
|
|
||||||
|
|
||||||
COPY deps /deps
|
COPY deps /deps
|
||||||
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/quagga_*.deb
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/quagga_*.deb
|
||||||
|
|
||||||
|
## Clean up
|
||||||
|
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
|
||||||
|
RUN rm -rf /deps
|
||||||
|
|
||||||
ENTRYPOINT service rsyslog start \
|
ENTRYPOINT service rsyslog start \
|
||||||
&& service quagga start \
|
&& service quagga start \
|
||||||
&& /bin/bash
|
&& /bin/bash
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
FROM debian:jessie
|
FROM docker-base
|
||||||
|
|
||||||
## Set the apt source
|
|
||||||
COPY files/sources.list /etc/sources.list
|
|
||||||
RUN apt-get clean && apt-get update
|
|
||||||
|
|
||||||
## Pre-install the fundamental packages
|
## Pre-install the fundamental packages
|
||||||
RUN apt-get -y install \
|
RUN apt-get update && apt-get -y install \
|
||||||
rsyslog \
|
|
||||||
redis-server
|
redis-server
|
||||||
|
|
||||||
ENTRYPOINT service rsyslog start \
|
RUN sed -ri 's/^daemonize yes$/daemonize no/' /etc/redis/redis.conf \
|
||||||
&& service redis-server start \
|
&& sed -ri 's/^logfile .*$/logfile ""/' /etc/redis/redis.conf \
|
||||||
&& /bin/bash
|
&& sed -ri 's/^# syslog-enabled no$/syslog-enabled no/' /etc/redis/redis.conf
|
||||||
|
|
||||||
|
## Clean up
|
||||||
|
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
|
||||||
|
|
||||||
|
ENTRYPOINT service redis-server start
|
||||||
|
21
docker-fpm/Dockerfile
Executable file
21
docker-fpm/Dockerfile
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
FROM docker-base
|
||||||
|
|
||||||
|
RUN apt-get update
|
||||||
|
|
||||||
|
COPY deps /deps
|
||||||
|
## Get fpmsyncd
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/libhiredis0.13*.deb
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/libswsscommon_*.deb
|
||||||
|
COPY /deps/fpmsyncd /usr/local/bin/fpmsyncd
|
||||||
|
|
||||||
|
## Get Quagga
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/quagga_*.deb
|
||||||
|
|
||||||
|
## Clean up
|
||||||
|
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
|
||||||
|
RUN rm -rf /deps
|
||||||
|
|
||||||
|
ENTRYPOINT service rsyslog start \
|
||||||
|
&& service quagga start \
|
||||||
|
&& (fpmsyncd &) \
|
||||||
|
&& /bin/bash
|
@ -1,12 +1,7 @@
|
|||||||
FROM debian:jessie
|
FROM docker-base
|
||||||
|
|
||||||
## Set the apt source
|
|
||||||
COPY files/sources.list /etc/sources.list
|
|
||||||
RUN apt-get clean && apt-get update
|
|
||||||
|
|
||||||
## Pre-install the fundamental packages
|
## Pre-install the fundamental packages
|
||||||
RUN apt-get -y install \
|
RUN apt-get update && apt-get -y install \
|
||||||
rsyslog \
|
|
||||||
lldpd
|
lldpd
|
||||||
|
|
||||||
COPY deps /deps
|
COPY deps /deps
|
||||||
@ -18,6 +13,21 @@ RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return
|
|||||||
## Note: dpkg_apt function has the benefit to detect missing .deb file
|
## Note: dpkg_apt function has the benefit to detect missing .deb file
|
||||||
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/lldpsyncd_*.deb
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/lldpsyncd_*.deb
|
||||||
|
|
||||||
|
## Clean up
|
||||||
|
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
|
||||||
|
RUN rm -rf /deps
|
||||||
|
|
||||||
|
## There is a known bug: agetty processes at 100% cpu
|
||||||
|
## When:
|
||||||
|
## 1. running container in --privileged mode
|
||||||
|
## 2. container runs /sbin/init
|
||||||
|
## ref: https://github.com/docker/docker/issues/4040
|
||||||
|
## Temporary solution:
|
||||||
|
## Disable tty services permanently
|
||||||
|
RUN systemctl --no-pager list-unit-files --type=service | grep getty | awk '{print $1}' | xargs systemctl mask
|
||||||
|
## Note: getty@.service in last grep output will not mask below cases
|
||||||
|
RUN systemctl mask getty@tty1.service
|
||||||
|
|
||||||
## Specify init as CMD to enable systemd
|
## Specify init as CMD to enable systemd
|
||||||
## Note: don't provide ENTRYPOINT at the same time
|
## Note: don't provide ENTRYPOINT at the same time
|
||||||
CMD ["/sbin/init"]
|
CMD ["/sbin/init"]
|
||||||
|
38
docker-mlnx-sswsyncd-rpc/Dockerfile
Normal file
38
docker-mlnx-sswsyncd-rpc/Dockerfile
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
FROM docker-base
|
||||||
|
|
||||||
|
## Make apt-get non-interactive
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
## Pre-install the fundamental packages
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get -y install \
|
||||||
|
net-tools
|
||||||
|
|
||||||
|
COPY deps /deps
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; \
|
||||||
|
dpkg_apt /deps/python-tabulate_*.deb \
|
||||||
|
&& dpkg_apt /deps/applibs_*.deb \
|
||||||
|
&& dpkg_apt /deps/applibs-dev_*.deb \
|
||||||
|
&& dpkg_apt /deps/sx-complib_*.deb \
|
||||||
|
&& dpkg_apt /deps/sxd-libs_*.deb \
|
||||||
|
&& dpkg_apt /deps/sx-scew_*.deb \
|
||||||
|
&& dpkg_apt /deps/sx-examples_*.deb \
|
||||||
|
&& dpkg_apt /deps/sx-gen-utils_*.deb \
|
||||||
|
&& dpkg_apt /deps/python-sdk-api_*.deb \
|
||||||
|
&& dpkg_apt /deps/sx-libnl_*.deb \
|
||||||
|
&& dpkg_apt /deps/iproute2_*.deb \
|
||||||
|
&& dpkg_apt /deps/libsswsdk_*.deb \
|
||||||
|
&& dpkg_apt /deps/libthrift-0.9.2_*.deb \
|
||||||
|
&& dpkg_apt /deps/libthrift-dev_*.deb
|
||||||
|
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; \
|
||||||
|
dpkg_apt /deps/mlnx-sai_*.deb \
|
||||||
|
&& dpkg_apt /deps/sswsyncd-saithrift_*.deb
|
||||||
|
|
||||||
|
## Clean up
|
||||||
|
RUN apt-get clean -y ; apt-get autoclean -y ; apt-get autoremove -y ; rm -rf /deps
|
||||||
|
|
||||||
|
ENTRYPOINT service rsyslog start \
|
||||||
|
&& mkdir -p /dev/sxdevs && ( [ -e /dev/sxdevs/sxcdev ] || mknod /dev/sxdevs/sxcdev c 231 193 ) \
|
||||||
|
&& service sswsyncd start \
|
||||||
|
&& /bin/bash
|
30
docker-mlnx-sswsyncd/Dockerfile
Executable file
30
docker-mlnx-sswsyncd/Dockerfile
Executable file
@ -0,0 +1,30 @@
|
|||||||
|
FROM docker-base
|
||||||
|
|
||||||
|
RUN apt-get update
|
||||||
|
|
||||||
|
## Pre-install the fundamental packages
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get -y install \
|
||||||
|
net-tools
|
||||||
|
|
||||||
|
COPY deps /deps
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/python-tabulate_*.deb
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/applibs_*.deb
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/applibs-dev_*.deb
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/sx-complib_*.deb
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/sxd-libs_*.deb
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/sx-scew_*.deb
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/sx-examples_*.deb
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/sx-gen-utils_*.deb
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/python-sdk-api_*.deb
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/sx-libnl_*.deb
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/iproute2_*.deb
|
||||||
|
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/mlnx-sai_*.deb
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/libsswsdk_*.deb
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/sswsyncd_*.deb
|
||||||
|
|
||||||
|
ENTRYPOINT service rsyslog start \
|
||||||
|
&& mkdir -p /dev/sxdevs && ( [ -e /dev/sxdevs/sxcdev ] || mknod /dev/sxdevs/sxcdev c 231 193 ) \
|
||||||
|
&& sleep 5 && service sswsyncd start \
|
||||||
|
&& /bin/bash
|
22
docker-orchagent/Dockerfile
Executable file
22
docker-orchagent/Dockerfile
Executable file
@ -0,0 +1,22 @@
|
|||||||
|
FROM docker-base
|
||||||
|
|
||||||
|
RUN apt-get update
|
||||||
|
|
||||||
|
COPY deps /deps
|
||||||
|
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/libhiredis0.13*.deb
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/libswsscommon_*.deb
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/libsairedis_*.deb
|
||||||
|
|
||||||
|
## TODO: add ifupdown into Depends
|
||||||
|
RUN apt-get install -f -y ifupdown
|
||||||
|
|
||||||
|
## Copy executable binaries
|
||||||
|
COPY ["/deps/orchagent","/deps/swssconfig","/deps/portsyncd","/deps/intfsyncd","/deps/neighsyncd","/usr/local/bin/"]
|
||||||
|
|
||||||
|
## Clean up
|
||||||
|
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
|
||||||
|
RUN rm -rf /deps
|
||||||
|
|
||||||
|
ENTRYPOINT service rsyslog start \
|
||||||
|
&& /bin/bash
|
16
docker-platform-monitor/Dockerfile
Executable file
16
docker-platform-monitor/Dockerfile
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
FROM docker-base
|
||||||
|
|
||||||
|
## Pre-install the fundamental packages
|
||||||
|
RUN apt-get update && apt-get -y install \
|
||||||
|
smartmontools \
|
||||||
|
sensord
|
||||||
|
|
||||||
|
## Clean up
|
||||||
|
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
|
||||||
|
RUN rm -rf /deps
|
||||||
|
|
||||||
|
ENTRYPOINT service rsyslog start \
|
||||||
|
&& service lm-sensors start \
|
||||||
|
&& service smartmontools start \
|
||||||
|
&& service sensord start \
|
||||||
|
&& /bin/bash
|
@ -1,12 +1,7 @@
|
|||||||
FROM debian:jessie
|
FROM docker-base
|
||||||
|
|
||||||
## Set the apt source
|
|
||||||
COPY files/sources.list /etc/sources.list
|
|
||||||
RUN apt-get clean && apt-get update
|
|
||||||
|
|
||||||
## Pre-install the fundamental packages
|
## Pre-install the fundamental packages
|
||||||
RUN apt-get -y install \
|
RUN apt-get update && apt-get -y install \
|
||||||
rsyslog \
|
|
||||||
snmp \
|
snmp \
|
||||||
snmpd
|
snmpd
|
||||||
|
|
||||||
@ -18,6 +13,25 @@ RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return
|
|||||||
## Install SNMP subagent
|
## Install SNMP subagent
|
||||||
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/acs-snmp-subagent_*.deb
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/acs-snmp-subagent_*.deb
|
||||||
|
|
||||||
|
## Clean up
|
||||||
|
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
|
||||||
|
RUN rm -rf /deps
|
||||||
|
|
||||||
|
## There is a known bug: agetty processes at 100% cpu
|
||||||
|
## When:
|
||||||
|
## 1. running container in --privileged mode
|
||||||
|
## 2. container runs /sbin/init
|
||||||
|
## ref: https://github.com/docker/docker/issues/4040
|
||||||
|
## Temporary solution:
|
||||||
|
## Disable tty services permanently
|
||||||
|
RUN systemctl --no-pager list-unit-files --type=service | grep getty | awk '{print $1}' | xargs systemctl mask
|
||||||
|
## Note: getty@.service in last grep output will not mask below cases
|
||||||
|
RUN systemctl mask getty@tty1.service
|
||||||
|
|
||||||
|
## Although exposing ports is not need for host net mode, keep it for possible bridge mode
|
||||||
|
EXPOSE 161/udp
|
||||||
|
EXPOSE 162/udp
|
||||||
|
|
||||||
## Specify init as CMD to enable systemd
|
## Specify init as CMD to enable systemd
|
||||||
## Note: don't provide ENTRYPOINT at the same time
|
## Note: don't provide ENTRYPOINT at the same time
|
||||||
CMD ["/sbin/init"]
|
CMD ["/sbin/init"]
|
||||||
|
@ -1,22 +1,18 @@
|
|||||||
FROM debian:jessie
|
FROM docker-base
|
||||||
|
|
||||||
## Set the apt source
|
RUN apt-get update
|
||||||
COPY files/sources.list /etc/sources.list
|
|
||||||
RUN apt-get clean && apt-get update
|
|
||||||
|
|
||||||
## Pre-install the fundamental packages
|
|
||||||
## TODO: sswsyncd depends on ifupdown
|
|
||||||
RUN apt-get -y install \
|
|
||||||
python \
|
|
||||||
ifupdown \
|
|
||||||
rsyslog
|
|
||||||
|
|
||||||
COPY deps /deps
|
COPY deps /deps
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/python-tabulate_*.deb
|
||||||
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/libopennsl_*.deb
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/libopennsl_*.deb
|
||||||
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/libsaibcm_*.deb
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/libsaibcm_*.deb
|
||||||
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/libsswsdk_*.deb
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/libsswsdk_*.deb
|
||||||
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/sswsyncd_*.deb
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/sswsyncd_*.deb
|
||||||
|
|
||||||
|
## Clean up
|
||||||
|
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
|
||||||
|
RUN rm -rf /deps
|
||||||
|
|
||||||
ENTRYPOINT service rsyslog start \
|
ENTRYPOINT service rsyslog start \
|
||||||
&& service sswsyncd start \
|
&& service sswsyncd start \
|
||||||
&& /bin/bash
|
&& /bin/bash
|
||||||
|
33
docker-syncd-mlnx/Dockerfile
Executable file
33
docker-syncd-mlnx/Dockerfile
Executable file
@ -0,0 +1,33 @@
|
|||||||
|
FROM docker-base
|
||||||
|
|
||||||
|
RUN apt-get update
|
||||||
|
|
||||||
|
COPY deps /deps
|
||||||
|
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; \
|
||||||
|
dpkg_apt /deps/applibs_*.deb \
|
||||||
|
&& dpkg_apt /deps/applibs-dev_*.deb \
|
||||||
|
&& dpkg_apt /deps/sx-complib_*.deb \
|
||||||
|
&& dpkg_apt /deps/sxd-libs_*.deb \
|
||||||
|
&& dpkg_apt /deps/sx-scew_*.deb \
|
||||||
|
&& dpkg_apt /deps/sx-examples_*.deb \
|
||||||
|
&& dpkg_apt /deps/sx-gen-utils_*.deb \
|
||||||
|
&& dpkg_apt /deps/python-sdk-api_*.deb \
|
||||||
|
&& dpkg_apt /deps/sx-libnl_*.deb \
|
||||||
|
&& dpkg_apt /deps/iproute2_*.deb \
|
||||||
|
&& dpkg_apt /deps/mft*.deb \
|
||||||
|
|
||||||
|
&& dpkg_apt /deps/libhiredis0.13*.deb \
|
||||||
|
&& dpkg_apt /deps/libswsscommon_*.deb \
|
||||||
|
&& dpkg_apt /deps/mlnx-sai_*.deb \
|
||||||
|
&& dpkg_apt /deps/libsairedis_*.deb
|
||||||
|
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/syncd_*.deb
|
||||||
|
|
||||||
|
## Clean up
|
||||||
|
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
|
||||||
|
RUN rm -rf /deps
|
||||||
|
|
||||||
|
ENTRYPOINT service rsyslog start \
|
||||||
|
&& service syncd start \
|
||||||
|
&& /bin/bash
|
24
docker-syncd/Dockerfile
Executable file
24
docker-syncd/Dockerfile
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
FROM docker-base
|
||||||
|
|
||||||
|
RUN apt-get update
|
||||||
|
|
||||||
|
COPY deps /deps
|
||||||
|
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/libhiredis0.13*.deb
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/libswsscommon_*.deb
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/libopennsl_*.deb
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/libsaibcm_*.deb
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/libsairedis_*.deb
|
||||||
|
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt /deps/syncd_*.deb
|
||||||
|
|
||||||
|
## TODO: add kmod into Depends
|
||||||
|
RUN apt-get install -f kmod
|
||||||
|
|
||||||
|
## Clean up
|
||||||
|
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
|
||||||
|
RUN rm -rf /deps
|
||||||
|
|
||||||
|
ENTRYPOINT service rsyslog start \
|
||||||
|
&& service syncd start \
|
||||||
|
&& /bin/bash
|
36
docker-vas/Dockerfile
Executable file
36
docker-vas/Dockerfile
Executable file
@ -0,0 +1,36 @@
|
|||||||
|
FROM docker-base
|
||||||
|
|
||||||
|
## Pre-install the fundamental packages
|
||||||
|
RUN apt-get update && apt-get -y install \
|
||||||
|
sudo
|
||||||
|
|
||||||
|
COPY deps /deps
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; \
|
||||||
|
dpkg_apt /deps/vasclnt_*.deb && \
|
||||||
|
dpkg_apt /deps/vasgp_*.deb
|
||||||
|
|
||||||
|
## Clean up
|
||||||
|
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
|
||||||
|
RUN rm -rf /deps
|
||||||
|
|
||||||
|
## Expose to host, ie. image content will copy to host when container started
|
||||||
|
## For .so
|
||||||
|
VOLUME /host/lib/x86_64-linux-gnu
|
||||||
|
## For config
|
||||||
|
VOLUME /etc/pam.d/
|
||||||
|
VOLUME /host/etc
|
||||||
|
## For domain socket and local caches
|
||||||
|
VOLUME /var/opt/quest/vas/vasd/
|
||||||
|
## For home directory
|
||||||
|
VOLUME /home/
|
||||||
|
|
||||||
|
## Delete the symlinks and create full copies to host folder
|
||||||
|
ENTRYPOINT service rsyslog start \
|
||||||
|
&& cp --remove-destination /opt/quest/lib64/nss/libnss_vas4.so.2 \
|
||||||
|
/host/lib/x86_64-linux-gnu/ \
|
||||||
|
&& cp --remove-destination /opt/quest/lib64/security/pam_vas3.so \
|
||||||
|
/host/lib/x86_64-linux-gnu/security/ \
|
||||||
|
&& cp --remove-destination /etc/nsswitch.conf \
|
||||||
|
/host/etc/ \
|
||||||
|
&& service vasd start \
|
||||||
|
&& /bin/bash
|
3
files/apt/apt.conf.d/81norecommends
Normal file
3
files/apt/apt.conf.d/81norecommends
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
APT::Install-Recommends "false";
|
||||||
|
APT::AutoRemove::RecommendsImportant "false";
|
||||||
|
APT::AutoRemove::SuggestsImportant "false";
|
63
files/dhcp/rfc3442-classless-routes
Normal file
63
files/dhcp/rfc3442-classless-routes
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
# set classless routes based on the format specified in RFC3442
|
||||||
|
# e.g.:
|
||||||
|
# new_rfc3442_classless_static_routes='24 192 168 10 192 168 1 1 8 10 10 17 66 41'
|
||||||
|
# specifies the routes:
|
||||||
|
# 192.168.10.0/24 via 192.168.1.1
|
||||||
|
# 10.0.0.0/8 via 10.10.17.66.41
|
||||||
|
|
||||||
|
RUN="yes"
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$RUN" = "yes" ]; then
|
||||||
|
if [ -n "$new_rfc3442_classless_static_routes" ]; then
|
||||||
|
if [ "$reason" = "BOUND" ] || [ "$reason" = "REBOOT" ]; then
|
||||||
|
|
||||||
|
set -- $new_rfc3442_classless_static_routes
|
||||||
|
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
net_length=$1
|
||||||
|
via_arg=''
|
||||||
|
|
||||||
|
case $net_length in
|
||||||
|
32|31|30|29|28|27|26|25)
|
||||||
|
net_address="${2}.${3}.${4}.${5}"
|
||||||
|
gateway="${6}.${7}.${8}.${9}"
|
||||||
|
shift 9
|
||||||
|
;;
|
||||||
|
24|23|22|21|20|19|18|17)
|
||||||
|
net_address="${2}.${3}.${4}.0"
|
||||||
|
gateway="${5}.${6}.${7}.${8}"
|
||||||
|
shift 8
|
||||||
|
;;
|
||||||
|
16|15|14|13|12|11|10|9)
|
||||||
|
net_address="${2}.${3}.0.0"
|
||||||
|
gateway="${4}.${5}.${6}.${7}"
|
||||||
|
shift 7
|
||||||
|
;;
|
||||||
|
8|7|6|5|4|3|2|1)
|
||||||
|
net_address="${2}.0.0.0"
|
||||||
|
gateway="${3}.${4}.${5}.${6}"
|
||||||
|
shift 6
|
||||||
|
;;
|
||||||
|
0) # default route
|
||||||
|
net_address="0.0.0.0"
|
||||||
|
gateway="${2}.${3}.${4}.${5}"
|
||||||
|
shift 5
|
||||||
|
;;
|
||||||
|
*) # error
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# take care of link-local routes
|
||||||
|
if [ "${gateway}" != '0.0.0.0' ]; then
|
||||||
|
via_arg="via ${gateway}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# set route (ip detects host routes automatically)
|
||||||
|
ip -4 route add "${net_address}/${net_length}" \
|
||||||
|
${via_arg} dev "${interface}" table default >/dev/null 2>&1
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
@ -1,8 +0,0 @@
|
|||||||
deb http://httpredir.debian.org/debian jessie main contrib non-free
|
|
||||||
deb-src http://httpredir.debian.org/debian jessie main contrib non-free
|
|
||||||
|
|
||||||
deb http://httpredir.debian.org/debian jessie-updates main contrib non-free
|
|
||||||
deb-src http://httpredir.debian.org/debian jessie-updates main contrib non-free
|
|
||||||
|
|
||||||
deb http://security.debian.org/ jessie/updates main contrib non-free
|
|
||||||
deb-src http://security.debian.org/ jessie/updates main contrib non-free
|
|
Loading…
Reference in New Issue
Block a user