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
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
To by pro tento příspěvek stačilo :-).