Docker Tutorial Part 2: Basci Commands and Running Rstudio Server with Docker
- Part 1: Palying with Docker to deploy genetics software
- Part 2: Basci Commands and Running Rstudio Server with Docker
- Part 3: Build a docker image which contains Birdsuite - software for CNV analysis
1. Basic docker commands
docker ps
shows curretently running containerdocker ps -a
This command will show all containers available in the system. You will see there are quite a number of containers accuumlated.
psytky03@ubuntu:~$ docker ps -a
CONTAINER ID IMAGE COMMAND
73af7edafa08 psytky03/eigandplink "plink --file data/to"
5d37644676f5 psytky03/eigandplink "plink --file data/to"
f85336ec937f psytky03/eigandplink "eigenstrat"
0bd8bff7af23 psytky03/eigandplink "bash"
08f6a6f41583 psytky03/eigandplink "bash"
c3e1e1645e1a psytky03/eigandplink "plink --help"
cc592b883668 psytky03/eigandplink "plink -v"
f9873e947389 ubuntu "bash"
43c5be566760 hello-world "/hello"
*
docker rm CONTAINER_ID
to delete unused constainerpsytky03@ubuntu:~$ docker rm 73af7edafa08
73af7edafa08
docker run -rm
to automatically delete the container after it exited
psytky03@ubuntu:~$ docker run -ti --rm psytky03/eigandplink /bin/bash
root@44914cfcfd57:/# exit
exit
#Now let's try to delete this container with id 44914cfcfd57
psytky03@ubuntu:~$ docker rm 44914cfcfd57
Error response from daemon: no such id: 44914cfcfd57
Error: failed to remove containers: [44914cfcfd57]
docker images
to show all images in the system
psytky03@ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
psytky03/eigandplink latest 6fd94c3b6e6e 38 hours ago 392.7 MB
ubuntu latest 91e54dfb1179 5 weeks ago 188.4 MB
hello-world latest af340544ed62 7 weeks ago 960 B
docker rmi IMAGE_ID
to delete the image. Noticed that if a container is created fromt the image, need to either delete the container or force delete.
psytky03@ubuntu:~$ docker rmi af340544ed62
Error response from daemon: Conflict, cannot delete af340544ed62 because the container 43c5be566760 is using it, use -f to force
Error: failed to remove images: [af340544ed62]
psytky03@ubuntu:~$ docker rm 43c5be566760
43c5be566760
psytky03@ubuntu:~$ docker rmi af340544ed62
Untagged: hello-world:latest
Deleted: af340544ed62de0680f441c71fa1a80cb084678fed42bae393e543faea3a572c
Deleted: 535020c3e8add9d6bb06e5ac15a261e73d9b213d62fb2c14d752b8e189b2b912
docker pull
to fetch the image from the dockerhub.
2. Pull Rstudio Server image from DockerHub
The Rstudio server image can be fetched from Dockerhub at this link rocker/rstudio.
Since
Since
rocker/rstudio
is not avilable in this linux system now, if we use docker run rocker/rstudio
, docker will by default look for this image in dockerhub and download it this image can be found.
Here we use
docker pull
to fetch it firstdocker pull rocker/rstudio
psytky03@ubuntu:~$ docker pull rocker/rstudio
Using default tag: latest
latest: Pulling from rocker/rstudio
acdec9ec413b: Pull complete
37cbf6c3413f: Pull complete
7fc523e9982e: Pull complete
359b980a72ed: Pull complete
01c4f8f74e82: Pull complete
46ac2c9f1a72: Pull complete
2c218622f9d2: Pull complete
a01f119d835b: Pull complete
a5688ed074d1: Pull complete
1e631da06610: Pull complete
27866ec542bc: Pull complete
ac88bcc53e01: Pull complete
061029545a15: Pull complete
be5e2022c62b: Pull complete
776ce8e1ace5: Pull complete
5608458f8ff4: Pull complete
0948d1536ce1: Pull complete
88b0e66f47b7: Pull complete
62c92c006919: Pull complete
20c2eeb79e8b: Pull complete
7b226db5341a: Pull complete
88c331104d7a: Pull complete
eafb6b5866c1: Pull complete
e19a7c84d5f1: Pull complete
Digest: sha256:488f7c427a970b1d11424e8c8a01269e132d41ee1913a6bfadb97c4105fc2719
Status: Downloaded newer image for rocker/rstudio:latest
Confirm it with
docker images
psytky03@ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
psytky03/eigandplink latest 6fd94c3b6e6e 39 hours ago 392.7 MB
rocker/rstudio latest e19a7c84d5f1 4 days ago 1.343 GB
ubuntu latest 91e54dfb1179 5 weeks ago 188.4 MB
3. Run Rstudio Server
Here we use
docker run -d -p 8888:8787 rocker/rstudio
to create a container and execute it.
The
The
-d
indicate we run it in background mode
like a web application.The
-p
tells docker how we are going to map port between the host and container. Rstudio Server
use 8787
as its default port and here we map it to 8888 in the host. psytky03@ubuntu:~$ docker run -d -p 8888:8787 rocker/rstudio
0d1a38402d5ecd68e18276e5e2cd979e21f255e3c2b3525b9388c9a20501fd6e
Have a check of the host Ip address at eth0, my IP is
172.16.118.129
Type the address
172.16.118.129:8888
in the web browser of the Mac and you will see this login window
log in the system
The username and password are both
rstudio
Now let's install
ggplot2
packageinstall.packages("ggplot2")
library("ggplot2")
ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar()
awesome, seems everything is running great.
Now let's stop this container using
docker stop
command, but first we need to get the container ID with docker ps
psytky03@ubuntu:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED
0d1a38402d5e rocker/rstudio "/usr/bin/supervisord" 20 minutes ago
psytky03@ubuntu:~$ docker stop 0d1a38402d5e
0d1a38402d5e
Start it again
psytky03@ubuntu:~$ docker start 0d1a38402d5e
0d1a38402d5e
Everything is back again. If we want have the ggplot2 library installed in the image file. we need to use the commit command.
To add the container into the image with
docker commit
commandpsytky03@ubuntu:~$ docker commit -m "add ggplot2" 0d1a38402d5e rocker/rstudio
28024380329aa1f8fa23499fce8ea3f56233d19eb48a711111584cd4ecff7285
It is also possible to show all the intermediate layer information of this image. Similar to snapshot of virtual machine, we can run container from any state by telling docker the image ID.
psytky03@ubuntu:~$ docker history rocker/rstudio
IMAGE CREATED CREATED BY
28024380329a 2 minutes ago /usr/bin/supervisord -c /etc/supervisor/conf.
e19a7c84d5f1 4 days ago /bin/sh -c #(nop) CMD ["/usr/bin/supervisord"
eafb6b5866c1 4 days ago /bin/sh -c #(nop) EXPOSE 8787/tcp
88c331104d7a 4 days ago /bin/sh -c mkdir -p /var/log/supervisor &&
7b226db5341a 4 days ago /bin/sh -c #(nop) COPY file:8294dfdc8c50662db
20c2eeb79e8b 4 days ago /bin/sh -c #(nop) COPY file:df4e748b71577b0ec
62c92c006919 4 days ago /bin/sh -c #(nop) COPY file:674055700f4c6fbee
88b0e66f47b7 4 days ago /bin/sh -c usermod -l rstudio docker && use
0948d1536ce1 4 days ago /bin/sh -c echo '\n\n# Configure httr to perf
5608458f8ff4 4 days ago /bin/sh -c rm -rf /var/lib/apt/lists/ && ap
776ce8e1ace5 4 days ago /bin/sh -c #(nop) ENV LANG=en_US.UTF-8
be5e2022c62b 4 days ago /bin/sh -c #(nop) ENV PATH=/usr/lib/rstudio-s
061029545a15 4 days ago /bin/sh -c #(nop) MAINTAINER "Carl Boettiger
ac88bcc53e01 2 weeks ago /bin/sh -c #(nop) CMD ["R"]
27866ec542bc 2 weeks ago /bin/sh -c apt-get update
1e631da06610 2 weeks ago /bin/sh -c #(nop) ENV R_BASE_VERSION=3.2.2
a5688ed074d1 2 weeks ago /bin/sh -c echo "deb http://http.debian.net/d
a01f119d835b 2 weeks ago /bin/sh -c #(nop) ENV LANG=en_US.UTF-8
2c218622f9d2 2 weeks ago /bin/sh -c #(nop) ENV LC_ALL=en_US.UTF-8
46ac2c9f1a72 2 weeks ago /bin/sh -c echo "en_US.UTF-8 UTF-8" >> /etc/l
01c4f8f74e82 2 weeks ago /bin/sh -c apt-get update
359b980a72ed 2 weeks ago /bin/sh -c useradd docker
7fc523e9982e 2 weeks ago /bin/sh -c #(nop) MAINTAINER "Carl Boettiger
37cbf6c3413f 2 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"]
acdec9ec413b 2 weeks ago /bin/sh -c #(nop) ADD file:9101a1e6d928e77435