Docker
Beküldte pzoli - 2023, június 24 - 2:54du
Kapcsolódó hivatkozások
Alapok
Az image readonly, a konténer a módosítható réteg e felett.
# image keresése a hub-on docker search mongodb # image letöltése docker pull ubuntu # image futtatása (letöltéssel együtt) (-i interactive -t terminal) docker run -it ubuntu:latest /bin/bash docker run -it --name centos01 centos:latest /bin/bash # image futtatása, automatikus újraindítással ha hiba történik a PID 1-ben docker run --name mariadb-1 --restart unless-stopped -p 3306:3306 mariadb # összes image listázása docker images # összes konténer listázása (a már nem futókat is mutatja) docker ps -a # image konfigurációjának megtekintése docker inspect <konténernév | id> # konténer indítása docker start <konténernév | id> # futó konténerhez csatlakozás docker attach <konténernév | id> # futó konténerről lecsatlakozás (nem állítja le a konténer futását) [CTRL]+P+Q # az image és a konténer közötti különbség listázása docker diff <konténernév | id> # parancs futtatása adott nevű konténeren docker exec -it <konténernév | id> /bin/bash # konténer leállítása docker stop <konténernév | id> # konténer eltávolítása docker rm <konténernév | id> # image eltávolítása docker image rm <image name | id> docker rmi <image name | id> # file felmásolása a konténerbe docker cp <filename> <konténernév | id>:/<path+filename> # file felmásolása a konténerből docker cp <konténernév | id>:/<path+filename> <filename> # konténer log docker logs <konténernév | id>
Linux bash shell tippek
# összes konténer törlése docker rm -f $(docker ps -aq) # összes image törlése docker rmi -f $(docker images -q)
WSL2
A volumes könyvtár eléréséhez Windows Explorer-be írjuk be a következő útvonalat:
\\wsl$ # vagy \\wsl.localhost\docker-desktop-data\data\docker # konténer layer diff (itt találhatók a fájlrendszer különbségei) \\wsl.localhost\docker-desktop-data\data\docker\overlay2
Ubuntu image
Debian alapú docker konténerbe telepítsük az ifconfig-ot tartalmazó net-tools csomagot, a ping-et tartalmazó iputils-ping csomagot és a ps-t tartalmazó procps csomagot:
sudo apt-get update sudo apt-get install net-tools iputils-ping procps
Adatkapcsolatok
Több konténer összekapcsolásához használhatunk port mapping-ot, volume mount-ot
# portmap: -p <host-port>:<konténer-port> docker run --name mariadb-1 -p 3306:3306 mariadb # volume mount: -v<host-dir>:</konténer-dir> docker run --name mariadb-1 -p 3306:3306 -v ~/db/db1:/var/lib/mysql -d mariadb # a konténer számára csak olvasható könyvtár felcsatolás (:ro) docker run -v ~/db/db1:/data:ro -it ubuntu /bin/bash # file felcsatolás docker run -v ~/db/.env:/data/.env -it ubuntu /bin/bash # környezeti változó: -e VAR=VALUE # (-d daemon) docker run --name mariadb-1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -v ~/db/db1:/var/lib/mysql -d mariadb # inline környezeti változó átadása (Linux bash) PASSWORD='PASSWORD1' docker run --env-file env.list ubuntu # env.list tartalma, a PASSWORD-nek inline adtunk értéket fentebb vagy Windows-on deklaráltuk a változót set-el előtte USER=user1 UID=1000 PASSWORD
Docker image létrehozása
Dockerfile:
FROM <base-image> COPY hello / CMD ["/hello"]
Build:
docker build -t <image név> . # eltérő konfig fájl megadása és verziószám docker build -f Dockerfile.test -t <image neve:version> .
Tag-elés és feltöltés hub.docker.com-ra
# bejelentkezés docker login # kijelentkezés docker logout # image tag-elés docker tag <image name | id> <username on hub>/<target name>:<version> # example: docker tag shoppingcard-api integritypz/shoppingcard-api:1.0 # konténerben történt változások feltöltése az image-be, tag-elés, verzió létrehozása docker commit <image név | id> <username on hub>/<target name>:<version> # example: docker commit shoppingcard-api integritypz/shoppingcard-api:1.1 # feltöltés hub.docker.com-ra docker push integritypz/shoppingcard-api:1.0
Image mozgatása
# image mentése docker save <image név | id> >image.tar # vagy docker save -o image.tar <image név | id> # image betöltése docker load<image.tar
Private registry
Kapcsolódó hivatkozások:
- Docker registry
- Create your own secured docker private registry with ssl
- Securing private docker registry
# registry futtatása (registry könyvtár mount kell!) docker run -d -p 5000:5000 --restart always --name registry -v e:\work\registry:/var/lib/registry registry:2 # image tag-elése docker tag shoppingcard-api localhost:5000/shoppingcard-api # image push docker push localhost:5000/shoppingcard-api
Hálózat
Hálózatok listázása
docker network ls
Hálózat nélküli alkalmazás:
docker run -it --net=none ubuntu /bin/bash
A host hálózat a host gép hálózatát használja, így nem lehet két olyan konténer, ami ugyan azt a port ajánlja ki.
Hálózat linkelése felhasználói bridge-ekkel (dokumentáció):
# redis kiszolgáló indítása: docker run -d --name redis redis # a --link kapcsoló a közeli jövőben már nem lesz támogaott, de így működik docker run -d --name counter -p 3000:3000 -e DBHOST=db --link redis:db pbes/counter-with-redis # nevesített bridge hálózat docker network create my-net # hálózati elemek listázása docker network ls # hálózat eltávolítása docker network rm my-net # konténer kapcsolódás hálózathoz ## mongodb szerver (--net-alias=mongoserver - az a host név amire lehet hivatkozni más konténerben) docker run -v e:\temp\mongodb\data:/data/db --network my-net --net-alias=mongoserver --name mongoserver -d -p 27017:27017 mongo:latest ## nodejs project use mongoserver docker run -p 8080:8080 -p 3000:3000 --network my-net --name shoppingcard -d shoppingcard-api:3.0 # konténer leválasztása hálózatról docker network disconnect my-net counter # konténer felkapcsolása hálózatra docker network connect my-net counter
- A hozzászóláshoz be kell jelentkezni