Začínáme s Dockerem – Seznamování se

V předchozích dvou příspěvcích věnovaných dockeru jsme docker nainstalovali, přidali uživatele do skupiny docker a zkusmo spustili kontejner z image hello-world. V tomto příspěvku se s dockerem seznámíme podrobněji.

Spuštění nového kontejneru pomocí docker run je možné parametrizovat. Volba -i znamená interactive a způsobí, že kontejner zůstane aktivní. Bash na konci znamená, že se spustí bash.

vitfo@vitfo-VirtualBox:~$ docker run -i debian bash
Unable to find image 'debian:latest' locally
latest: Pulling from library/debian
723254a2c089: Pull complete 
Digest: sha256:0a5fcee6f52d5170f557ee2447d7a10a5bdcf715dd7f0250be0b678c556a501b
Status: Downloaded newer image for debian:latest

Nyní můžeme spuštěnému bash zadávat příkazy (např. ls, pwd a exit jako v následujícím příkladu). Image debian jsme u sebe neměli, takže se stáhl z veřejného docker repozitáře. Při dalším spuštění se již stahovat nebude.

ls
bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

pwd
/

exit

Přidáním volby -t při spuštění se zobrazí jakoby terminál.

vitfo@vitfo-VirtualBox:~$ docker run -it debian bash

Zkusíme připojení k internetu.

root@90e362ce8e50:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=61 time=1.232 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=61 time=1.123 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=61 time=1.126 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=61 time=1.133 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=61 time=1.139 ms
^C--- 8.8.8.8 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 1.123/1.151/1.232/0.041 ms

Jak je vidět, internetové připojení funguje i z kontejneru. Pokusili jsme se pinknout ip 8.8.8.8 a dostali jsme odpověď. Nyní se pokusíme nainstalovat nový program.

root@90e362ce8e50:/# mc
bash: mc: command not found
root@90e362ce8e50:/# apt-get install mc
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package mc is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'mc' has no installation candidate
root@90e362ce8e50:/# sudo apt-get install mc
bash: sudo: command not found

Do kontejneru jsme se pokusili nainstalovat midnight commander. Abychom mohli instalovat programy, je nejdříve provést update pomocí sudo apt-get update.

root@90e362ce8e50:/# apt-get update
Get:1 http://security.debian.org stretch/updates InRelease [63.0 kB]
Ign:2 http://deb.debian.org/debian stretch InRelease                                    
Get:3 http://deb.debian.org/debian stretch-updates InRelease [91.0 kB]                  
Get:4 http://deb.debian.org/debian stretch Release [118 kB]   
Get:5 http://deb.debian.org/debian stretch Release.gpg [2434 B]
Get:6 http://security.debian.org stretch/updates/main amd64 Packages [337 kB]
Get:7 http://deb.debian.org/debian stretch-updates/main amd64 Packages [6499 B]
Get:8 http://deb.debian.org/debian stretch/main amd64 Packages [9531 kB]
Fetched 10.1 MB in 2s (4348 kB/s)   
Reading package lists... Done

Update proběhl, takže nyní zkusíme znovu instalaci midnight commanderu.

root@90e362ce8e50:/# sudo apt-get install mc
bash: sudo: command not found
root@90e362ce8e50:/# apt-get install mc
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  bzip2 file libffi6 libgdbm3 libglib2.0-0 libglib2.0-data libgpm2 libicu57 libmagic-mgc libmagic1 libperl5.24 libslang2 libssh2-1 libxml2 mc-data mime-support perl
  perl-modules-5.24 rename sgml-base shared-mime-info unzip xdg-user-dirs xml-core xz-utils
Suggested packages:
  bzip2-doc gpm arj catdvi | texlive-binaries dbview djvulibre-bin genisoimage gv imagemagick libaspell-dev links | w3m | lynx odt2txt poppler-utils python python-boto python-tz
  xpdf | pdf-viewer zip perl-doc libterm-readline-gnu-perl | libterm-readline-perl-perl make sgml-base-doc debhelper
The following NEW packages will be installed:
  bzip2 file libffi6 libgdbm3 libglib2.0-0 libglib2.0-data libgpm2 libicu57 libmagic-mgc libmagic1 libperl5.24 libslang2 libssh2-1 libxml2 mc mc-data mime-support perl
  perl-modules-5.24 rename sgml-base shared-mime-info unzip xdg-user-dirs xml-core xz-utils
0 upgraded, 26 newly installed, 0 to remove and 1 not upgraded.
Need to get 24.6 MB of archives.
After this operation, 109 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://security.debian.org stretch/updates/main amd64 libxml2 amd64 2.9.4+dfsg1-2.2+deb9u2 [920 kB]
Get:2 http://deb.debian.org/debian stretch/main amd64 perl-modules-5.24 all 5.24.1-3+deb9u2 [2724 kB]
...
update-alternatives: using /usr/bin/mcview to provide /usr/bin/view (view) in auto mode
update-alternatives: using /usr/bin/mcedit to provide /usr/bin/editor (editor) in auto mode
Setting up shared-mime-info (1.8-1) ...
Processing triggers for libc-bin (2.24-11+deb9u1) ...
Processing triggers for sgml-base (1.29) ...

Vše v pořádku, tak ho vyzkoušíme

root@90e362ce8e50:/# mc

docker-debian-midnight-commander

Paráda. Nyní si zkusíme, jak vypadá stránka seznam.cz v textové podobě. K tomu potřebujeme program lynx.

root@90e362ce8e50:/# apt-get lynx
E: Invalid operation lynx
root@90e362ce8e50:/# apt-get install lynx
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libbsd0 libgmp10 libgnutls30 libhogweed4 libidn11 libnettle6 libp11-kit0 libtasn1-6 lynx-common
Suggested packages:
  gnutls-bin
The following NEW packages will be installed:
  libbsd0 libgmp10 libgnutls30 libhogweed4 libidn11 libnettle6 libp11-kit0 libtasn1-6 lynx lynx-common
0 upgraded, 10 newly installed, 0 to remove and 1 not upgraded.
Need to get 3566 kB of archives.
After this operation, 10.3 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
...
Setting up libhogweed4:amd64 (3.3-1+b2) ...
Setting up libgnutls30:amd64 (3.5.8-5+deb9u3) ...
Setting up lynx (2.8.9dev11-1) ...
update-alternatives: using /usr/bin/lynx to provide /usr/bin/www-browser (www-browser) in auto mode
Processing triggers for libc-bin (2.24-11+deb9u1) ...

Nainstalováno, jdeme na to.

root@90e362ce8e50:/# lynx www.seznam.cz
Looking up  'www.seznam.cz' first

docker-debian-lynx-seznam

To by pro tento příspěvek stačilo :-).

Napsat komentář