Last active
February 18, 2025 11:33
-
-
Save mwufi/6718b30761cd109f9aff04c5144eb885 to your computer and use it in GitHub Desktop.
Install Docker in Google Colab!
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# First let's update all the packages to the latest ones with the following command | |
sudo apt update -qq | |
# Now we want to install some prerequisite packages which will let us use HTTPS over apt | |
sudo apt install apt-transport-https ca-certificates curl software-properties-common -qq | |
# After that we will add the GPG key for the official Docker repository to the system | |
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - | |
# We will add the Docker repository to our APT sources | |
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" | |
# Next let's update the package database with our newly added Docker package repo | |
sudo apt update -qq | |
# Finally lets install docker with the below command | |
sudo apt install docker-ce | |
# Lets check that docker is running | |
docker | |
# Originally, we did the following: (but doesn't work in Colab...) | |
# sudo systemctl status docker | |
# The output should be similar to this snippet below | |
# ● docker.service - Docker Application Container Engine | |
# Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) | |
# Active: active (running) since Tue 2019-01-01 19:22:114 UTC; 1min 25s ago | |
# Docs: https://docs.docker.com | |
# Main PID: 10096 (dockerd) | |
# Tasks: 16 | |
# CGroup: /system.slice/docker.service | |
# ├─10096 /usr/bin/dockerd -H fd:// | |
# └─10113 docker-containerd --config /var/run/docker/containerd/containerd.toml | |
# And now that everything is good, you should be able to do: | |
# docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow |
I am facing following error for given command:
!udocker --allow-root run --name es01 --net elastic -p 9200:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:8.17.0
Error: manifest not found or not authorized Error: no files downloaded Error: image or container not available
I was testing with this, it correctly pulls the image and run the container, but it refuses to go on because it is detecting it was run by root
!udocker --allow-root run --name=es01 --publish=9200:9200 docker.elastic.co/elasticsearch/elasticsearch:8.17.0
Creating a normal user and run the same command without the --allow-root
part, it goes further but the process died with this last message:
{"@timestamp":"2025-01-28T20:45:11.173Z", "log.level": "INFO", "message":"Native controller process has stopped - no new native processes can be started", "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.server","process.thread.name":"ml-cpp-log-tail-thread","log.logger":"org.elasticsearch.xpack.ml.process.NativeController","elasticsearch.node.name":"df2c331b3b64","elasticsearch.cluster.name":"docker-cluster"}
So, I would say, don't bother.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
As a possible alternative, Apptainer works on Google Colab.
You can follow the instruction in the document to install it: https://apptainer.org/docs/admin/latest/installation.html#install-ubuntu-packages
It is possible to convert a docker image to
.sif
file for Apptainer:However, it is worth noting that Google Colab has some restrictions on root user's capabilities, so you must gain full capabilities in a new user namespace created by
unshare -r
before running Apptainer as root:or just run as a regular user:
Additionally, if you want to run a CUDA application inside a container, you need to use flag
--nv
in the command line, according to https://apptainer.org/docs/user/1.3/gpu.html#requirementsYou may run into a problem like this:
That's because Apptainer depends on
ldconfig -p
to find shared libraries, but NVIDIA libraries haven't been added to it on Google Colab.Follow these steps to fix it:
Check the
LD_LIBRARY_PATH
to find nvidia library path:Write the nvidia library path into
/etc/ld.so.conf.d/
:Refresh library cache:
!ldconfig
Now you'll be able to find nvidia library files in
ldconfig -p
, and can executenvidia-smi
command normally:I hope this helps!
Original post: https://github.com/cat-note/bottleofcat/blob/main/Containerization/GPUApptainerOnGoogleColab.md