As instruções descritas aqui foram testadas numa VM da Google Cloud em Ubuntu 19.04 criada de fresco.
1 → Para instalar o Docker execute
$ sudo apt-get update
...
$ sudo apt-get install docker.io
...
After this operation, 258 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
2 → Para poder correr "containers" sem ser root:
2.1 → Execute o seguinte comando (para adicionar o seu utilizador no "host" ao grupo docker
):
$ sudo usermod -aG docker $USER
2.2 → Termine a sessão e volte a entrar na máquina com o mesmo utilizador.
2.3 → Execute o container hello-world
para verificar que consegue correr "containers" sem ser "root":
$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
3 → Para que o UID e GID sejam os mesmos no "container" e no "host" e não tenham problemas com permissões de ficheiros:
3.1 → Aceda à pasta "docker" do projecto no "host".
$ cd qses1920_project2/docker
$ ls
Dockerfile README-docker.txt build.sh push.sh run.sh
3.2 → Nesse directório, crie o ficheiro cstart.sh
(download) com o seguinte conteúdo:
#! /bin/bash
echo "Changing uid/gid of qses to $HUID/$HGID"
groupmod -g $HGID qses
usermod -u $HUID -g $HGID qses
id qses
echo "Starting shell for qses"
su - qses
3.3 → No mesmo directório, crie também o ficheiro run2.sh
(download) com o seguinte conteúdo:
#! /bin/bash
prevdir=$PWD
cd $(dirname $0)/..
HDIR=$PWD
CDIR=/home/qses/p2
cd $prevdir
echo "Docker container will now start ..."
docker run \
-w $CDIR -v $HDIR:$CDIR:Z --rm -h qses -it \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
-e HUID=$(id -u $USER) \
-e HGID=$(id -g $USER) \
--entrypoint $CDIR/docker/cstart.sh \
-u root edrdo/qses1920_project2:latest
3.4 → Dê permissões de execução aos ficheiros cstart.sh
e run2.sh
.
chmod +x ./cstart.sh ./run2.sh
3.5 → Passe a executar run2.sh
em vez de run.sh
para iniciar o "container".
$ ./run2.sh
Docker container will now start ...
Changing uid/gid of qses to 1001/1003
uid=1001(qses) gid=1003(qses) groups=1003(qses)
Starting shell for qses
qses@qses:~$