And it worked well while I was at home with my Acer AspireF15 tethered to the Internet gateway via copper LAN. This is because I have yet to figure out how to get qemu running over my WiFi connection. When travelling, I needed to have my AspireF15 host Docker directly. This meant a Slackware installation of Docker, which is not directly supported.
A good place to look would be the SlackBuild docker repository. It requires you to install the Google Go language first. It is really quite simple. You download the two zipfiles and unpack them:
tar -xvpf google-go-lang.tar.gz
This generates a sub-directory google-go-lang. Just go in there, and copy the other zipfile (go1.4.3.src.tar.gz) over. Then log in as root, and run the SlackBuild:
./google-go-lang.SlackBuild
It should generate a tgz file like this one:
/tmp/google-go-lang-1.4.3-x86_64-1_SBo.tgz
And you just install it in your Slackware 14.1 thus:
upgradepkg --install-new /tmp/google-go-lang-1.4.3-x86_64-1_SBo.tgz
Now for Docker proper and you might have guessed:
tar -xvpf docker.tar.gz
cp -a ../docker-1.8.2.tar.gz .
./docker.SlackBuild
upgradepkg --install-new /tmp/docker-1.8.2-x86_64-1_SBo.tgzhttps://hub.docker.com/
You start Docker with the script rc.docker:
/etc/rc.d/rc.docker start
And it responds with:
starting docker ...
You then test docker with (first make sure you are connected to the Internet):
docker run hello-world
I would expect docker to barf, and if you looked in its log file:
cat /var/log/docker.log
You might get something like:
time="2016-06-13T17:54:15.002086000+08:00" level=fatal msg="Error starting daemon: error initializing graphdriver: Error running DeviceCreate (CreatePool) dm_task_run failed"
This is because Slackware 14.1 uses the 3.10.17 Linux kernel, and you need a recent kernel to run Docker. I went for the latest stable version of Linux, 4.6.2 as even 4.4.13 in the current version of Slackware was not good enough.
So all we need is to recompile the latest kernel, which should be a doddle in Slackware. Warning: the following steps can result in a non-bootable computer. If done on a smartphone or tablet it can brick your device.
Download your kernel from www.kernel.org into your /usr/src/ directory. Unpack it the usual way:
tar -xvpf linux-4.6.2.tar.xz
Remove the symbolic link to your old kernel:
And set the new version:
ln -s /home/heong/Linux/linux-4.6.2 linux
https://hub.docker.com/https://hub.docker.com/
Now you need your Slackware DVD's kernel config file (mind the '.' in config):
mount -t iso9660 /dev/dvd /mnt/dvd
cp /mnt/dvd/kernels/huge.s linux/.config
Now jump into your linux directory:
cd linux/
make oldconfig
A whole bunch of options comes up. You are encouraged to read through them, but it is quite safe to use the default settings. After 20 years of Slackware kernel compiles, I usually hold down the 'Enter' key until the program finishes.
The for the big moment:
make -j 10 bzImage
And when that succeeds,
make -j 10 modules
Further,
make modules_install
https://hub.docker.com/
Now you need to tell the Slackware loader to use the new kernel.
cp .config /boot/config
cp System.map /boot/
cp -a arch/x86/boot/bzImage /boot/
Next you edit /etc/lilo.conf and add the following lines at the bottom:
image = /boot/bzImage
root = /dev/sda3
label = docker
read-only
Save and exit, and run liloconfig:
liloconfig
Be sure to select 'expert Use expert lilo.conf setup menu', and later, the 'Recycle Reinstall LILO using the existing lilo.conf'
When that finishes, unmount the Slackware dvd:
umount /mnt/dvd
Pop it out of the dvd tray, and reboot your computer. At the boot screen, select your new kernel 'docker'. Log in as root, and re-run the Docker script:
/etc/rc.d/rc.docker start
Test your docker:
docker run hello-world
Which should now reply:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
f9d83caeda74: Pull complete
2cc48731dfff: Pull complete
Digest: sha256:ff215bfe287b986dba232bc82892d636b0e1b1c1ae42f779202caced61f6376b
Status: Downloaded newer image for hello-world:latest
Hello from Docker.
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker Hub account:
https://hub.docker.com
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
Happy slacking, and see you around the docker hub.