Ubuntu 22.04
Sponsored Link

Podman : Docker Compose का प्रयोग करें2023/09/04

 
Docker Compose को स्थापित करने के लिए, Docker एप्लिकेशन के रूप में एकाधिक कंटेनरों को कॉन्फ़िगर करना और चलाना आसान है।
Docker Compose Podman 3.0 या उसके बाद के संस्करण पर समर्थित है।
[1]
[2] Docker Compose इंस्टॉल करें।
root@dlp:~#
curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
root@dlp:~#
chmod 755 /usr/local/bin/docker-compose
root@dlp:~#
docker-compose --version

docker-compose version 1.29.2, build 5becea4c
root@dlp:~#
podman version

Version:      3.4.4
API Version:  3.4.4
Go Version:   go1.17.3
Built:        Thu Jan  1 00:00:00 1970
OS/Arch:      linux/amd64
[3] उदाहरण के लिए, Docker Compose के साथ एक एप्लिकेशन को कॉन्फ़िगर करें जिसमें वेब और DB सेवाएँ हैं।
# podman.socket प्रारंभ करें

root@dlp:~#
systemctl start podman.socket
# वेब सेवा कंटेनर को परिभाषित करें

root@dlp:~#
vi Dockerfile
FROM ubuntu
MAINTAINER ServerWorld <admin@srv.world>

RUN apt-get update
RUN apt-get -y install nginx
RUN echo "Compose Test on Nginx" > /var/www/html/index.html

EXPOSE 80
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]

# एप्लिकेशन कॉन्फ़िगरेशन को परिभाषित करें

root@dlp:~#
vi docker-compose.yml
version: '3'
services:
  db:
    image: docker.io/library/mariadb
    volumes:
      - /var/lib/containers/disk01:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_USER: ubuntu
      MYSQL_PASSWORD: password
      MYSQL_DATABASE: ubuntu_db
    ports:
      - "3306:3306"
  web:
    build: .
    ports:
      - "80:80"
    volumes:
      - /var/lib/containers/disk02:/usr/share/nginx/html

# बनाएं और चलाएं

root@dlp:~#
docker-compose up -d

Creating network "root_default" with the default driver
Building web
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
STEP 1/7: FROM ubuntu
STEP 2/7: MAINTAINER ServerWorld <admin@srv.world>
--> Using cache b51cc134aaf4cc8417d597b728187776ae8e480ae9a5231f662df47aae099735
--> b51cc134aaf
STEP 3/7: RUN apt-get update
.....
.....
Creating root_web_1 ... done
Creating root_db_1  ... done

root@dlp:~#
podman ps

CONTAINER ID  IMAGE                             COMMAND               CREATED             STATUS                 PORTS                   NAMES
337ca00a77c6  localhost/root_web:latest         /usr/sbin/nginx -...  About a minute ago  Up About a minute ago  0.0.0.0:80->80/tcp      root_web_1
d2b9f660161d  docker.io/library/mariadb:latest  mariadbd              About a minute ago  Up About a minute ago  0.0.0.0:3306->3306/tcp  root_db_1

# पहुंच सत्यापित करें

root@dlp:~#
mysql -h 127.0.0.1 -u root -p -e "show variables like 'hostname';"

Enter password:
+---------------+--------------+
| Variable_name | Value        |
+---------------+--------------+
| hostname      | d2b9f660161d |
+---------------+--------------+

root@dlp:~#
mysql -h 127.0.0.1 -u ubuntu -p -e "show databases;"

Enter password:
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ubuntu_db          |
+--------------------+

root@dlp:~#
curl 127.0.0.1

Compose Test on Nginx
[4] Docker Compose के अन्य बुनियादी संचालन इस प्रकार हैं।
# कंटेनरों की स्थिति सत्यापित करें

root@dlp:~#
docker-compose ps

   Name                 Command               State        Ports
---------------------------------------------------------------------
root_db_1    docker-entrypoint.sh mariadbd    Up      :3306->3306/tcp
root_web_1   /usr/sbin/nginx -g daemon off;   Up      :80->80/tcp

# कंटेनरों के लॉग दिखाएं

root@dlp:~#
docker-compose logs

Attaching to root_web_1, root_db_1
db_1   | 2022-04-28 06:47:01+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.7.3+maria~focal started.
db_1   | 2022-04-28 06:47:01+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
db_1   | 2022-04-28 06:47:01+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.7.3+maria~focal started.
db_1   | 2022-04-28 06:47:01+00:00 [Note] [Entrypoint]: Initializing database files
.....
.....
db_1   | 2022-04-28  6:47:11 0 [Note] Server socket created on IP: '::'.
db_1   | 2022-04-28  6:47:11 0 [Note] mariadbd: ready for connections.
db_1   | Version: '10.7.3-MariaDB-1:10.7.3+maria~focal'  socket: '/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution

# किसी कंटेनर के अंदर कोई भी कमांड चलाएँ
# कंटेनर नाम [docker-compose.yml] में केवल एक सेट है

root@dlp:~#
docker-compose exec db /bin/bash

Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
root@d2b9f660161d:/#

# एप्लिकेशन बंद करें और सभी कंटेनर भी बंद करें

root@dlp:~#
docker-compose stop

Stopping root_web_1 ... done
Stopping root_db_1  ... done

# एप्लिकेशन में अकेले एक सेवा प्रारंभ करें
# यदि निर्भरता सेट की जाती है, तो अन्य कंटेनर प्रारंभ हो जाता है

root@dlp:~#
docker-compose up -d web

Starting root_web_1 ... done
root@dlp:~#
docker-compose ps

   Name                 Command               State         Ports
----------------------------------------------------------------------
root_db_1    docker-entrypoint.sh mariadbd    Exit 0   :3306->3306/tcp
root_web_1   /usr/sbin/nginx -g daemon off;   Up       :80->80/tcp

# एप्लिकेशन में मौजूद सभी कंटेनर हटा दें
# यदि कोई कंटेनर चल रहा है, तो उसे हटाया नहीं जाएगा

root@dlp:~#
docker-compose rm

Going to remove root_db_1
Are you sure? [yN] y
Removing root_db_1 ... done
मिलान सामग्री