[sonic_debian_extension] add docker script to SONiC filesystem (#5935)
- Why I did it To allow SONiC Package Migration during SONiC-2-SONiC upgrade we need to start docker daemon in chroot-ed environment in new SONiC filesystem. Later this script will be used to start dockerd in chroot environment on SONiC - How I did it Install a docker service script into /usr/lib/docker/ in SONiC filesystem. - How to verify it Install SONiC image on the switch, mount squashfs to some directory, mount overlay rw layer over squashfs, mount procfs and sysfs, mount docker library. Start the docker using: root@sonic:~$ /usr/lib/docker/docker.sh start Signed-off-by: Stepan Blyshchak <stepanb@nvidia.com>
This commit is contained in:
parent
f938e7fc79
commit
2b8941e716
@ -31,10 +31,15 @@ BUILD_SCRIPTS_DIR=files/build_scripts
|
||||
BUILD_TEMPLATES=files/build_templates
|
||||
IMAGE_CONFIGS=files/image_config
|
||||
SCRIPTS_DIR=files/scripts
|
||||
DOCKER_SCRIPTS_DIR=files/docker
|
||||
|
||||
DOCKER_CTL_DIR=/usr/lib/docker/
|
||||
DOCKER_CTL_SCRIPT="$DOCKER_CTL_DIR/docker.sh"
|
||||
|
||||
# Define target fold macro
|
||||
FILESYSTEM_ROOT_USR="$FILESYSTEM_ROOT/usr"
|
||||
FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM="$FILESYSTEM_ROOT/usr/lib/systemd/system"
|
||||
FILESYSTEM_ROOT_USR_LIB="$FILESYSTEM_ROOT/usr/lib/"
|
||||
FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM="$FILESYSTEM_ROOT_USR_LIB/systemd/system"
|
||||
FILESYSTEM_ROOT_USR_SHARE="$FILESYSTEM_ROOT_USR/share"
|
||||
FILESYSTEM_ROOT_USR_SHARE_SONIC="$FILESYSTEM_ROOT_USR_SHARE/sonic"
|
||||
FILESYSTEM_ROOT_USR_SHARE_SONIC_SCRIPTS="$FILESYSTEM_ROOT_USR_SHARE_SONIC/scripts"
|
||||
@ -53,12 +58,14 @@ trap_push clean_sys
|
||||
sudo LANG=C chroot $FILESYSTEM_ROOT mount sysfs /sys -t sysfs
|
||||
|
||||
sudo bash -c "echo \"DOCKER_OPTS=\"--storage-driver=overlay2\"\" >> $FILESYSTEM_ROOT/etc/default/docker"
|
||||
sudo cp files/docker/docker $FILESYSTEM_ROOT/etc/init.d/
|
||||
# Copy docker start script to be able to start docker in chroot
|
||||
sudo mkdir -p "$FILESYSTEM_ROOT/$DOCKER_CTL_DIR"
|
||||
sudo cp $DOCKER_SCRIPTS_DIR/docker "$FILESYSTEM_ROOT/$DOCKER_CTL_SCRIPT"
|
||||
if [[ $CONFIGURED_ARCH == armhf || $CONFIGURED_ARCH == arm64 ]]; then
|
||||
SONIC_NATIVE_DOCKERD_FOR_DOCKERFS=" -H unix:///dockerfs/var/run/docker.sock "
|
||||
SONIC_NATIVE_DOCKERD_FOR_DOCKERFS_PID="cat `pwd`/dockerfs/var/run/docker.pid"
|
||||
else
|
||||
sudo chroot $FILESYSTEM_ROOT service docker start
|
||||
sudo chroot $FILESYSTEM_ROOT $DOCKER_CTL_SCRIPT start
|
||||
fi
|
||||
|
||||
# Apply apt configuration files
|
||||
@ -619,10 +626,9 @@ if [[ $CONFIGURED_ARCH == armhf || $CONFIGURED_ARCH == arm64 ]]; then
|
||||
sudo rm -fr $FILESYSTEM_ROOT/dockerfs
|
||||
sudo kill -9 `sudo $SONIC_NATIVE_DOCKERD_FOR_DOCKERFS_PID` || true
|
||||
else
|
||||
sudo chroot $FILESYSTEM_ROOT service docker stop
|
||||
sudo chroot $FILESYSTEM_ROOT $DOCKER_CTL_SCRIPT stop
|
||||
fi
|
||||
sudo umount /proc || true
|
||||
sudo rm $FILESYSTEM_ROOT/etc/init.d/docker
|
||||
|
||||
sudo bash -c "echo { > $FILESYSTEM_ROOT_USR_SHARE_SONIC_TEMPLATES/ctr_image_names.json"
|
||||
{% for entry in feature_vs_image_names.split(' ') -%}
|
||||
|
Reference in New Issue
Block a user