ວິທີຕິດຕັ້ງ Docker ແລະ Run Docker container ໃນ Ubuntu


Docker ແມ່ນແຫຼ່ງເປີດແລະເປັນທີ່ນິຍົມຂອງລະບົບປະຕິບັດການໃນລະດັບ virtualization (ທີ່ຮູ້ກັນທົ່ວໄປວ່າ“ ພາຊະນະບັນຈຸ”) ເຕັກໂນໂລຢີເຊິ່ງຕົ້ນຕໍແມ່ນໃຊ້ກັບ Linux ແລະ Windows. Docker ເຮັດໃຫ້ງ່າຍຕໍ່ການສ້າງ, ນຳ ໃຊ້ແລະແລ່ນ application ໂດຍການ ນຳ ໃຊ້ພາຊະນະບັນຈຸ.

ມີພາຊະນະບັນຈຸ, ນັກພັດທະນາ (ແລະຜູ້ບໍລິຫານລະບົບ) ສາມາດຈັດຕັ້ງແອັບພລິເຄຊັນພ້ອມທຸກຢ່າງທີ່ ຈຳ ເປັນເພື່ອ ດຳ ເນີນການສະ ໝັກ - ລະຫັດ, ໄລຍະເວລາ, ຫ້ອງສະ ໝຸດ, ຕົວແປສະພາບແວດລ້ອມແລະເອກະສານການຕັ້ງຄ່າ, ແລະຈັດສົ່ງມັນອອກເປັນຊຸດດຽວ. ແມ່ນແລ້ວ, ມັນດີເລີດແທ້ໆ!

ໃນບົດຂຽນນີ້, ພວກເຮົາຈະສະແດງວິທີການຕິດຕັ້ງ Docker CE (Community Edition), ສ້າງແລະແລ່ນ Docker container ໃນການແຈກຈ່າຍ Ubuntu.

ຕິດຕັ້ງ Docker CE (Community Edition) ໃນ Ubuntu

1. ເພື່ອຕິດຕັ້ງ Docker CE, ກ່ອນອື່ນ ໝົດ, ທ່ານ ຈຳ ເປັນຕ້ອງເອົາ Docker ລຸ້ນເກົ່າອອກເປັນເອີ້ນວ່າ docker , docker.io , ຫຼື docker-engine ຈາກລະບົບໂດຍໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

$ sudo apt-get remove docker docker-engine docker.io containerd runc

2. ຕໍ່ໄປ, ທ່ານ ຈຳ ເປັນຕ້ອງຕັ້ງ Docker repository ເພື່ອຕິດຕັ້ງແລະອັບເດດ Docker ຈາກຫໍໄຕໂດຍໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

$ sudo apt-get update
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

3. ປັບປຸງດັດສະນີຊຸດ apt ແລະຕິດຕັ້ງ Docker CE ລຸ້ນລ້າສຸດໂດຍໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  aufs-tools cgroupfs-mount pigz
The following NEW packages will be installed:
  aufs-tools cgroupfs-mount containerd.io docker-ce docker-ce-cli pigz
0 upgraded, 6 newly installed, 0 to remove and 167 not upgraded.
Need to get 50.7 MB of archives.
After this operation, 243 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu.com/ubuntu bionic/universe amd64 pigz amd64 2.4-1 [57.4 kB]
Get:2 https://download.docker.com/linux/ubuntu bionic/stable amd64 containerd.io amd64 1.2.4-1 [19.9 MB]
Get:3 http://archive.ubuntu.com/ubuntu bionic/universe amd64 aufs-tools amd64 1:4.9+20170918-1ubuntu1 [104 kB]
Get:4 http://archive.ubuntu.com/ubuntu bionic/universe amd64 cgroupfs-mount all 1.4 [6,320 B]
Get:5 https://download.docker.com/linux/ubuntu bionic/stable amd64 docker-ce-cli amd64 5:18.09.3~3-0~ubuntu-bionic [13.1 MB]
Get:6 https://download.docker.com/linux/ubuntu bionic/stable amd64 docker-ce amd64 5:18.09.3~3-0~ubuntu-bionic [17.4 MB]
Fetched 50.7 MB in 7s (7,779 kB/s)                                     
...

4. ຫຼັງຈາກຕິດຕັ້ງ Docker CE ສຳ ເລັດຜົນແລ້ວ, ການບໍລິການຄວນຈະເລີ່ມຕົ້ນແລະເຮັດໂດຍອັດຕະໂນມັດເພື່ອເລີ່ມຕົ້ນເມື່ອ boot system, ທ່ານສາມາດກວດເບິ່ງສະຖານະຂອງມັນໂດຍໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

$ sudo systemctl status docker 
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-03-06 08:06:42 UTC; 2min 18s ago
     Docs: https://docs.docker.com
 Main PID: 5274 (dockerd)
    Tasks: 8
   CGroup: /system.slice/docker.service
           └─5274 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.562587408Z" level=warning msg="Your kernel does not support cgroup rt runtime"
Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.562767803Z" level=warning msg="Your kernel does not support cgroup blkio weight"
Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.562966844Z" level=warning msg="Your kernel does not support cgroup blkio weight_device"
Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.565298457Z" level=info msg="Loading containers: start."
Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.950942467Z" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a prefer
Mar 06 08:06:42 tecmint dockerd[5274]: time="2019-03-06T08:06:42.036964493Z" level=info msg="Loading containers: done."
Mar 06 08:06:42 tecmint dockerd[5274]: time="2019-03-06T08:06:42.156279378Z" level=info msg="Docker daemon" commit=774a1f4 graphdriver(s)=overlay2 version=18.09.3
Mar 06 08:06:42 tecmint dockerd[5274]: time="2019-03-06T08:06:42.157145045Z" level=info msg="Daemon has completed initialization"
Mar 06 08:06:42 tecmint systemd[1]: Started Docker Application Container Engine.
Mar 06 08:06:42 tecmint dockerd[5274]: time="2019-03-06T08:06:42.224229999Z" level=info msg="API listen on /var/run/docker.sock"

5. ສຸດທ້າຍ, ກວດສອບວ່າ Docker CE ຖືກຕິດຕັ້ງຢ່າງຖືກຕ້ອງໂດຍການແລ່ນຮູບພາບ ສະບາຍດີໂລກ .

$ sudo docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

ຮຽນຮູ້ ຄຳ ສັ່ງພື້ນຖານໃນ Docker ໃນ Ubuntu

6. ເພື່ອໃຫ້ໄດ້ຂໍ້ມູນກ່ຽວກັບ Docker, ໃຫ້ເຮັດຕາມ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

$ sudo docker info

Kernel Version: 5.0.0-050000-generic
Operating System: Ubuntu 18.04.1 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.452GiB
Name: tecmint
ID: FWSB:IRIF:DYL7:PRB5:Y66E:37MY:ISPO:HZVY:6YJO:2IYL:TO6Y:GNB7
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine

7. ເພື່ອໃຫ້ໄດ້ຂໍ້ມູນກ່ຽວກັບລຸ້ນ Docker, ໃຫ້ເຮັດຕາມ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

$ sudo docker version

Client:
 Version:           18.09.3
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        774a1f4
 Built:             Thu Feb 28 06:53:11 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.3
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       774a1f4
  Built:            Thu Feb 28 05:59:55 2019
  OS/Arch:          linux/amd64
  Experimental:     false

8. ເພື່ອໃຫ້ໄດ້ຮັບບັນຊີລາຍຊື່ຂອງ ຄຳ ສັ່ງ Docker ທີ່ມີຢູ່ທັງ ໝົດ ແລ່ນ docker ຢູ່ປາຍຍອດຂອງທ່ານ.

$ docker

Usage:	docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default "/home/tecmint/.docker")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/home/tecmint/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/home/tecmint/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/home/tecmint/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  builder     Manage builds
  config      Manage Docker configs
  container   Manage containers
  engine      Manage the docker engine
  image       Manage images
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes
....

ດາວໂຫລດຮູບ Docker ໃນ Ubuntu

9. ເພື່ອ ດຳ ເນີນການບັນຈຸ Docker, ທຳ ອິດ, ທ່ານ ຈຳ ເປັນຕ້ອງດາວໂຫລດຮູບຈາກ Docker Hub - ໃຫ້ຮູບພາບທີ່ບໍ່ເສຍຄ່າຈາກຫໍສະມຸດຂອງມັນ.

ຍົກຕົວຢ່າງ, ເພື່ອດາວໂຫລດຮູບ Docker ທີ່ມີຊື່ວ່າ CentOS 7 , ອອກ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

$ sudo docker search centos

NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
centos                             The official build of CentOS.                   5227                [OK]                
ansible/centos7-ansible            Ansible on Centos7                              120                                     [OK]
jdeathe/centos-ssh                 CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x86…   107                                     [OK]
consol/centos-xfce-vnc             Centos container with "headless" VNC session…   81                                      [OK]
imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              50                                      [OK]
centos/mysql-57-centos7            MySQL 5.7 SQL database server                   47                                      
tutum/centos                       Simple CentOS docker image with SSH access      43                                      
gluster/gluster-centos             Official GlusterFS Image [ CentOS-7 +  Glust…   40                                      [OK]
openshift/base-centos7             A Centos7 derived base image for Source-To-I…   39                                      
centos/postgresql-96-centos7       PostgreSQL is an advanced Object-Relational …   37                                      
centos/python-35-centos7           Platform for building and running Python 3.5…   33                                      
kinogmt/centos-ssh                 CentOS with SSH                                 26                                      [OK]
openshift/jenkins-2-centos7        A Centos7 based Jenkins v2.x image for use w…   20                                      
centos/php-56-centos7              Platform for building and running PHP 5.6 ap…   19                                      
pivotaldata/centos-gpdb-dev        CentOS image for GPDB development. Tag names…   10                                      
openshift/wildfly-101-centos7      A Centos7 based WildFly v10.1 image for use …   6                                       
openshift/jenkins-1-centos7        DEPRECATED: A Centos7 based Jenkins v1.x ima…   4                                       
darksheer/centos                   Base Centos Image -- Updated hourly             3                                       [OK]
pivotaldata/centos                 Base centos, freshened up a little with a Do…   2                                       
pivotaldata/centos-mingw           Using the mingw toolchain to cross-compile t…   2                                       
pivotaldata/centos-gcc-toolchain   CentOS with a toolchain, but unaffiliated wi…   1                                       
openshift/wildfly-81-centos7       A Centos7 based WildFly v8.1 image for use w…   1                                       
blacklabelops/centos               CentOS Base Image! Built and Updates Daily!     1                                       [OK]
smartentry/centos                  centos with smartentry                          0                                       [OK]
jameseckersall/sonarr-centos       Sonarr on CentOS 7                              0                                       [OK]

10. ຫຼັງຈາກທີ່ທ່ານໄດ້ ກຳ ນົດວ່າຮູບພາບໃດທີ່ທ່ານຕ້ອງການ ດຳ ເນີນການໂດຍອີງໃສ່ຄວາມຕ້ອງການຂອງທ່ານ, ດາວໂຫລດມັນຢູ່ໃນທ້ອງຖິ່ນໂດຍການເຮັດວຽກຕາມ ຄຳ ສັ່ງລຸ່ມນີ້ (ໃນກໍລະນີນີ້ຮູບພາບ CentOS ຈະຖືກດາວໂຫລດແລະ ນຳ ໃຊ້).

$ docker pull centos

Using default tag: latest
latest: Pulling from library/centos
a02a4930cb5d: Pull complete 
Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
Status: Downloaded newer image for centos:latest

11. ເພື່ອບອກທຸກຮູບ Docker ທີ່ມີຢູ່ໃນໂຮດຂອງທ່ານໃຫ້ເຮັດຕາມ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

$ sudo docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              fce289e99eb9        2 months ago        1.84kB
centos              latest              1e1148e4cc2c        3 months ago        202MB

12. ຖ້າທ່ານບໍ່ຕ້ອງການຮູບ Docker ອີກຕໍ່ໄປແລະທ່ານສາມາດເອົາມັນອອກໂດຍໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

$ sudo docker rmi centos

Untagged: centos:latest
Untagged: [email :184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
Deleted: sha256:1e1148e4cc2c148c6890a18e3b2d2dde41a6745ceb4e5fe94a923d811bf82ddb
Deleted: sha256:071d8bd765171080d01682844524be57ac9883e53079b6ac66707e192ea25956

ດໍາເນີນການ Docker Container ໃນ Ubuntu

13. ເພື່ອສ້າງແລະ ດຳ ເນີນການບັນຈຸ Docker, ທຳ ອິດທ່ານ ຈຳ ເປັນຕ້ອງ ດຳ ເນີນການ ຄຳ ສັ່ງເຂົ້າໃນຮູບພາບ CentOS ທີ່ຖືກດາວໂຫລດ, ດັ່ງນັ້ນ ຄຳ ສັ່ງພື້ນຖານກໍ່ຄືການກວດເບິ່ງເອກະສານສະບັບການແຈກຢາຍພາຍໃນພາຊະນະໂດຍໃຊ້ ຄຳ ສັ່ງ cat , ດັ່ງທີ່ສະແດງ.

$ docker run centos cat /etc/issue

14. ເພື່ອ ດຳ ເນີນການບັນຈຸອີກຄັ້ງ ທຳ ອິດ, ທ່ານ ຈຳ ເປັນຕ້ອງໄດ້ຮັບເອົາຕູ້ຄອນເທນເນີຫລືຊື່ໂດຍການແລ່ນ ຄຳ ສັ່ງຕໍ່ໄປນີ້ເຊິ່ງມັນຈະສະແດງລາຍຊື່ຂອງກ່ອງທີ່ ກຳ ລັງແລ່ນແລະຢຸດ:

$ sudo docker ps -l

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                          PORTS               NAMES
0ddfa81c5779        centos              "cat /etc/issue"    About a minute ago   Exited (0) About a minute ago                       elastic_shirley

15. ເມື່ອໃດທີ່ບັດປະ ຈຳ ຕົວຫລືຊື່ໄດ້ຮັບແລ້ວ, ທ່ານສາມາດເລີ່ມຕົ້ນບັນຈຸພາສາໂດຍໃຊ້ ຄຳ ສັ່ງດັ່ງຕໍ່ໄປນີ້:

$ sudo docker start 0ddfa81c5779
OR
$ sudo docker start elastic_shirley

ໃນນີ້, ລະຫັດ 0ddfa81c5779 ໝາຍ ເຖິງ ID ຂອງພາຊະນະແລະ elastic_shirley ເປັນຕົວແທນຊື່ພາຊະນະ.

16. ເພື່ອຢຸດການບັນຈຸຕູ້ຄອນເທນເນີແລ່ນ docker stop ຄຳ ສັ່ງໂດຍລະບຸຊື່ຕູ້ຄອນເທນເນີຫລືຊື່.

$ sudo docker stop 0ddfa81c5779
OR
$ sudo docker stop elastic_shirley

17. ວິທີການທີ່ດີກວ່າ, ເພື່ອວ່າທ່ານບໍ່ ຈຳ ເປັນຕ້ອງຈື່ ຈຳ ເລກບັນຈຸທີ່ຈະ ໝາຍ ເຖິງຊື່ທີ່ເປັນເອກະລັກຂອງແຕ່ລະຖັງທີ່ທ່ານສ້າງໂດຍການໃຊ້ຕົວເລືອກ - ຊື່ ທີ່ໄດ້ສະແດງໄວ້.

$ docker run --name myname centos cat /etc/issue

18. ເພື່ອເຊື່ອມຕໍ່ແລະໃຊ້ ຄຳ ສັ່ງ Linux ໃນບັນຫາບັນຈຸ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

$ docker run -it centos bash

 uname -a
Linux 6213ec547863 5.0.0-050000-generic #201903032031 SMP Mon Mar 4 01:33:18 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
 cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 

19. ການທີ່ຈະເຊົາແລະກັບມາເປັນເຈົ້າພາບຈາກການປະຊຸມຕູ້ຄອນເທນເນີທີ່ ກຳ ລັງແລ່ນທ່ານຕ້ອງພິມ ຄຳ ສັ່ງ <ອອກເດີນທາງ ຕາມທີ່ສະແດງໄວ້.

$ exit

ນັ້ນແມ່ນທັງ ໝົດ ສຳ ລັບການ ໝູນ ໃຊ້ພາຊະນະບັນຈຸພື້ນຖານ. ຖ້າທ່ານມີ ຄຳ ຖາມຫຼື ຄຳ ເຫັນໃດໆກ່ຽວກັບບົດຂຽນນີ້, ໃຊ້ແບບຟອມ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້ເພື່ອຕິດຕໍ່ຫາພວກເຮົາ.