Playing with #Docker , my notebook
This post is my notebook about docker after we had a very nice introduction about docker by François Moreews (INRIA/IRISA, Rennes). I've used docker today for the first time, my aim was just to create an image containing https://github.com/lindenb/verticalize, a small tool I wrote to verticalize text files.
Install docker
you hate running this kind of command-lines, aren't you ?$ wget -qO- https://get.docker.com/ | sh
sudo password for tatayoyo:
apparmor is enabled in the kernel and apparmor utils were already installed
/sbin/apparmor_parser
+ [ https://get.docker.com/ = https://get.docker.com/ ]
+ sudo -E sh -c apt-key adv --keyserver
(...)
add my linux account to the "docker" group
sudo usermod -aG docker tatayoyologout and relog...
I'm working behind a $@!# proxy: edit /etc/default/docker to set the proxy-things
$ cat /etc/default/docker
(...)
# If you need Docker to use an HTTP proxy, it can also be specified
here.
export http_proxy="http://(proxy-port):(proxy-host)/"
export https_proxy="http://(proxy-port):(proxy-host)/"
export ftp_proxy="http://(proxy-port):(proxy-host)/"
export HTTP_PROXY="http://(proxy-port):(proxy-host)/"
export FTP_PROXY="http://(proxy-port):(proxy-host)/"
export HTTPS_PROXY="http://(proxy-port):(proxy-host)/"
(...)
start the docker service
$ sudo start docker [sudo] password for tatayoyo: docker start/running, process 5023
create the Dockerfile
Create a new directory, in this directory we create a file named "Dockerfile". It contains- the name of the base-image we're using (here the latest ubuntu)
- the $@!# proxy settings (again ???!!!!)
- some calls to `apt` to download git, gcc, make ...
- some statements to clone https://github.com/lindenb/verticalize, compile and install my tool into /usr/local/bin
FROM ubuntu:latest
ENV http_proxy "http://(proxy-port):(proxy-host)/"
ENV https_proxy "http://(proxy-port):(proxy-host)/"
ENV ftp_proxy "http://(proxy-port):(proxy-host)/"
ENV HTTP_PROXY "http://(proxy-port):(proxy-host)/"
ENV HTTPS_PROXY "http://(proxy-port):(proxy-host)/"
ENV FTP_PROXY "http://(proxy-port):(proxy-host)/"
RUN apt-get update
RUN apt-get install -y wget gcc make git
RUN git clone "https://github.com/lindenb/verticalize.git" /tmp/verticalize && make -C /tmp/verticalize && cp /tmp/verticalize/verticalize /usr/local/bin && rm -rf /tmp/verticalize
create the image 'verticalize' from the Dockerfile
sudo docker build -t verticalize . (...)
List the images
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
verticalize latest 5f7159b4921a 12 seconds ago 317 MB
(...)
Tag the 'verticalize' image as hosted on my dockerhub repo https://registry.hub.docker.com/u/lindenb
$ docker tag 5f7159b4921a lindenb/verticalize:latest $ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE verticalize latest 5f7159b4921a About a minute ago 317 MB lindenb/verticalize latest 5f7159b4921a About a minute ago 317 MB
Push the image to dockerhub
$ docker push lindenb/verticalize The push refers to a repository [lindenb/verticalize] (len: 1) 5f7159b4921a: Image push failed Please login prior to push: Username: lindenb Password: Email: xxxxxxx@yahoo.fr WARNING: login credentials saved in /home/tatyoyo/.docker/config.json Login Succeeded The push refers to a repository [lindenb/verticalize] (len: 1) 5f7159b4921a: Image already exists 68f6ddc7de15: Buffering to Disk
We can now remove the local image ...
$ docker rmi -f 5f7159b4921a
.. and pull the image from dockerhub
$ docker pull lindenb/verticalize
latest: Pulling from lindenb/verticalize
83e4dde6b9cf: Downloading [==================> ] 24.82 MB/65.79 MB
b670fb0c7ecd: Download complete
29460ac93442: Download complete
d2a0ecffe6fa: Download complete
48e98a1c03ae: Download complete
94ac1beb0514: Download complete
e12eda8693a9: Download complete
5eb1952afbb7: Download complete
fb4ac6e6a264: Download complete
0f8372bacf03: Download complete
789c4f122778: Downloading [=================> ] 7.511 MB/20.92 MB
68f6ddc7de15: Downloading [=====> ] 4.99 MB/44.61 MB
5f7159b4921a: Download complete
At the end, run a command inside the docker container
My tool verticalize is installed in the image 'lindenb/verticalize:latest' :$ cat << EOF | docker run -i lindenb/verticalize:latest > echo -e "#X\tY\n1\t2\n3\t4" | verticalize > EOF >>> 2 $1 #X 1 $2 Y 2 <<< 2 >>> 3 $1 #X 3 $2 Y 4 <<< 3
That's it,
Pierre