Sakinisha Docker na Ujifunze Udanganyifu wa Msingi wa Kontena katika CentOS na RHEL 8/7 - Sehemu ya 1


Katika mfululizo huu wa makala 4, tutajadili Docker, ambayo ni zana huria ya uenezaji wa uzani mwepesi ambayo inafanya kazi juu ya kiwango cha Mfumo wa Uendeshaji, inayowaruhusu watumiaji kuunda, kuendesha na kupeleka programu, zilizowekwa kwenye vyombo vidogo.

Aina hii ya vyombo vya Linux imethibitishwa kuwa haraka, kubebeka na salama. Michakato inayoendeshwa kwenye kontena la Docker hutengwa kila wakati kutoka kwa seva pangishi kuu, kuzuia uchezaji wa nje.

Mafunzo haya yanatoa mahali pa kuanzia jinsi ya kusakinisha Docker, kuunda na kuendesha vyombo vya Docker kwenye CentOS/RHEL 8/7, lakini hukwaruza uso wa Docker.

Hatua ya 1: Sakinisha na Usanidi Docker

1. Matoleo ya awali ya Docker yaliitwa docker au docker-engine, ikiwa umesakinisha hizi, ni lazima uziondoe kabla ya kusakinisha toleo jipya la docker-ce.

# yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2. Ili kusakinisha toleo la hivi punde la Injini ya Docker unahitaji kusanidi hazina ya Docker na usakinishe kifurushi cha yum-utils ili kuwezesha hazina thabiti ya Docker kwenye mfumo.

# yum install -y yum-utils
# yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

3. Sasa sakinisha toleo jipya zaidi la docker-ce kutoka hazina ya Docker na liwekewe mwenyewe, kwa sababu kutokana na matatizo fulani, Red Hat ilizuia usakinishaji wa containerd.io > 1.2.0-3.el7, ambayo ni utegemezi wa docker-ce.

# yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
# yum install docker-ce docker-ce-cli

4. Baada ya, kifurushi cha Docker kusakinishwa, anzisha daemon, angalia hali yake na uiwashe kwa mfumo mzima kwa kutumia amri zilizo hapa chini:

# systemctl start docker 
# systemctl status docker
# systemctl enable docker

5. Hatimaye, endesha picha ya jaribio la kontena ili kuthibitisha kama Docker inafanya kazi vizuri, kwa kutoa amri ifuatayo:

# docker run hello-world

Ikiwa unaweza kuona ujumbe ulio hapa chini, basi kila kitu kiko mahali pazuri.

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/

6. Sasa, unaweza kuendesha amri chache za msingi za Docker kupata habari kuhusu Docker:

# docker info
# docker version

7. Ili kupata orodha ya amri zote za Docker, chapa docker kwenye console yako.

# docker

Hatua ya 2: Pakua Picha ya Docker

8. Ili kuanza na kuendesha kontena la Docker, kwanza, ni lazima picha ipakuliwe kutoka kwa Docker Hub kwenye seva pangishi yako. Docker Hub hutoa picha nyingi za bure kutoka kwa hazina zake.

Kutafuta picha ya Docker, Ubuntu, kwa mfano, toa amri ifuatayo:

# docker search ubuntu

9. Baada ya kuamua ni picha gani ungependa kutumia kulingana na mahitaji yako, ipakue ndani yako kwa kutekeleza amri iliyo hapa chini (katika kesi hii picha ya Ubuntu inapakuliwa na kutumika):

# docker pull ubuntu

10. Kuorodhesha picha zote zinazopatikana za Docker kwenye mwenyeji wako toa amri ifuatayo:

# docker images

11. Ikiwa hauitaji picha ya Docker tena na unataka kuiondoa kutoka kwa mwenyeji toa amri ifuatayo:

# docker rmi ubuntu

Hatua ya 3: Endesha Chombo cha Docker

Unapotoa amri dhidi ya picha kimsingi unapata kontena. Baada ya amri ambayo inatekelezwa kwenye kontena kumalizika, kontena huacha (unapata chombo kisichoendesha au kilichotoka). Ikiwa utaendesha amri nyingine kwenye picha sawa tena chombo kipya kinaundwa na kadhalika.

Vyombo vyote vilivyoundwa vitasalia kwenye mfumo wa faili mwenyeji hadi uchague kuvifuta kwa kutumia docker rm amri.

12. Ili kuunda na kuendesha chombo, unahitaji kuendesha amri kwenye picha iliyopakuliwa, katika kesi hii, Ubuntu, hivyo amri ya msingi itakuwa kuonyesha faili ya toleo la usambazaji ndani ya chombo kwa kutumia paka amri, kama katika zifuatazo. mfano:

# docker run ubuntu cat /etc/issue

Amri hapo juu imegawanywa kama ifuatavyo:

# docker run [local image] [command to run into container]

13. Ili kuendesha moja ya vyombo tena kwa amri ambayo ilitekelezwa ili kuunda, kwanza, lazima upate kitambulisho cha chombo (au jina linalozalishwa kiotomatiki na Docker) kwa kutoa amri iliyo hapa chini, ambayo inaonyesha orodha ya kukimbia na. makontena yamesimamisha (yasiyo ya kukimbia):

# docker ps -l 

14. Kitambulisho cha kontena kikishapatikana, unaweza kuanzisha kontena tena kwa amri ambayo ilitumika kukiunda, kwa kutoa amri ifuatayo:

# docker start 923a720da57f

Hapa, mfuatano 923a720da57f unawakilisha kitambulisho cha chombo.

15. Ikiwa chombo kitafanya kazi katika hali, unaweza kupata kitambulisho chake kwa kutoa amri ya docker ps. Ili kusimamisha utoaji wa kontena amri ya docker stop kwa kubainisha kitambulisho cha chombo au jina linalozalishwa kiotomatiki.

# docker stop 923a720da57f
OR
# docker stop cool_lalande
# docker ps

16. Njia mbadala ya kifahari zaidi ili usilazimike kukumbuka kitambulisho cha kontena itakuwa kutenga jina la kipekee kwa kila chombo unachounda kwa kutumia chaguo la --name kwenye safu ya amri, kama ilivyo mfano ufuatao:

# docker run --name ubuntu20.04 ubuntu cat /etc/issue

17. Kisha, kwa kutumia jina ulilotenga kwa kontena, unaweza kuendesha chombo (anza, simamisha, ondoa, juu, takwimu) zaidi kwa kushughulikia jina lake, kama ilivyo katika mifano iliyo hapa chini:

# docker start ubuntu20.04
# docker stats ubuntu20.04
# docker top ubuntu20.04 

Fahamu kuwa baadhi ya amri zilizo hapo juu zinaweza kuonyesha hakuna matokeo ikiwa mchakato wa amri ambao ulitumiwa kuunda kontena utakamilika. Wakati mchakato unaoendesha ndani ya chombo ukamilika, chombo huacha.

Hatua ya 4: Endesha Kikao cha Mwingiliano kwenye Chombo

18. Ili kuunganishwa kwa mwingiliano kwenye kipindi cha kontena, na utekeleze amri kama unavyofanya kwenye kipindi kingine chochote cha Linux, toa amri ifuatayo:

# docker run -it ubuntu bash

Amri hapo juu imegawanywa kama ifuatavyo:

  1. -i hutumika kuanzisha kipindi cha mwingiliano.
  2. -t inatenga TTY na kuambatisha stdin na stdout.
  3. ubuntu ni picha ambayo tulitumia kuunda kontena.
  4. bash (au /bin/bash) ni amri ambayo tunaendesha ndani ya chombo cha Ubuntu.

19. Ili kuacha na kurudi kwa seva pangishi kutoka kwa kipindi cha kontena inayoendeshwa lazima uandike amri ya toka. Amri ya kutoka inasitisha michakato yote ya kontena na kuisimamisha.

# exit

20. Ikiwa umeingia kwa mwingiliano kwenye kidokezo cha terminal ya kontena na unahitaji kuweka kontena katika hali ya kufanya kazi lakini utoke kwenye kipindi shirikishi, unaweza kuacha kiweko na kurudi kwenye terminal ya seva pangishi kwa kubofya Ctrl+p na vitufe vya Ctrl+q.

21. Ili kuunganisha tena kwenye kontena inayoendesha unahitaji kitambulisho cha kontena au jina. Toa amri ya docker ps ili kupata kitambulisho au jina na, kisha, endesha amri ya docker attach kwa kubainisha kitambulisho cha chombo au jina, kama inavyoonyeshwa kwenye picha hapo juu:

# docker attach <container id>

22. Kusimamisha kontena inayoendesha kutoka kwa kipindi cha mwenyeji toa amri ifuatayo:

# docker kill <container id>

Hayo yote ni kwa ajili ya uendeshaji wa vyombo vya msingi. Katika somo linalofuata, tutajadili jinsi ya kuhifadhi, kufuta, na kuendesha seva ya wavuti kwenye chombo cha Docker.