DevOps - The Must Know Checklist : 1 - Docker 1 වන කොටස

ja2k17ja

Member
May 10, 2017
185
166
0
තිස්සමහාරාම
DevOps - The Must Know Checklist : 1 - Docker 1 වන කොටස

DevOps - The Must Know Checklist : 1 - Docker 1 වන කොටස

ඔන්න අපි අද ඉදන් DevOps කෙනෙක් වෙන්න අනිව දැන ගත යුතු tools සහ applications ගැන කතාකරන්න පටන් ගන්නව. මේකට අපි The Must Know Checklist කියල කියමු.  මේ ලිස්ට් එකේ මුලින්ම ඉන්නෙ Docker. Docker ගැන දැන ගන්න නම් ඉතින් අපි වාරයකට යන්න ඕන. නමුත් නැව් එන වාරයකට යන්න හොදේ. එතකම් මම පොඩ්ඩක් කියල දෙන්නම මොකක් ද මේ ඩොකර් (Docker) කියල කියන්නෙ. ඔයාල Docker ගැන මුලින්ම ඉගෙන ගන්නෙ මේ ලිපියෙන් නම් ඔයාල Docker කුමක් ද කියල මම තේරුම් ගත් විදියට තේරුම් ගන්න උත්සාහ කරන්න.මම මෙහිදී විස්තර කරන්නෙ Docker එක UNIX / Linux මෙහෙයුම් පද්දති වල ක්‍රියා කරන ආකාරයි.Docker කියන්නෙ Linux වල තියෙන Linux Containers මැනේජ් කරන්න බාවිතා කරන සිස්ටම් එකක්. එනිසා Linux Containers වල දක්නට ලැබෙන මූලික ගුණාංග සියල්ලම වගේ Docker වලත් දක්නට ලැබෙනව. අපිට මේක හොදින් තේරුම් ගන්න පුළුවන් මොනවද මේ Linux Containers කියන්නෙ කියල. අපි කවුරුත් දැකල තියෙනව Containers පෙට්ටි. මේ පෙට්ටි ටික නැවකට පටවල අනතුරුව නැව තමයි අදාල වරයට යන්නෙ. මේ Containers පෙට්ටි වල මුහුදේ ගමන් කිරීමට උපකාර වන කිසිම යාන්ත්‍රික උපාංගයක් නෑ. Containers පෙට්ටි වලට එක වරායක සිට අනිත් වරයට යන්න උදවු කරන්නෙ නැව තමයි. Container පෙට්ටියක් එක නැවකට සම්බන්ද වෙලා තිබුනට එක නැවකට Containers පෙට්ටි ගොඩක් සම්බන්ද වෙලා තියෙනව කියල අපි දන්නව. 

Linux Containers කියනනෙත් අපි දැකල තියෙන Containers පෙට්ටි වගේ දෙයක්. අපි Linux OS කියල හදුන්වනෙ Linux kernel එකයි. මේ kernel එකත් හරියට අර නැවක් වගේ. 

Linux Containers කියල ටෙක්නිකලි කියන්නෙ Operating System ලෙවෙල් එකේ virtualization method එකකට. මේක අපි දන්නා සමාන්‍ය VM වලට වඩා වෙනස්. මෙහිදී Linux Containers බාවිතා  කරගන්නෙ Host OS එකේ තිබෙන kernel එකයි. ඒ කියන්නෙ Host server එකේ තියෙන සියලුම Linux Containers බාවිතා කරන්නෙ කාටත් පොදුවුන Linux kernel එකක්. නමුත් අපි රන් කරන processes එකිනෙකෙන් වෙන් කරල වෙන වෙනම Containers තුල තමයි  රන් කරන්නෙ. මෙහිදී container එකක් තුල තියෙන process එකකට වෙනත් container එකක රන් වෙන processes එකක් සමග ගනු දෙනු කිරීමට නොහැක. මේකට අපි කියන්නෙ isolated environments කියල. මෙන්න මේ ආකාරයට තමයි Linux Containers මගින් virtualization එක වෙන්නෙ.

උදාහරණයක් ලෙස අපි බාවිතා කරන VMWare ගත් විට එහි තිබෙන එක් VM එකකට එක kernel එක බැගින් තිබෙනව(dedicated). ඒ වගේම එකකට එක බැගින්  virtual hardwares සෙට් වෙන වෙනම තියෙනව.
නමුත් Linux Containers කියන ක්‍රමයෙදි තියෙන්නේ host server එකට අයිති real hardware ටික විතරයි. මොකද host ගෙ තියෙන kernel එක හැම Containers එකක්ම use කරන නිසා (මතක තිය ගන්න host ගෙ kernel එක තමා host ට සම්බන්ද කරලා තියෙන සියලුම hardware සමග ගනු දෙනු කරන්නෙ). මෙහිදී එක Linux Container එකක් ගත්විට එයට හැගී යන්නෙ තියෙන hardware ටික ඔක්කොම කෙලින්ම එයට connect කරල තියෙනව කියල.
(Linux Container එකක් kernel එකෙන් මෙහෙම අහන්නෙ නැතුව ඇති  "මට නුඹ විතරක් වුනාට නුඹට ඉන්නෙ මං විතරද....?" කියල)

අපි Docker Engine එක මගින් කරන්නෙ මෙන මේ කියපු Linux Containers ටික මැනේජ් කරන එක. 
අන්තිමට Docker කියන්නෙ Containerization technology එකක් කියල කියන්න පුළුවන්. ඔයාලට මේ ගැන යම් ගැටළුවක් තියෙනවනම් අහන්න හොදද...?

තවද අපි මේ Docker එක solution එකක් විදියට තමයි සලකන්නේ. එහිදී Docker solution එක මේ විදියට කොටස් දෙකකට  වෙන් කරනු ලබනව. 
The Docker engine - මෙමගින් Docker හි මුලික පරමාර්ථයට අදාල කාර්යන ඉටුකරගැනීමට අවශ්‍ය Docker containers පවත්වා ගැනීම සිදු කරනව.
The Docker Hub - මෙමගින් Docker images පවත්වා ගැනීම සිදු කරනව. 
දැනට ඔයාල මේ කොටස් දෙක මේ විදියට සරලව තේරුම් ගන්න.

අපි දැන් කෙලින්ම බලමු කොහොමද මේ Docker බාවිතා කරන්නෙ කියල උදාහරණ සමගින්. සියලු දෙනාගේම පහසුව තකා මම මේ සදහා Ubuntu 16.04 (64bit) බාවිතා කරනවා හොදද.
(ඔයාලට මේ සදහා Google Cloud , Digital Ocean ,AWS වලින් දෙන VM එකක් යොදා ගන්න එක හරි පහසුයි.)
අපිට නොමිලේ access කරන්න පුළුවන් Docker images ගොඩක් public Docker Hub එකේ තියෙනව (https://hub.docker.com/). අපිට පුළුවන් එම Docker images බාවිතා කරලා අපිට අවශ්‍ය විදියට Docker containers සාදාගන්න.



Docker Install කිරීම
මුලින්ම ඔයාල Ubuntu server එකට ලොග් වෙලා මෙන්න මේ කමාන්ඩ්ස් ටික පිළිවෙලට දෙන්න.
ට්‍රයි sudo apt-get update && sudo apt-get upgrade -y
nix@ja2k17ja-docker:~$ sudo apt-get update && sudo apt-get upgrade -y
Hit:1 http://us-central1.gce.archive.ubuntu.com/ubuntu xenial InRelease
Get:2 http://us-central1.gce.archive.ubuntu.com/ubuntu xenial-updates InRelease [102 kB]                    
Get:3 http://us-central1.gce.archive.ubuntu.com/ubuntu xenial-backports InRelease [102 kB]                  
Hit:4 http://archive.canonical.com/ubuntu xenial InRelease
---
---
---
nix@ja2k17ja-docker:~$
ට්‍රයි curl -sSL https://get.docker.com/ | sudo sh
nix@ja2k17ja-docker:~$ curl -sSL https://get.docker.com/ | sudo sh
+ sh -c apt-get update
Hit:1 http://us-central1.gce.archive.ubuntu.com/ubuntu xenial InRelease
Hit:2 http://us-central1.gce.archive.ubuntu.com/ubuntu xenial-updates InRelease                             
Hit:3 http://us-central1.gce.archive.ubuntu.com/ubuntu xenial-backports InRelease                           
Hit:4 http://archive.canonical.com/ubuntu xenial InRelease                                                                            
Get:5 http://security.ubuntu.com/ubuntu xenial-security InRelease [102 kB]
Fetched 102 kB in 0s (179 kB/s)                             
Reading package lists... Done
+ sh -c apt-get install -y -q apt-transport-https ca-certificates curl software-properties-common
Reading package lists...
----
----
----
If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:
  sudo usermod -aG docker your-user
Remember that you will have to log out and back in for this to take effect!
WARNING: Adding a user to the "docker" group will grant the ability to run
         containers which can be used to obtain root privileges on the
         docker host.
         Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
         for more information.
nix@ja2k17ja-docker:~$
අපි දැන් Docker install කරලා ඉවරයි.  වැඩේ අවුලක් නැතුව කරගන්න පුළුවන් නම් ඔයාලට ඉහල පෙන්නලා තියෙනව වගේ රිසල්ට් එකක් ලැබෙනව. අපිට දැන් තියෙන්නෙ අපි දැනට ලොග් වෙලා ඉන්න user ව (මගේ නමේ nix කියන user) docker කියන group එකකේ මෙම්බර් කෙනෙක් කරන්න. එතකොට අපිට පුළුවන් docker කියන client application එක root පර්මිෂන් නොමැතිව රන් කරන්න. අපි docker group එකේ මෙම්බර් කෙනෙක් නොවුනොත් අපිට නිතරම sudo මගින් root පර්මිෂන් අරගෙන තමයි කමාන්ඩ්ස් රන් කරන්න වෙන්නේ. එක මර ඇණයක්. දැන් අපි nix ව docker group එකේ member කෙනෙක් කරමු. (nix කියන්නෙ දැනට මම ලොග් වෙලා ඉන්න user එකවුන්ට් එක) මම මේ සදහා sudo usermod -aG docker nix 
කියන කමාන්ඩ් එක යොදා ගන්නව.
මෙන්න මේ කමාන්ඩ් එකෙන් පුළුවන් දැනට අපි ලෝග්වෙලා ඉන්න user ව කෙලින්ම docker group එකට ඇතුලත් කරන්න. මෙහිදී  user name එක සදහන් නොකරයි. ඔයාල මේ විදියට ට්‍රයි කරන්න.
ට්‍රයි sudo usermod -aG docker `whoami`
nix@ja2k17ja-docker:~$ sudo usermod -aG docker `whoami`
nix@ja2k17ja-docker:~$
දැන් අපි shell එකෙන් logout වෙලා නැවත ලොග් වෙලා බලමු අපිට් docker කමාන්ඩ්ස් බාවිතා කරන්න permission තියෙනවද කියල.
ට්‍රයි exit 
nix@ja2k17ja-docker:~$ exit
logout
Connection to 104.155.111.111 closed.
නැවත ලොග් වෙලා මේ කමාන්ඩ් එක දීල චෙක් කරගනිමු.
ට්‍රයි docker -v
nix@ja2k17ja-docker:~$ docker -v
Docker version 17.06.0-ce, build 02c1d87
nix@ja2k17ja-docker:~$
ට්‍රයි docker info
nix@ja2k17ja-docker:~$ docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 17.06.0-ce
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 0
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins: 
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: cfb82a876ecc11b5ca0977d1733adbe58599088a
runc version: 2d41c047c83e09a6d61d464906feb2a2f3c52aa4
init version: 949e6fa
Security Options:
 apparmor
 seccomp
  Profile: default
Kernel Version: 4.8.0-56-generic
Operating System: Ubuntu 16.04.2 LTS
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 14.69GiB
Name: ja2k17ja-docker
ID: 7S22:2M57:RMYE:GTD4:2DY7:OV4I:FDHC:LP44:YSAM:62EB:LXUO:DWGW
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
WARNING: No swap limit support
nix@ja2k17ja-docker:~$
 
හරි අපිට docker කමාන්ඩ්ස් use කරන්න පර්මිෂන් තියෙනව. 
අපි ඊළගට බලමු Docker image එකක් බාවිතා කරල Docker container එකක් හදාගන්න විදිය. මෙය ඉතාමත්ම පහසු ක්‍රියාවලියක්. ඔයාලට හරිම පහසුවෙන්ම තේරුම් ගන්න පුළුවන්.
 
Last edited:

ja2k17ja

Member
May 10, 2017
185
166
0
තිස්සමහාරාම
Docker image එකකින් Docker container එකක් සාදා ගනිමු.


මම ඔයාලට මුලින්ම කියල දෙන්නම. කලින් මම සදහන් කරපු Public Docker Hub එකේ තියෙන Docker images ටික search කරන ආකාරය. අපි මේ සදහා docker search කියන කමාන්ඩ් එක යොදාගනී. කරන විදිය මේ උදාහරණය මගින් පහසුවෙන්න පැහැදිලි කරගන්න පුළුවන්.
අපි බලමු Docker Hub එකේ Ubuntu කියල Docker image එකක් තියෙනවා ද කියල.
ට්‍රයි docker search ubuntu
nix@ja2k17ja-docker:~$ docker search ubuntu
NAME                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
ubuntu                                       Ubuntu is a Debian-based Linux operating s...   6186      [OK]       
rastasheep/ubuntu-sshd                       Dockerized SSH service, built on top of of...   91                   [OK]
ubuntu-upstart                               Upstart is an event-based replacement for ...   74        [OK]       
ubuntu-debootstrap                           debootstrap --variant=minbase --components...   30        [OK]       
torusware/speedus-ubuntu                     Always updated official Ubuntu docker imag...   28                   [OK]
nuagebec/ubuntu                              Simple always updated Ubuntu docker images...   22                   [OK]
nickistre/ubuntu-lamp                        LAMP server on Ubuntu                           20                   [OK]
solita/ubuntu-systemd                        Ubuntu + systemd                                8                    [OK]
nimmis/ubuntu                                This is a docker images different LTS vers...   7                    [OK]
darksheer/ubuntu                             Base Ubuntu Image -- Updated hourly             3                    [OK]
vcatechnology/ubuntu                         A Ubuntu image that is updated daily            1                    [OK]
jordi/ubuntu                                 Ubuntu Base Image                               1                    [OK]
webhippie/ubuntu                             Docker images for ubuntu                        1                    [OK]
admiringworm/ubuntu                          Base ubuntu images based on the official u...   1                    [OK]
forumi0721ubuntuaarch64/ubuntu-aarch64-dev   ubuntu-aarch64-dev                              0                    [OK]
forumi0721ubuntuarmhf/ubuntu-armhf-dev       ubuntu-armhf-dev                                0                    [OK]
labengine/ubuntu                             Images base ubuntu                              0                    [OK]
smartentry/ubuntu                            ubuntu with smartentry                          0                    [OK]
forumi0721ubuntux64/ubuntu-x64-dev-armbian   ubuntu-x64-dev-armbian                          0                    [OK]
forumi0721ubuntux64/ubuntu-x64-dev-android   ubuntu-x64-dev-android                          0                    [OK]
konstruktoid/ubuntu                          Ubuntu base image                               0                    [OK]
datenbetrieb/ubuntu                          custom flavor of the official ubuntu base ...   0                    [OK]                                                       
teamrock/ubuntu                              TeamRock's Ubuntu image configured with AW...   0                    [OK]                                                       
lynxtp/ubuntu                                https://github.com/lynxtp/docker-ubuntu         0                    [OK]                                                       
forumi0721ubuntux64/ubuntu-x64-dev           ubuntu-x64-dev                                  0                    [OK]                                                       
nix@ja2k17ja-docker:~$
රිසල්ට් එක දැක්ක ගමන් බුදු අම්මෝ කියල කියවෙන තරමට Ubuntu images තියෙනව. අපි මේකෙන් "OFFICIAL" කියල තියෙන කොලම් එකේ "[OK]"  තියෙන එකක් මුලින්ම ට්‍රයි කරලා බලමු. 
මෙහිදී ඔයාල "NAME" කියන කෝලම් එකට පොඩ්ඩක් අවධානය යොමු කරන්න. අපි මේ Docker image එකේ NAME එක බාවිතා කරල මුලින්ම ඒ ඉමගේ එක අපේ host සිස්ටම් එකට download කරගන්න ඕන. අපි මේකට Docker බෂාවෙන් කියන්නේ pull කරනව කියල. pull කියන්නෙ මොකක්ද කියල අපි දන්නව නේ.
ට්‍රයි docker pull ubuntu
nix@ja2k17ja-docker:~$ docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
75c416ea735c: Pull complete 
c6ff40b6d658: Pull complete 
a7050fc1f338: Pull complete 
f0ffb5cf6ba9: Pull complete 
be232718519c: Pull complete 
Digest: sha256:a0ee7647e24c8494f1cf6b94f1a3cd127f423268293c25d924fbe18fd82db5a4
Status: Downloaded newer image for ubuntu:latest
nix@ja2k17ja-docker:~$
මේ විදියට image එක download වුනාට පස්සෙ මෙන්න මේ සබ් කමාන්ඩ් එක බාවිතා කරල අපිට ඒක චෙක් කරගන්න පුළුවන්.
ට්‍රයි docker images
nix@ja2k17ja-docker:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              d355ed3537e9        8 days ago          119MB
nix@ja2k17ja-docker:~$
අපි දැන් තවත් image එකක් download කරන්න ට්‍රයි කරමු. මෙවර NAME එකට මේ වගේ "darksheer/ubuntu" පෙන්නපු Ubuntu image එක download කරමු.
ට්‍රයි docker pull darksheer/ubuntu
nix@ja2k17ja-docker:~$ docker pull darksheer/ubuntu
Using default tag: latest
latest: Pulling from darksheer/ubuntu
75c416ea735c: Already exists 
c6ff40b6d658: Already exists 
a7050fc1f338: Already exists 
f0ffb5cf6ba9: Already exists 
be232718519c: Already exists 
a1883cc836ff: Pull complete 
Digest: sha256:8b79301e241e0c2c31238235bd046825a140f6af0067d1a950fd19edf0756991
Status: Downloaded newer image for darksheer/ubuntu:latest
nix@ja2k17ja-docker:~$
ඔයාල හොදට මතක තියගන්න අපිට Docker image එකක් download කන්න ඕන විට අපි docker pull සබ් කමාන්ඩ් එක සමග NAME එකේ පෙන්වන සම්පුර්ණ නම යෙදිය යුතුයි.
නැවතත් ට්‍රයි docker images
nix@ja2k17ja-docker:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
darksheer/ubuntu    latest              40425f33b2d2        21 minutes ago      125MB
ubuntu              latest              d355ed3537e9        8 days ago          119MB
nix@ja2k17ja-docker:~$
තව පොඩි දෙයක් මතක තියාගන්න. අපිට docker images කියන සබ් කමාන්ඩ් එකෙන් ලැබෙන රිසල්ට් එකේ IMAGE ID කියල එකක් තියෙනව. මේ IMAGE ID කියන්නේ unique ID එකක් මේක 64  hexadecimal digits long නම්බර් එකක්. නුඹත්  docker images කමාන්ඩ් එකෙන් අපිට දෙන්නේ 12 hexadecimal digits විතරයි. අපිට ඒ හොදටම ප්‍රමාණවත්. ඔයාලට ඕන නම් මේ කමාන්ඩ් එකට --no-trunc දීල 64 ම බලාගන්න පුළුවන්.
ට්‍රයි docker images --no-trunc
nix@ja2k17ja-docker:~$ docker images --no-trunc
REPOSITORY          TAG                 IMAGE ID                                                                  CREATED             SIZE
darksheer/ubuntu    latest              sha256:40425f33b2d2b1ac5c3e441f5784958bd6edfee26567224b106c80558f9c8942   30 minutes ago      125MB
ubuntu              latest              sha256:d355ed3537e94e76389fd78b77241eeba58a11b8faa501594bc82d723eb1c7f2   8 days ago          119MB
nix@ja2k17ja-docker:~$
අපිට පුළුවන් අනවශ්‍ය Docker image එකක් මේ විදියට delete කරල දන්න. අපි ඒ සදහා docker rmi කියන සබ් කමාන්ඩ් එක බාවිතා කරනව.
ට්‍රයි docker rmi darksheer/ubuntu
nix@ja2k17ja-docker:~$ docker rmi darksheer/ubuntu
Untagged: darksheer/ubuntu:latest
Untagged: darksheer/ubuntu@sha256:8b79301e241e0c2c31238235bd046825a140f6af0067d1a950fd19edf0756991
Deleted: sha256:40425f33b2d2b1ac5c3e441f5784958bd6edfee26567224b106c80558f9c8942
Deleted: sha256:aefbfe394fe32d23faad85f6791824c90110415ad9697e25acad68702d9eb924
nix@ja2k17ja-docker:~$
දැන් චෙක් කරල බලමු.
ට්‍රයි docker images
nix@ja2k17ja-docker:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              d355ed3537e9        8 days ago          119MB
nix@ja2k17ja-docker:~$
Docker image "darksheer/ubuntu" එක ඩිලීට් වෙලා.
දැන් බලමු අපි මේ download කරගත් image එකකින් කොහොමද කියල Docker container එකක් හදන්නෙ. අපිට ඒ සදහා docker run කියන සබ් කමාන්ඩ් එක යොදාගන්නව. අපි docker run සබ් කමාන්ඩ් එකට i හා t කියන flags දෙකත් එකතු කරනවා.
මෙහි;
i කියන flag  එක මගින් අපිට් container එකේ STDIN එක open කරල තියගන්න පුළුවන්. අපිට එමගින් container එකේ shell එකකට කමන්ඩ්ස් දෙන්නත් පුළුවන්.
t කියන flag  එක මගින් Docker ට කියනව container එකට PTY (pseudo-tty) එකක් හදන්න කියල. අපිට එමගින් STDOUT අපේ host ගෙ terminal screen එකට ගන්න පුළුවන්.
මෙම flags දෙක දීමන් අපිට් interactive shell එකක් අපේ අලුත් Docker container එකට ගන්න පුළුවන්.
ට්‍රයි docker run -it ubuntu bash
nix@ja2k17ja-docker:~$ docker run -it ubuntu bash
root@9e91808e165c:/#
අපි දැන් පොඩ්ඩක් docker run -it ubuntu bash කියන කමාන්ඩ් එක ගැන කථා කරමු. මෙහි i හා t කියන flags දෙක ගැන ඔයාල දැනටමත් දන්නව. මෙහි ubuntu කියන්න අපි බාවිතාකරන Docker image එකයි. අන්තිමට තියෙන bash කියන එකෙන් කියන්නෙ Docker container එක හැදිල start වුනාට පස්සේ මුලින්ම රන් වෙන්න ඕන කමාන්ඩ් එක. 
අපිට bash කමාන්ඩ් එකෙන් bash shell එකක් ගන්න පුළුවන්. ඉහත උදාහරණයේ "root@9e91808e165c:/#" කොටස බලන්න. දැන් අපි ඉන්නේ අපි හදපු Ubuntu Docker container එකේ bash shell එකේ.අපිට exit කමාන්ඩ් එක දීල shell එකෙන් ඉවත් වෙන්න පුළුවන්.
ට්‍රයි exit 
root@9e91808e165c:/# exit
exit
nix@ja2k17ja-docker:~$
දැන් අපි නැවතත් ඉන්නේ host server එකේ කලින් හිටපු shell එකේ (docker run -it ubuntu bash කියන කමාන්ඩ් එක දීමට යොදාගත් shell එකේ).
දැන් අපි අපේ 1වන Docker container එක හදල අවසන්. අපිට් මේ "docker ps -a" කමාන්ඩ් එකෙන් අපි හදපු Docker container ටික බලාගන්න පුළුවන්. අපි "docker ps" කියන සබ් කමාන්ඩ් එක දුන්නොත් අපිට ලැබෙන්නෙ දැනට රන් වෙමින් පවතින Docker containers විතරයි.
ට්‍රයි docker ps -a
nix@ja2k17ja-docker:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
9e91808e165c        ubuntu              "bash"              About an hour ago   Exited (127) 19 minutes ago                       infallible_knuth
nix@ja2k17ja-docker:~$
ට්‍රයි docker ps
nix@ja2k17ja-docker:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
nix@ja2k17ja-docker:~$
රිසල්ට් එක හිස්. දැක්ක නේද "docker ps" දුන්නවිට STATUS එක Exited තියෙන ඒවා පෙන්නන්නේ නෑ.
දැන් මම මේ රිසල්ට් එකේ තියෙන දේවල් ටික මොනවද කියල, කියලා දෙන්නම්.
CONTAINER ID - මේකත් අර කලින් කියපු IMAGE ID එක වගේ 64  hexadecimal digits long unique නම්බර් එකක්. නොමලි පෙන්නන්නෙ 12 hexadecimal digits විතරයි, කලින් වගේම --no-trunc දීල 64 ම බලාගන්න පුළුවන්.IMAGE - මගින් නිරුපනය කරන්නේ Docker container  එක හදන්න යොදාගත් image එකේ නම. අපේ නිදසුනෙදී අපි යොදාගත්තෙ ubuntu කියන image එකනේ.COMMAND - මෙමගින් Docker container එක හදන්න විට අපි දීපු කමාන්ඩ් එක පෙන්වනව. මතකයි නේද අපි bash කියල අන්තිමට දුන්න.CREATED - Docker containe එක හදපු වෙලාව පෙන්නුම් කරයි.STATUS - මෙමගින් අපිට Docker container එකේ current status එක පෙන්නුම් කරනව. දැනට රන් වන ඒවා UP කියලද , නතරවුණ ඒවා Exited කියලද පෙන්නුම් කරයි.
PORTS - මේකෙන් පෙනුම් කරන්නෙ අපි කුමන හෝ network port එකක් Docker container එකට assigned කරල තියෙනවද කියල. මම ඔයලට මේක තව ටිකකින් උදාහරණයකින් ම පෙන්නුම් කරන්නම්.NAMES - Docker engine එක අලුතෙන් Docker container එකක් සාදන විට අපිට කියවන්න පුළුවන් නමක් එකට දෙනව (random). අපිට මේ NAMES එක ඉදිරියේදී හුගක් වැදගත් වෙනව. අපි Docker container එකක් හදන විට අපි කැමති නමක් container එකට දෙන්නත් පුළුවන්. අපිට ඒ සදහා --name ඔප්ෂන් එක docker run කියන සබ් කමාන්ඩ් එක සමග යොදා ගනී.
අපි දැන් කැමති නමක් දීල Docker container එකක් හදල බලමු.
ට්‍රයි docker run -it --name my_ubuntu ubuntu හෝ docker run -it --name=my_ubuntu ubuntu
nix@ja2k17ja-docker:~$ docker run -it --name my_ubuntu ubuntu
root@b32ea6375ee9:/#
ට්‍රයි exit
root@b32ea6375ee9:/# exit
exit
nix@ja2k17ja-docker:~$
දැන් අපි බලමු my_ubuntu කියල Docker container එකක් තියෙනවද කියල.
ට්‍රයි docker ps -a
nix@ja2k17ja-docker:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                           PORTS               NAMES
b32ea6375ee9        ubuntu              "/bin/bash"         13 seconds ago      Exited (0) 10 seconds ago                            my_ubuntu
9e91808e165c        ubuntu              "bash"              About an hour ago   Exited (127) About an hour ago                       infallible_knuth
nix@ja2k17ja-docker:~$
දැන් අපි බලමු Docker container එකක් rename කරන විදිය.
ට්‍රයි docker rename infallible_knuth my_1st_ubuntu
nix@ja2k17ja-docker:~$ docker rename infallible_knuth my_1st_ubuntu
nix@ja2k17ja-docker:~$
මෙහි infallible_knuth කියන්නෙ මුලින් තිබුන නම සහ  my_1st_ubuntu කියන්නෙ අලුත් නම.
ට්‍රයි docker ps -a
nix@ja2k17ja-docker:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                           PORTS               NAMES
b32ea6375ee9        ubuntu              "/bin/bash"         5 minutes ago       Exited (0) 5 minutes ago                             my_ubuntu
9e91808e165c        ubuntu              "bash"              About an hour ago   Exited (127) About an hour ago                       my_1st_ubuntu
nix@ja2k17ja-docker:~$
දැන් බලමු කොහොමද අපි හදපු Docker container එකක් start කරන්නෙ කියල. හරි සිම්පල්.
ට්‍රයි docker start my_ubuntu
nix@ja2k17ja-docker:~$ docker start my_ubuntu
my_ubuntu
nix@ja2k17ja-docker:~$
 
අපි මෙහිදී docker start සබ් කමාන්ඩ් එක සමග අපිට start කරන්න ඕන Docker container එකේ නම (my_ubuntu) යොදාගන්නවා .
අපිට docker ps -a කමාන්ඩ් එකෙන් my_ubuntu කියන එක දැන් රන් වෙමින් පවතිනවද කියල චෙක් කරගන්න පුළුවන්.
ට්‍රයි docker ps -a
nix@ja2k17ja-docker:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                           PORTS               NAMES
b32ea6375ee9        ubuntu              "/bin/bash"         9 minutes ago       Up 5 seconds                                         my_ubuntu
9e91808e165c        ubuntu              "bash"              2 hours ago         Exited (127) About an hour ago                       my_1st_ubuntu
nix@ja2k17ja-docker:~$
මෙන මෙහෙමයි අපි start කරපු Docker container එකක් stop කරන්නේ.
ට්‍රයි docker stop my_ubuntu
nix@ja2k17ja-docker:~$ docker stop my_ubuntu
my_ubuntu
nix@ja2k17ja-docker:~$
දැන් අපි docker ps -a පාරක් දීල චෙක් කරගමු.
ට්‍රයි docker ps -a
nix@ja2k17ja-docker:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                           PORTS               NAMES
b32ea6375ee9        ubuntu              "/bin/bash"         9 minutes ago       Exited (0) 3 seconds ago                             my_ubuntu
9e91808e165c        ubuntu              "bash"              2 hours ago         Exited (127) About an hour ago                       my_1st_ubuntu
nix@ja2k17ja-docker:~$
දැන් මම ඔයාලට හදල තියෙන  Docker container එකක් delete කරන විදිය පෙන්වන්නම්.
ට්‍රයි docker rm my_1st_ubuntu
nix@ja2k17ja-docker:~$ docker rm my_1st_ubuntu
my_1st_ubuntu
nix@ja2k17ja-docker:~$
දැන් බලමු my_1st_ubuntu එක deleted ද කියල.
ට්‍රයි docker ps -a
nix@ja2k17ja-docker:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
b32ea6375ee9        ubuntu              "/bin/bash"         28 minutes ago      Exited (0) 19 minutes ago                       my_ubuntu
nix@ja2k17ja-docker:~$
අපිට ලැබුන රිසල්ට් එකේ my_1st_ubuntu කියල Docker container එකක් නෑ. එකියනේ වැඩේ හරි කියල තමයි.
මම දැන් ඔයාලට කියල දෙන්නම් කොහොමද අපි රන් වන (UP ) Docker container එකක් අපිට අවශ්‍ය විටක දී pause හා unpause කරගන්නෙ කියල.
මුලින්ම Docker container එකක් start කරල ඊළගට pause කරන විදිය ට්‍රයි කරමු
ට්‍රයි docker start my_ubuntu
nix@ja2k17ja-docker:~$ docker start my_ubuntu
my_ubuntu
nix@ja2k17ja-docker:~$
දැන් pause කරමු 
ට්‍රයි docker pause my_ubuntu
nix@ja2k17ja-docker:~$ docker pause my_ubuntu
my_ubuntu
nix@ja2k17ja-docker:~$
චෙක් කරමු docker ps -a මගින් 
nix@ja2k17ja-docker:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
b32ea6375ee9        ubuntu              "/bin/bash"         38 minutes ago      Up 28 seconds (Paused)                       my_ubuntu
nix@ja2k17ja-docker:~$
දැන් unpause කරමුට්‍රයි docker unpause my_ubuntu
nix@ja2k17ja-docker:~$ docker unpause my_ubuntu
my_ubuntu
nix@ja2k17ja-docker:~$
docker ps -a මගින් චෙක් කරමු ට්‍රයි docker ps -a
nix@ja2k17ja-docker:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
b32ea6375ee9        ubuntu              "/bin/bash"         45 minutes ago      Up 7 minutes                            my_ubuntu
nix@ja2k17ja-docker:~$
දැන් අපි Docker වල සැහෙන සෙල්ලම් ගොඩක් ඉගෙන ගෙන ඉවරයි.
 
Last edited:

ja2k17ja

Member
May 10, 2017
185
166
0
තිස්සමහාරාම
දැන් මම ඔයාලට කියල දෙන්නෙ අද දවසේ හුගක්ම වැදගත් දේවල් වලින් පළමු එක. මේක වැදගත් වෙන්නෙ අපිට Docker container තුල යම් කිසි ක්‍රියාවක් කිරීමට. උදාහරණ ලෙස shell එක බාවිත කරමින් Docker container තුල applications install කිරීමට shell script රන් කිරීමට, web server එකක් setup කරන්න. තව මෙකී නොකී දේවල් සදහා.....
මම දැන් ඔයාලට කියල දෙන්නෙ අපි කොහොමද රන් වෙන (UP) Docker container එකක් තුලට ලොග් වෙන්නෙ කියල. අපිට ඒ සදහා SSH ඕන නෑ. මෙන මේ කමාන්ඩ් එකෙන් කෙලින්ම ලොග් වෙන්න පුළුවන්.
ට්‍රයි docker exec -it my_ubuntu bash
nix@ja2k17ja-docker:~$ docker exec -it my_ubuntu bash
root@b32ea6375ee9:/#
දැක්ක නේද දැන් අපිට Docker container එකේ shell එක ලැබිල තියෙන්නෙ.
අපි දැන් shell එකේ දන්න කමන්ඩ්ස් ටිකක් නිකමට ගහල බලමු. අන්තිමට exit ගහල shell එකෙන් exit වෙමු.
මේ බලන්න මම කරපු දේවල්.
root@b32ea6375ee9:/# ls -l
total 64
drwxr-xr-x   2 root root 4096 Jun 19 20:24 bin
drwxr-xr-x   2 root root 4096 Apr 12  2016 boot
drwxr-xr-x   5 root root  360 Jun 29 11:14 dev
drwxr-xr-x  45 root root 4096 Jun 29 10:35 etc
drwxr-xr-x   2 root root 4096 Apr 12  2016 home
drwxr-xr-x   8 root root 4096 Sep 13  2015 lib
drwxr-xr-x   2 root root 4096 Jun 19 20:23 lib64
drwxr-xr-x   2 root root 4096 Jun 19 20:23 media
drwxr-xr-x   2 root root 4096 Jun 19 20:23 mnt
drwxr-xr-x   2 root root 4096 Jun 19 20:23 opt
dr-xr-xr-x 143 root root    0 Jun 29 11:13 proc
drwx------   2 root root 4096 Jun 29 10:35 root
drwxr-xr-x   6 root root 4096 Jun 20 23:19 run
drwxr-xr-x   2 root root 4096 Jun 20 23:18 sbin
drwxr-xr-x   2 root root 4096 Jun 19 20:23 srv
dr-xr-xr-x  13 root root    0 Jun 29 11:13 sys
drwxrwxrwt   2 root root 4096 Jun 19 20:24 tmp
drwxr-xr-x  11 root root 4096 Jun 20 23:18 usr
drwxr-xr-x  13 root root 4096 Jun 20 23:18 var
root@b32ea6375ee9:/# pwd
/
root@b32ea6375ee9:/# ps -lf
F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root        21     0  0  80   0 -  5072 wait   11:36 pts/1    00:00:00 bash
0 R root        31    21  0  80   0 -  9118 -      11:39 pts/1    00:00:00 ps -lf
root@b32ea6375ee9:/# cat /etc/issue
Ubuntu 16.04.2 LTS \n \l
root@b32ea6375ee9:/# exit
exit
nix@ja2k17ja-docker:~$
අපි shell එකෙන් exit වුනාට Docker container එක තාමත් රන් වෙනව.
මේ බලන්න.
nix@ja2k17ja-docker:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
b32ea6375ee9        ubuntu              "/bin/bash"         About an hour ago   Up 28 minutes                           my_ubuntu
nix@ja2k17ja-docker:~$
අපි දැන් මේ my_ubuntu කියන  Docker container එක stop කරමු.
ට්‍රයි docker stop my_ubuntu
nix@ja2k17ja-docker:~$ docker stop my_ubuntu
my_ubuntu
nix@ja2k17ja-docker:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
b32ea6375ee9        ubuntu              "/bin/bash"         About an hour ago   Exited (0) 4 seconds ago                       my_ubuntu
nix@ja2k17ja-docker:~$
ඔන්න මම දැන් ඔයලට කියල දෙන්නෙ අද දවසේ මෙන්ම හැම දාටම වැදගත් වන දෙයක්. 
අපි Docker container එක සැදූ විට එහි සිට බාහිර ලෝකයට network එක හරහා පිවිසිය හැකි නමුත්. බාහිර ලෝකයට බෑ network එක හරහා Docker container එක තුලට පිවීසෙන්න.
උදාහරණය ලෙස කියනවානම්. අපි වෙබ් server container එකක් හැදුව කියමු. නමුත් අපිට බෑ container තුල  තිබෙන වෙබ් සයිට් එකක් access කරන්න. අපිට වෙබ් සයිට් එක access කරන්න පුළුවන් වෙන්නෙ Docker container තුල ඇති web server එක රන් වන TCP port එක (port 80) host  server එක තුලින් access කරන්න හැකිනම් පමණි.
අපි Docker container එකේ ඇතුලෙ තියෙන port එකක් host server එකේ host interface එකකට bind කිරීමෙන් මෙම ගැටලුව විසදා ගන්න පුළුවන්. 
අපි ඒ විදියට bind කර ඇතිවිට, මම ඔයාලට මුලින් docker ps -a ගැන විස්තර කරන කොට කියපු PORTS කියන කොලම් එකේ එය පෙන්නුම් කරනව. 
අපි host interface එකේ IP එක සහ මේ විදියට bind කරපු port නම්බර් එක බාවිතා කිරීමෙන් Docker container තුල ඇති ඇති අදාල port එක මගින් සපයන සේවාවන් ලබා ගන්න පුළුවන්.
දැන් මම කියල දෙන්නම් කොහොමද මේ වැඩේ කරන්නේ කියල.
අපිට මේ සදහා අලුතින් Docker container එකක් සාදන්න වෙනවා. port binding එකත් ඒ ගමනම කරන්න ඕන.
ට්‍රයි docker run -it -p 80:80 --name=my_nginx_ubuntu ubuntu
nix@ja2k17ja-docker:~$ docker run -it -p 80:80 --name=my_nginx_ubuntu ubuntu
root@2d906bdbc19d:/# 
දැන් අපිට bash  shell එක තියෙන නිසා. අපි මේවිදියට web server එකක් install කරමු.
ට්‍රයි apt-get update
root@2d906bdbc19d:/# apt-get update
Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [102 kB]
Get:2 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB]
Get:3 http://security.ubuntu.com/ubuntu xenial-security/universe Sources [39.9 kB]
Get:4 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [102 kB]          
Get:5 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages [371 kB]
Get:6 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [102 kB]
Get:7 http://archive.ubuntu.com/ubuntu xenial/universe Sources [9802 kB]         
Get:8 http://security.ubuntu.com/ubuntu xenial-security/restricted amd64 Packages [12.8 kB]
Get:9 http://security.ubuntu.com/ubuntu xenial-security/universe amd64 Packages [173 kB]
Get:10 http://security.ubuntu.com/ubuntu xenial-security/multiverse amd64 Packages [2937 B]
Get:11 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages [1558 kB]
Get:12 http://archive.ubuntu.com/ubuntu xenial/restricted amd64 Packages [14.1 kB]
Get:13 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages [9827 kB]
Get:14 http://archive.ubuntu.com/ubuntu xenial/multiverse amd64 Packages [176 kB]
Get:15 http://archive.ubuntu.com/ubuntu xenial-updates/universe Sources [203 kB]
Get:16 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages [727 kB]
Get:17 http://archive.ubuntu.com/ubuntu xenial-updates/restricted amd64 Packages [13.2 kB]
Get:18 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages [620 kB]
Get:19 http://archive.ubuntu.com/ubuntu xenial-updates/multiverse amd64 Packages [9808 B]
Get:20 http://archive.ubuntu.com/ubuntu xenial-backports/main amd64 Packages [4929 B]
Get:21 http://archive.ubuntu.com/ubuntu xenial-backports/universe amd64 Packages [6241 B]
Fetched 24.1 MB in 3s (7304 kB/s)                         
Reading package lists... Done
ට්‍රයි apt-get install nginx -y 
root@2d906bdbc19d:/# apt-get install nginx -y
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  fontconfig-config fonts-dejavu-core geoip-database libexpat1 libfontconfig1 libfreetype6 libgd3 libgeoip1 libicu55 libjbig0 libjpeg-turbo8 libjpeg8 libpng12-0
  libssl1.0.0 libtiff5 libvpx3 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxml2 libxpm4 libxslt1.1 nginx-common nginx-core sgml-base ucf xml-core
Suggested packages:
---
---
---
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
Setting up nginx (1.10.0-0ubuntu0.16.04.4) ...
Processing triggers for libc-bin (2.23-0ubuntu9) ...
Processing triggers for sgml-base (1.26+nmu4ubuntu1) ...
Processing triggers for systemd (229-4ubuntu17) ...
root@2d906bdbc19d:/#
ට්‍රයි apt-get install net-tools
root@2d906bdbc19d:/# apt-get install net-tools
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  net-tools
0 upgraded, 1 newly installed, 0 to remove and 8 not upgraded.
Need to get 175 kB of archives.
After this operation, 725 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 net-tools amd64 1.60-26ubuntu1 [175 kB]
Fetched 175 kB in 0s (347 kB/s)   
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package net-tools.
(Reading database ... 5450 files and directories currently installed.)
Preparing to unpack .../net-tools_1.60-26ubuntu1_amd64.deb ...
Unpacking net-tools (1.60-26ubuntu1) ...
Setting up net-tools (1.60-26ubuntu1) ...
root@2d906bdbc19d:/#
ට්‍රයි service nginx restart
root@2d906bdbc19d:/# service nginx restart
 * Restarting nginx nginx                                                                                                                                             [ OK ] 
root@2d906bdbc19d:/#
ට්‍රයි netstat -apnut | grep nginx
root@2d906bdbc19d:/# netstat -apnut | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      684/nginx       
tcp6       0      0 :::80                   :::*                    LISTEN      684/nginx       
root@2d906bdbc19d:/#
ට්‍රයි exit
root@2d906bdbc19d:/# exit
exit
nix@ja2k17ja-docker:~$
ට්‍රයි docker start my_nginx_ubuntu
nix@ja2k17ja-docker:~$ docker start my_nginx_ubuntu
my_nginx_ubuntu
nix@ja2k17ja-docker:~$
ට්‍රයි docker ps -a --filter="name=my_nginx_ubuntu" 
nix@ja2k17ja-docker:~$ docker ps -a --filter="name=my_nginx_ubuntu" 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                NAMES
2d906bdbc19d        ubuntu              "/bin/bash"         15 minutes ago      Up 5 minutes        0.0.0.0:80->80/tcp   my_nginx_ubuntu
nix@ja2k17ja-docker:~$
ඔයාලට පේනව නේද PORTS කොලම් එකේ තියෙන දේවල් ටික.
දැන් අපි my_nginx_ubuntu කියන Docker container එකට ලොග් වෙලා nginx වෙබ් server එක start කරල shell එකෙන් exit වෙමු.
ට්‍රයි docker exec -it my_nginx_ubuntu bash
nix@ja2k17ja-docker:~$ docker exec -it my_nginx_ubuntu bash
root@2d906bdbc19d:/#
ට්‍රයි service nginx start
root@2d906bdbc19d:/# service nginx start
 * Starting nginx nginx  
root@2d906bdbc19d:/#                                                                                                                                             [ OK ] 
ට්‍රයි netstat -apnut | grep nginx
root@2d906bdbc19d:/# netstat -apnut | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      163/nginx       
tcp6       0      0 :::80                   :::*                    LISTEN      163/nginx  
root@2d906bdbc19d:/#     
ට්‍රයි exit
root@2d906bdbc19d:/# exit
exit
nix@ja2k17ja-docker:~$
දැන් අපි අපේ host server එකේ bash  shell එකේ ඉන්නෙ. අපි බලමු අපේ web server එක වැඩද කියල. අපිට මේ සදහා telnet යොදාගන්න පුළුවන් ඊට අමතරව lynx කියන command line web browser එකත් යොදාගන්න පුළුවන්. මම ඒ දෙකෙන්ම වැඩේ කරලා පෙන්වන්නම්.
මුලින් telenet 
ට්‍රයි telnet 127.0.0.1 80
nix@ja2k17ja-docker:~$ telnet 127.0.0.1 80
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
^]
telnet> quit
Connection closed.
nix@ja2k17ja-docker:~$ 
දැක්ක නේද 
දෙවනුව lynx 
ට්‍රයි sudo apt-get install lynx -y
nix@ja2k17ja-docker:~$ sudo apt-get install lynx -y
Reading package lists... Done
Building dependency tree
----
----
----
Setting up lynx-common (2.8.9dev8-4ubuntu1) ...
Setting up lynx (2.8.9dev8-4ubuntu1) ...
update-alternatives: using /usr/bin/lynx to provide /usr/bin/www-browser (www-browser) in auto mode
nix@ja2k17ja-docker:~$
දැන් අපි ගල් යුගයේ web browser එකකින් ටෙස්ට් කරල බලමු. මේක ගල් යුගයේ වුනාට මේක බාවිතා කරලා කරන්න පුළුවන් දේවල් හුගක් වැඩියි.
ට්‍රයි lynx http://127.0.0.1
                                                                                                                                                           Welcome to nginx!
                                                                              Welcome to nginx!
   If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
   For online documentation and support please refer to nginx.org.
   Commercial support is available at nginx.com.
   Thank you for using nginx.
q ඔබල ඊළගට Are you sure you want to quit? (y)  එකට y  ඔබල lynx එකෙන් exit වෙන්න හොදේ.....
වැඩිය මොකුත් ඕන නෑ ඔයාලගේ docker host ගේ IP එක වෙබ් browser එකේ type කරල බලන්න. :D උද http://104.155.111.111/
දැන් ඉතින් start කරපු Docker container එක stop කරන්න නැතිනම් මේ වගේ kill කරන්න.
ට්‍රයි docker kill my_nginx_ubuntu
nix@ja2k17ja-docker:~$ docker kill my_nginx_ubuntu
my_nginx_ubuntu
nix@ja2k17ja-docker:~$
චෙක් කරලත් බලමු 
ට්‍රයි docker ps -a
nix@ja2k17ja-docker:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                         PORTS               NAMES
2d906bdbc19d        ubuntu              "/bin/bash"         44 minutes ago      Exited (137) 8 seconds ago                         my_nginx_ubuntu
b32ea6375ee9        ubuntu              "/bin/bash"         2 hours ago         Exited (0) About an hour ago                       my_ubuntu
nix@ja2k17ja-docker:~$
අදට පාඩම මෙතනින් අවසානයි Docker 2 වන කොටස ලගදීම බලාපොරොත්තු වන්න.
ස්තුතියි!
 
Last edited:

ja2k17ja

Member
May 10, 2017
185
166
0
තිස්සමහාරාම
ඔයාලට තියෙන ගැටළු මෙතනම අහන්න. හොදේ....
මට එවිට පුළුවන් පොස්ට් එක edit කරල තවත් විස්තර එකට ඇතුල් කරන්න.
ස්තුතියි.
 

chrishanelloyd

Well-known member
  • Oct 20, 2012
    5,680
    890
    113
    සුපිරි මචන්.. හොය හොය හිටපු එකක්. බොහොම ස්තුති