āļŠāļģāļŦāļĢāļąāļāļāļāļāļāļĩāđāđāļĢāļ·āđāļāļāļāļāļ Cloud Native āļĄāļēāđāļĢāļāļĄāļēāļ āđ āļāļģāđāļŦāđāļāļēāļĢāđāļāđ Container āļāđāđāļĢāļīāđāļĄāļāļ°āļāļĨāļēāļĒāļāļ°āđāļāđāļāđāļĢāļ·āđāļāļāļāļāļāļīāļāļāļāļāļ§āļāđāļĢāļēāđāļŦāļĨāđāļēāđāļāļāđāļĨāļ°āļāļēāļ§āļāļīāļāļāđāļēāļāļąāļāđāļāđāļĨāđāļ§ āđāļāđāļāļēāļĢāļāļąāļāļāļēāļĢ Container āļāļąāđāļāļāđāđāļĄāđāđāļāđāļ§āđāļēāļāļ°āđāļāđāļāđāļĢāļ·āđāļāļāļĒāļēāļ āđāļāļĢāļēāļ°āđāļāļāļāļāļāļĩāđāļāđāļĄāļĩāđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļĩāđāđāļāđāđāļāļāļēāļĢāļāļąāļāļāļēāļĢ Container āđāļŦāđāđāļāđāļāđāļĢāļ·āđāļāļāļāđāļēāļĒāļĄāļĩāđāļŦāđāđāļĨāļ·āļāļāđāļāđāļĄāļēāļāļĄāļēāļĒ
āļāļķāđāļāļ§āļąāļāļāļĩāđāđāļāļāļāļ°āļāļēāļĄāļēāļĢāļđāđāļāļąāļāļāļąāļāđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļąāļāļāļēāļĢ Container āđāļāđāļ āđ āļāļąāļ§āđāļāđāļ āđ āļāļĩāđāļāđāļēāļāļ°āđāļāļĒāđāļāđāļĒāļīāļāļāļ·āđāļāļāļąāļāļĄāļēāļāđāļēāļāļāļąāđāļāļāđāļāļ·āļ Docker āđāļĨāļ° Podman āļŠāļāļāļāļąāļ§āļāļĩāđāļāļđāļāļāļđāļāļāļķāļāđāļĨāļ°āļĄāļĩāļāļēāļĢāđāļāđāļāļēāļāļāļĩāđāđāļāļĢāđāļŦāļĨāļēāļĒāļāļąāļāļāļĒāļđāđāđāļĨāđāļ§ āđāļāđāļŠāļģāļŦāļĢāļąāļāđāļāļĢāļāļĩāđāđāļāļĒāđāļāđāļāļąāļ§āđāļāļāļąāļ§āļŦāļāļķāđāļāļĄāļēāļāđāļāļāļāļĒāļēāļāļĢāļđāđāļ§āđāļēāļāļ§āļēāļĄāđāļāļāļāđāļēāļāđāļāļāļēāļĢāđāļāđāļāļēāļāļŠāļāļāļāļąāļ§āļāļĩāđ āļĄāļąāļāđāļāļāļāđāļēāļāļāļąāļāļĄāļąāđāļĒ āđāļāđāļāļēāļāļĒāļēāļ āļāđāļēāļĒāđāļāđāđāļŦāļ āđāļāļĩāđāļĒāļ§āđāļĢāļēāļĄāļēāļāļđāđāļāļāļĢāđāļāļĄāļāļąāļāđāļāļāļāļāļ§āļēāļĄāļāļĩāđāļāļąāļāđāļĨāļĒ !
Docker āđāļĨāļ° Podman āļāļ·āļāļāļ°āđāļĢ?
Docker āļāļ·āļāļāļ°āđāļĢ?
Docker āļāļ·āļāđāļāļāđāļāđāļĨāļĒāļĩāđāļāļāļēāļĢāļāļąāļāļāļēāļĢ container āļāļĩāđāļāđāļāļāļāđāļēāļāļāļ°āļĄāļĩāļāļēāļĢāđāļāđāļāļēāļāļĄāļēāļāļāļĩāđāļŠāļļāļ āđāļāļĒāļāļāļŠāđāļ§āļāđāļŦāļāđ āļŦāļēāļāļāļīāļāļāļķāļ container āļāđāļāļ°āļāļķāļāļāļķāļ Docker āđāļāđāļāļāļąāļāļāļąāļāļāđāļāđ āđāļāļ·āđāļāļāļāļēāļāļĄāļĩāļāļĩāđāļāļāļĢāđāļāđāļāļāļāđāļēāļāļāļĢāļāļāļāļĨāļļāļĄ āļāļģāđāļŦāđāļāļēāļĢāļāļąāļāļāļēāļĢ container āđāļāđāļāđāļĢāļ·āđāļāļāļāđāļēāļĒ āļāļąāđāļāđāļāđāđāļāđāļāđāļāļāđāļŦāđāđāļāđāļ image āđāļāļāļāļāļķāļ Lifecycle āļāļąāđāļāļŦāļĄāļāļāļāļ container āđāļāđ
Podman āļāļ·āļāļāļ°āđāļĢ?
Podman āļāļ·āļāđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļąāļāļāļēāļĢ container āđāļāļ open-source āļāļĩāđāļāļģāļāļēāļāļāļ Linux āđāļāđāđāļāļĒāļāļĢāļ āđāļāđāļāļąāļāļāļļāļāļąāļāļāđāļĄāļĩāļāļąāļ§āļāļīāļāļāļąāđāļāļŠāļģāļŦāļĢāļąāļ Windows āļĄāļēāđāļŦāđāđāļāđāļāļēāļāđāļĨāđāļ§āđāļāđāļ§āļāļĢāđāļāļąāļāļāļĩāđāđāļāđāļ 4.x āļāļķāđāļ Podman āļāļāļāđāļāļāļĄāļēāđāļāļ·āđāļāļāļąāļāļāļē āļŠāļĢāđāļēāļ āđāļĨāļ°āļĢāļąāļ container āļāļēāļĄāļĄāļēāļāļĢāļāļēāļāļāļāļ Open Container Initiative (OCI) āđāļāļĒāļŦāļĨāļąāļāđ āđāļĨāđāļ§āļāļ·āļāđāļāđāļāļāļĩāļāļāļēāļāđāļĨāļ·āļāļāļāļāļ Docker āļĄāļĩāļāļ§āļēāļĄāļāļĨāđāļēāļĒāļāļĨāļķāļāļāļąāļāđāļĨāļ°āļāļēāļāļŠāđāļ§āļāļĒāļąāļāļāļģāļāļēāļāļĢāđāļ§āļĄāļāļąāļāđāļāđāļāļĩāļāļāđāļ§āļĒ
āđāļāļĒāļāļ°āļĄāļēāđāļāļĢāļĩāļĒāļāđāļāļĩāļĒāļ Step āļāļēāļĢāđāļāđāļāļēāļāļāļąāđāļāđāļāđāļāđāļ
āļāļąāđāļāļāļāļāļāļēāļĢāļāļīāļāļāļąāđāļ Docker Desktop
āđāļāļāļĩāđāđāļ§āđāļāđāļāļāđ Docker (https://www.docker.com/products/docker-desktop/) āļāļĨāļīāļāļāļļāđāļĄ “Download Docker Desktop” āđāļĨāļ·āļāļāđāļ§āļāļĢāđāļāļąāļāļāļĩāđāļāļĢāļāļāļąāļāļĢāļ°āļāļāļāļāļīāļāļąāļāļīāļāļēāļĢāļāļāļāđāļĢāļē
āđāļĄāļ·āđāļāļāļīāļāļāļąāđāļāđāļŠāļĢāđāļāđāļĢāļĩāļĒāļāļĢāđāļāļĒāđāļĨāđāļ§ āđāļĢāļēāļāđāļāļ°āļŠāļēāļĄāļēāļĢāļāļāļģāļāļēāļĢāđāļāļīāļāđāļāļĢāđāļāļĢāļĄ Docker Desktop āļāļķāđāļāļĄāļē
āļŦāļĨāļąāļāļāļēāļāļāļąāđāļāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļģāļāļēāļĢāļāļĢāļ§āļāļŠāļāļāļāļēāļĢāļāļģāļāļēāļāļāļāļ Docker CLI āđāļāđāđāļāļĒāļāļēāļĢāđāļāđāļāļģāļŠāļąāđāļ
docker run hello-world āđāļāļ·āđāļāļĢāļąāļ image āļŠāļģāļŦāļĢāļąāļāļāļāļŠāļāļāļāļēāļĢāļāļģāļāļēāļāļāļāļ docker
āļāļąāđāļāļāļāļāļāļēāļĢāļāļīāļāļāļąāđāļ Podman
āđāļāļāļĩāđāđāļ§āđāļāđāļāļāđ podman (https://podman.io/docs/installation) āļāļ°āļĄāļĩāļāļđāđāļĄāļ·āļāđāļāļāļēāļĢāļāļīāļāļāļąāđāļ Podman āđāļ OS āļāđāļēāļ āđ āđāļāļŠāļēāļĄāļēāļĢāļāđāļāđāļāļģāļŠāļąāđāļāļāļēāļĄāļāļđāđāļĄāļ·āļāđāļāđāđāļĨāļĒ
āđāļāđāļ brew install podman āđāļ macOS āļŦāļĢāļ·āļ sudo apt-get -y install podman āđāļ Linux āļāļēāļāļāļąāļ§ āļŦāļēāļāđāļāđāļāļāļ Windows āļŠāļēāļĄāļēāļĢāļāļāļēāļ§āļāđāđāļŦāļĨāļāļāļąāļ§āļāļīāļāļāļąāđāļāđāļāđāļāļĩāđāļĨāļīāļāļāđāļāļĩāđ https://github.com/containers/podman/releases
āļŦāļĨāļąāļāļāļēāļāļāļĩāđāđāļĢāļēāđāļāđāļāļģāļāļēāļĢ Download āđāļĨāļ°āļāļīāļāļāļąāđāļāđāļŠāļĢāđāļāđāļĢāļĩāļĒāļāļĢāđāļāļĒāđāļĨāđāļ§āđāļŦāđāļāļģāļāļēāļĢāđāļāļīāļ Terminal āļāļķāđāļāļĄāļēāđāļĨāđāļ§āđāļāđāļāļģāļŠāļąāđāļāļ§āđāļē podman machine init
āđāļāļĒ Podman Machine āđāļāđāļāļāļąāļ§āļāļąāļāļāļēāļĢāđāļāļĢāļ·āđāļāļāđāļŠāļĄāļ·āļāļ (Virtual Machine – VM) āļāļĩāđāļāļģāļŦāļāđāļēāļāļĩāđāļŠāļĢāđāļēāļāđāļāļĢāļ·āđāļāļ Linux āļāļāļēāļāđāļĨāđāļ āđāļāļ·āđāļāđāļŦāđāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļĢāļąāļ containers āđāļāđ
āđāļāļĒāļāļģāļŠāļąāđāļ podman machine init āđāļāđāļāļāļēāļĢāđāļĢāļīāđāļĄāļāđāļāļŠāļĢāđāļēāļāđāļĨāļ°āļāļąāđāļāļāđāļē (initialize) VM āļāļāļ Podman
āļŠāļīāđāļāļāļĩāđāđāļāļīāļāļāļķāđāļ:
- āļĄāļąāļāļāļ°āļāļēāļ§āļāđāđāļŦāļĨāļ VM image āļāļĩāđāđāļŦāļĄāļēāļ°āļŠāļĄ
- āļŠāļĢāđāļēāļ File System āļŠāļģāļŦāļĢāļąāļ VM
- āļāļąāđāļāļāđāļēāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļ Network
- āļŠāļĢāđāļēāļ SSH Keys āđāļāļ·āđāļāđāļāđāđāļāđāļēāļāļķāļ VM
āļāđāļāļĄāļēāđāļāđāļāļģāļŠāļąāđāļ podman machine start āđāļāļ·āđāļāļŠāļāļēāļĢāđāļ VM āļāļāļ Podman āđāļāļ·āđāļāđāļŦāđāļāļĢāđāļāļĄāđāļāđāļāļēāļ
āļŠāļīāđāļāļāļĩāđāđāļāļīāļāļāļķāđāļ:
- āļĄāļąāļāļāļ° Boot āļĢāļ°āļāļāļāļāļīāļāļąāļāļīāļāļēāļĢāļāļĩāđāļāļĒāļđāđāļ āļēāļĒāđāļ VM
- Config āđāļŦāđāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāđāļāļ·āđāļāļĄāļāđāļāđāļāđāļēāđāļāļāļąāļāļāļēāļĢ containers āļāļēāļāđāļāļĢāļ·āđāļāļ host āđāļāđ
āļŦāļēāļāļāđāļāļāļāļēāļĢāđāļāđ Podman Desktop āļāļĩāđāđāļāđāļ GUI āđāļāļ Docker Desktop āļāđāļŠāļēāļĄāļēāļĢāļāļāļģāļāļēāļĢāļāļēāļ§āļāđāđāļŦāļĨāļ āđāļāđāļāļĩāđ https://podman-desktop.io/ āļāļ°āđāļāđāđāļāļĢāđāļāļĢāļĄāļāļĩāđāļŦāļāđāļēāļāļēāđāļŦāļĄāļ·āļāļ Docker Desktop āđāļĨāļĒ
āļŦāļēāļāļāđāļāļāļāļēāļĢāļāļāļŠāļāļāļāļēāļĢāļāļģāļāļēāļāļāļāļ Podman CLI āđāļĢāļēāļāđāļŠāļēāļĄāļēāļĢāļāđāļāđāļāļģāļŠāļąāđāļ podman run hello-world āđāļāđāđāļŦāļĄāļ·āļāļāļāļąāļ
āļŠāļēāļāļīāļāļāļēāļĢāđāļāđāļāļēāļāļāļąāļāđāļāļāļāļĨāļīāđāļāļāļąāļāļāļąāļ§āļāļĒāđāļēāļ
āđāļāļĢāđāļāļāļāđ NodeJS Express
āļŠāļĢāđāļēāļ Node.JS Express Application:
mkdir my-app
cd my-app
npm init -y
npm install express
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello from my Express app in a container!');
});
app.listen(port, () => {
console.log(`Server listening on port ${port}`);
});
āļŠāļĢāđāļēāļ Dockerfile
āļ§āļīāļāļĩ build image āļāļēāļ Dockerfile āđāļāļĒāđāļāđ DockerÂ
- āđāļāļāļĩāđ directory āļāļĩāđāļĄāļĩ Dockerfile
- āļĢāļąāļāļāļģāļŠāļąāđāļ docker build
- āļĢāļ°āļāļļāļāļ·āđāļ image: docker build -t <āļāļ·āđāļ image> .
āļ§āļīāļāļĩ build image āļāļēāļ Dockerfile āđāļāļĒāđāļāđ Podman
- āđāļāļāļĩāđ directory āļāļĩāđāļĄāļĩ Dockerfile
- āļĢāļąāļāļāļģāļŠāļąāđāļ podman build
- āļĢāļ°āļāļļāļāļ·āđāļ image: podman build -t <āļāļ·āđāļ image> .
āļ§āļīāļāļĩāļĢāļąāļ Container āđāļāļĒāđāļāđ Docker
- āļĢāļąāļāļāļģāļŠāļąāđāļ docker run
- docker run <āļāļ·āđāļ image>
- āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāđāļĄāļ port āđāļāļĒāđāļāđ -p āđāļāđ: docker run -p <port host>:<port container> <āļāļ·āđāļ image>
āļ§āļīāļāļĩāļĢāļąāļ Container āđāļāļĒāđāļāđ Podman
- āļĢāļąāļāļāļģāļŠāļąāđāļ podman run
- podman run <āļāļ·āđāļ image>
- āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāđāļĄāļ port āđāļāļĒāđāļāđ -p āđāļāđ: podman run -p <port host>:<port container> <āļāļ·āđāļ image>
āļāļĢāļ§āļāļŠāļāļāļ§āđāļē Container āļāļĩāđāđāļĢāļēāļŠāļąāđāļāļĢāļąāļāļĄāļąāļāļāļģāļāļēāļāļāļĢāļīāļāļŦāļĢāļ·āļāļāđāļēāļ§?
āđāļāļīāļāđāļāļĢāļēāļ§āđāđāļāļāļĢāđāđāļĨāđāļ§āđāļāđāļē http://localhost:3000 āļāļļāļāļāļ§āļĢāļāļ°āđāļŦāđāļāļāđāļāļāļ§āļēāļĄ āļāļąāļāļāļĩāđāđāļāđāļāļāļāļāļāļĩāđāļĢāļąāļāļāđāļēāļ Docker
āđāļāļīāļāđāļāļĢāļēāļ§āđāđāļāļāļĢāđāđāļĨāđāļ§āđāļāđāļē http://localhost:3001 āļāļļāļāļāļ§āļĢāļāļ°āđāļŦāđāļāļāđāļāļāļ§āļēāļĄ āļāļąāļāļāļĩāđāđāļāđāļāļāļāļāļāļĩāđāļĢāļąāļāļāđāļēāļ Podman
āļāļĢāļ§āļāļŠāļāļ Container āļāļĩāđāļāļģāļĨāļąāļāļĢāļąāļāļāļĒāļđāđāļāđāļēāļāđāļāļĢāđāļāļĢāļĄāļāļĩāđāđāļāđāļ GUI
āļāļ Docker DesktopÂ
āļāļ Podman DesktopÂ
āļŦāļĄāļēāļĒāđāļŦāļāļļāļāļ°āđāļŦāđāļāđāļāđāļ§āđāļē Container āļāļĩāđāļāļđāļāļĢāļąāļāđāļ Docker āļāļ°āđāļĄāđāļĄāļēāđāļŠāļāļāđāļ Podman āđāļĨāļ° Container āđāļ Podman āļāđāđāļāđāļāļāļąāļ
āļāļĢāļ§āļāļŠāļāļ Container āļāļĩāđāļāļģāļĨāļąāļāļĢāļąāļāļāļĒāļđāđāļāđāļēāļ CLIÂ
Docker āđāļāđāļāļģāļŠāļąāđāļ: docker ps āļŦāļĢāļ·āļ docker container lsÂ
Podman āđāļāđāļāļģāļŠāļąāđāļ: podman ps āļŦāļĢāļ·āļ podman container lsÂ
āļŦāļĒāļļāļ Container
Docker āđāļāđāļāļģāļŠāļąāđāļ: docker stop<āļāļ·āđāļ Container āļŦāļĢāļ·āļ Id āļāļāļ Container>
āļāļąāļ§āđāļĨāļ·āļāļ:
- docker stop <āļāļ·āđāļ Container āļŦāļĢāļ·āļ Id āļāļāļ Container> āļŦāļĒāļļāļāđāļāļāļāļļāđāļĄāļāļ§āļĨ
- docker kill <āļāļ·āđāļ Container āļŦāļĢāļ·āļ Id āļāļāļ Container> āļāļąāļāļāļąāļāļŦāļĒāļļāļ
Podman āđāļāđāļāļģāļŠāļąāđāļ: podman stop<āļāļ·āđāļ Container āļŦāļĢāļ·āļ Id āļāļāļ Container>
āļāļąāļ§āđāļĨāļ·āļāļ:
- podman stop <āļāļ·āđāļ Container āļŦāļĢāļ·āļ Id āļāļāļ Container> āļŦāļĒāļļāļāđāļāļāļāļļāđāļĄāļāļ§āļĨ
- podman kill <āļāļ·āđāļ Container āļŦāļĢāļ·āļ Id āļāļāļ Container> āļāļąāļāļāļąāļāļŦāļĒāļļāļ
āļĢāļēāļĒāļāļēāļĢ Container āļāļąāđāļāļŦāļĄāļāļĢāļ§āļĄāļāļķāļāļāļĩāđāļŦāļĒāļļāļāļĢāļąāļāđāļāđāļĨāđāļ§Â
Docker āđāļāđāļāļģāļŠāļąāđāļ: docker ps -a āļŦāļĢāļ·āļÂ docker container ls -aÂ
Podman āđāļāđāļāļģāļŠāļąāđāļ: podman ps -a āļŦāļĢāļ·āļÂ podman container ls -aÂ
āļĨāļ ContainerÂ
Docker āđāļāđāļāļģāļŠāļąāđāļ docker rm <āļāļ·āđāļ Container āļŦāļĢāļ·āļ Id āļāļāļ Container>
Podman āđāļāđāļāļģāļŠāļąāđāļ podman rm <āļāļ·āđāļ Container āļŦāļĢāļ·āļ Id āļāļāļ Container>
āđāļĢāļĩāļĒāļāļāļđ image āļāļĩāđāļĄāļĩāļāļĒāļđāđāļāļąāđāļāļŦāļĄāļÂ
Docker āđāļāđāļāļģāļŠāļąāđāļ docker images
Podman āđāļāđāļāļģāļŠāļąāđāļ podman images
āļĨāļ Image āļāļĩāđāļāđāļāļāļāļēāļĢ
Docker āđāļāđāļāļģāļŠāļąāđāļ docker rmi <āļāļ·āđāļ Container āļŦāļĢāļ·āļ Id āļāļāļ Container>
Podman āđāļāđāļāļģāļŠāļąāđāļ podman rmi <āļāļ·āđāļ Container āļŦāļĢāļ·āļ Id āļāļāļ Container>
āļāļēāļāļāļąāļ§āļāļĒāđāļēāļāļāļēāļĢāđāļāđāļāļēāļāļāļ°āđāļŦāđāļāđāļāđāļ§āđāļē Docker āđāļĨāļ° Podman āđāļāđāļāđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļĩāđāđāļāđāļŠāļģāļŦāļĢāļąāļāļāļąāļāļāļēāļĢāļāļāļāđāļāļāđāļāļāļĢāđ āļāļĩāđāļĄāļĩāļāļ§āļēāļĄāļāļĨāđāļēāļĒāļāļĨāļķāļāļāļąāļāļĄāļēāļ āđāļĄāđāļāļĢāļ°āļāļąāđāļāļāļģāļŠāļąāđāļāļāđāļēāļ āđ āđāļāđāļāđāļāđāļāļāļāđāļēāļāļāļĩāđāļŠāļģāļāļąāļāļāļ°āļāļĒāļđāđāļāļĩāđÂ
āļāļēāļĢāđāļĢāļĩāļĒāļāđāļāđāļāļēāļ
- Docker: āļāđāļāļāđāļāđ daemon āđāļĒāļāļāđāļēāļāļŦāļēāļ
Podman: āđāļĄāđāļāđāļāļāđāļāđ daemon
āđāļāđāļĄāļĩāļŦāļĄāļēāļĒāđāļŦāļāļļāļāļīāļāļŦāļāđāļāļĒ
- Podman āđāļāđāļāđāļāļĢāļ·āđāļāļāļĄāļ·āļāđāļŦāļĄāđāļāļ§āđāļē Docker āļĒāļąāļāļāļĒāļđāđāđāļāļāđāļ§āļāļāļąāļāļāļē āļāļđāđāļĄāļ·āļāļāļēāļāļāļ°āļāđāļāļĒāļāļ§āđāļē
- Docker āđāļāđāļāđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļĩāđāđāļāđāļĢāļąāļāļāļ§āļēāļĄāļāļīāļĒāļĄ āļĄāļĩāļāļđāđāđāļāđāļĄāļēāļāļāļ§āđāļē āđāļāļ·āđāļāļŦāļēāļāđāļēāļ āđ āļāđāļāļ°āđāļĒāļāļ°āļāļ§āđāļē
āļŠāļĢāļļāļāđāļāđāļ§āđāļēāļŠāļģāļŦāļĢāļąāļāđāļāļĢāļāļĩāđāļāļļāđāļāļāļīāļāļāļąāļ Docker āļāļĒāļđāđāđāļĨāđāļ§ āļŠāļēāļĄāļēāļĢāļāđāļĒāļāđāļāđāļāđ Podman āļŦāļĢāļ·āļ āļŠāļĨāļąāļāļĄāļēāđāļāļĄāļēāđāļāļāļēāļĢāđāļāđ Docker āđāļāđāđāļāļĒāđāļāļāđāļĄāđāļāđāļāļāļāļĢāļąāļāļāļąāļ§ āđāļāđāļāđāļēāđāļāļĢāļĒāļąāļāđāļĄāđāđāļāļĒāļāļļāđāļāļāļīāļ āļāļĄāđāļāļ°āļāļģāļāļēāļāđāļĨāļ·āļāļāļāļĩ āđ āļāļąāļāļāļāļĢāđāļŠāđāļĢāļĩāļĒāļ Docker & Container Technology āļāļēāļāļāļēāļ BorntoDev āļāļĩāđāļāļ°āļāļģāđāļŦāđāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāđāļāđāļāļēāļ Docker āđāļāļāļēāļĢ āļŠāļĢāđāļēāļ, āļāļąāļāļāļēāļĢ, āđāļĨāļ°āļāļĢāļ°āļĒāļļāļāļāđāđāļāđāļāļēāļ Container āđāļāđāļāļĒāđāļēāļāļĄāļąāđāļāđāļ
āļŠāļāđāļāļāđāļēāļāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāđāļāļīāđāļĄāđāļāļīāļĄāđāļāđāļāļĩāđ
https://school.borntodev.com/course/docker-container-technology