This shows you the differences between two versions of the page.
devops:laboratoare:04 [2021/05/24 17:37] 127.0.0.1 external edit |
devops:laboratoare:04 [2022/07/27 15:59] (current) bogdan.croitoru |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Laboratorul 04. ===== | + | ===== Hands-on session 2/2 - part 3/3 ===== |
+ | 1. Scrieți un script bash care afișează în terminal un mesaj de întâmpinare care să conțină numele vostru. | ||
+ | |||
+ | <note tip> | ||
+ | * nu uitati sa verificati ca script-ul are drepturi de executie | ||
+ | * nu uitati nici partea de "shebang" | ||
+ | * pentru a verifica sintaxa unui script "test.sh", puteti rula comanda "bash -n test.sh" | ||
+ | </note> | ||
+ | |||
+ | 2. Creați un Dockerfile pentru o imagine bazată pe <DEBUGBOX> care să conțină scriptul vostru în calea /opt/ și care să creeze un utilizator cu același ID ca utilizatorul vostru de pe gazdă cu tot cu directorul său home. | ||
+ | <note tip> | ||
+ | Exemplu comandă pentru adăugarea unui utilizator: | ||
+ | ''useradd --create-home --shell /bin/bash --uid 1432 --user-group devops'' | ||
+ | </note> | ||
+ | |||
+ | 3. Construiți imaginea Docker cu acest Dockerfile cu următorul nume: ubuntu-student#x:latest. | ||
+ | |||
+ | 4. Porniți un container din această imagine care să aibă un nume, să se autodistrugă la încetarea sa și care să ruleze scriptul vostru. | ||
+ | |||
+ | 5. Porniți un container din imagine cu un terminal interactiv si rulați scriptul manual în interiorul lui. | ||
+ | |||
+ | 6. Identificați, opriți și ștergeți containerul creat anterior. | ||
+ | |||
+ | 7. Creați și porniți un nou container numit ‘container1’ cu un terminal interactiv care să mapeze directorul /home/student#x al gazdei în container peste calea home a utilizatorului creat și folosind ID-ul utilizatorului la pornire. | ||
+ | <note tip> Docker permite specificarea utilizatorului cu care va porni containerul prin parametrul ''-u'' (care așteaptă un ID). </note> | ||
+ | |||
+ | 8. Navigați în container la calea ~/ , creați un fișier acolo și verificați ce s-a întamplat pe mașina gazdă. | ||
+ | |||
+ | 9. Într-un nou terminal porniți un alt container numit container2 cu același utilizator, dar fără a monta calea home. Aflați adresele IP pentru container1 și container2 și executați comanda "ping" pentru a ajunge dintr-un container în altul. | ||
+ | |||
+ | <note> Prin ce comanda se pot afla IP-urile de pe interfetele unei masini? </note> | ||
+ | |||
+ | 10. Deschideți un nou terminal si rulați docker inspect container1. Observați rezultatul comenzii. | ||
+ | |||
+ | 11. Ștergeți ambele containere folosind aceeași comandă. | ||
+ | |||
+ | 12. Instalați docker-compose în ~/bin/. Adăugați în PATH această cale. | ||
+ | cd ~ | ||
+ | mkdir bin | ||
+ | curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o bin/ | ||
+ | export PATH=$PATH:/home/student#x/bin | ||
+ | |||
+ | <note tip> | ||
+ | PATH este o variabila default care contine o lista de locatii in care sunt cautate binarele pe care le executam; locatiile sunt verificate secvential, adaugand una la inceput ea va fi verificata prima; in cazul de mai sus, se va folosi ultima pentru ca binarul de docker-compose nu exista in celelalte | ||
+ | </note> | ||
+ | |||
+ | 13. Scrieți un fișier docker-compose.yml în care descrieți un container cu următoarele cerințe: | ||
+ | - Nume: student#x | ||
+ | - Imagine: ubuntu-student#x:latest | ||
+ | - Porturi: 8080 al containerului corespunde cu 8080 al gazdei | ||
+ | - Variabile de mediu: STUDENT cu valoarea numele vostru | ||
+ | - Politica de restart: never | ||
+ | Și un al doilea container: | ||
+ | - Nume: devops-summer-school | ||
+ | - Imagine: ubuntu-student#x:latest | ||
+ | - Porturi: 8080 al containerului corespunde cu 9090 al gazdei | ||
+ | - Variabile de mediu: STUDENT cu valoarea numele vostru | ||
+ | - Politica de restart: always | ||
+ | <note> Luați exemplul prezentat drept model </note> | ||
+ | |||
+ | 14. Porniți containerele cu docker-compose. | ||
+ | <note tip> Folosiți funcția de help a comenzii docker-compose pentru a afla ce operații puteți executa </note> | ||
+ | |||
+ | 15. Afișați lista de containere aflate în rulare folosind utilitarul docker, iar apoi folosind utilitarul docker-compose. | ||
+ | |||
+ | 16. Conectați-vă la containerele create și executați comanda ps. Ce diferă față de mașina gazdă? | ||
+ | |||
+ | 17. Opriți containerele create folosind utilitarul docker-compose. | ||
+ | |||
+ | |||
+ | (bonus)18. Recreați containerul container1, generați o pereche de chei ssh în container1 și folosiți-le pentru a deschide o conexiune ssh din container1 către mașina gazdă folosind mai multe adrese IP (verificați adresele IP ale gazdei). | ||