نحوه نصب و استفاده از داکر در CentOS 7

مقدمه نصب داکر در centos

مقاله پیش رو نصب داکر در centOS را توضیح می دهد. Docker ابزاری است که اجرای فرآیندهای برنامه را در یک کانتینر ساده و آسان می‌کند و مانند ماشین‌های مجازی هستند، فقط قابل حمل‌تر، منابع دوستانه‌تر و بیشتر به سیستم عامل میزبان وابسته هستند.

دو روش برای نصب Docker بر روی CentOS 7 وجود دارد. یک روش شامل نصب آن بر روی یک نصب موجود از سیستم عامل است. مورد دیگر شامل چرخاندن یک سرور با ابزاری به نام Docker Machine است که Docker را به طور خودکار روی آن نصب می کند.

در این آموزش، نحوه نصب و استفاده از آن را بر روی یک نصب موجود از CentOS 7 خواهید آموخت.

مرحله 1 – نحوه نصب Docker

بسته نصبی Docker موجود در مخزن رسمی CentOS 7 ممکن است آخرین نسخه نباشد. به منظور نصب داکر در centos و برای دریافت آخرین و بهترین نسخه، Docker را از مخزن رسمی Docker نصب کنید. این بخش به شما نشان می دهد که چگونه این کار را انجام دهید. ابتدا، بیایید پایگاه داده بسته را به روز کنیم:

sudo yum check-update

حالا این دستور را اجرا کنید. مخزن رسمی Docker را اضافه می کند، آخرین نسخه Docker را دانلود کرده و آن را نصب می کند:

curl -fsSL https://get.docker.com/ | sh

پس از اتمام نصب، Daemon Docker را راه اندازی کنید:

sudo systemctl start docker

بررسی کنید که در حال اجرا است:

sudo systemctl status docker

خروجی باید مشابه موارد زیر باشد و نشان دهد که سرویس فعال و در حال اجرا است:

docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2023-03-12 17:44:04 +0330; 30min ago
     Docs: https://docs.docker.com
 Main PID: 6120 (dockerd)
   CGroup: /system.slice/docker.service
           └─6120 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

در نهایت، مطمئن شوید که در هر راه اندازی مجدد سرور شروع می شود:

sudo systemctl enable docker

اکنون با نصب Docker نه تنها سرویس Docker (دمون) بلکه docker ابزار خط فرمان یا کلاینت Docker را نیز در اختیار شما قرار می دهد. dockerدر ادامه این آموزش نحوه استفاده از دستور را بررسی خواهیم کرد .

مرحله 2 – اجرای دستور Docker بدون Sudo (اختیاری)

به‌طور پیش‌فرض، اجرای docker به دسترسی روت نیاز دارد – یعنی باید پیشوند دستور را با sudoاجرا نمایید. همچنین می تواند توسط یک کاربر در گروه docker اجرا شود که به طور خودکار در هنگام نصب Docker ایجاد می شود. اگر بخواهید docker دستور را بدون پیشوند با sudoیا بدون قرار گرفتن در گروه docker اجرا کنید، خروجی مانند زیر دریافت خواهید کرد:

Output
         docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.

اگر می خواهید sudo هر زمان که دستور را اجرا می کنید از تایپ کردن خودداری کنید docker، نام کاربری خود را به گروه docker اضافه کنید:

sudo usermod -aG docker $(whoami)

برای فعال کردن این تغییر، باید از Droplet خارج شوید و به عنوان همان کاربر دوباره وارد شوید.

اگر می‌خواهید کاربری را به docker گروهی اضافه کنید که با آن وارد نشده‌اید، نام کاربری آن را صریحاً با استفاده از دستور زیر وارد نمایید:

sudo usermod -aG docker username

بقیه این مقاله فرض می کند که شما docker را به عنوان یک کاربر در گروه کاربر docker اجرا می کنید. اگر نمی‌خواهید، لطفاً دستورات را با sudo اجرا نمایید.

مرحله 3 – نحوه نصب داکر در centos و استفاده از دستور Docker

با نصب و کار کردن Docker، اکنون زمان آن است که با ابزار خط فرمان آشنا شوید. استفاده dockerاز ارسال زنجیره ای از گزینه ها و دستورات فرعی به دنبال آن آرگومان است. نحوه کار به این شکل است:

docker [option] [command] [arguments]

برای مشاهده تمام دستورات فرعی موجود، تایپ کنید:

docker

از Docker 23.0.1، لیست کاملی از دستورات فرعی موجود شامل موارد زیر است:

 attach    Attach to a running container
    build     Build an image from a Dockerfile
    commit    Create a new image from a container's changes
    cp        Copy files/folders between a container and the local filesystem
    create    Create a new container
    diff      Inspect changes on a container's filesystem
    events    Get real time events from the server
    exec      Run a command in a running container
    export    Export a container's filesystem as a tar archive
    history   Show the history of an image
    images    List images
    import    Import the contents from a tarball to create a filesystem image
    info      Display system-wide information
    inspect   Return low-level information on a container or image
    kill      Kill a running container
    load      Load an image from a tar archive or STDIN
    login     Log in to a Docker registry
    logout    Log out from a Docker registry
    logs      Fetch the logs of a container
    network   Manage Docker networks
    pause     Pause all processes within a container
    port      List port mappings or a specific mapping for the CONTAINER
    ps        List containers
    pull      Pull an image or a repository from a registry
    push      Push an image or a repository to a registry
    rename    Rename a container
    restart   Restart a container
    rm        Remove one or more containers
    rmi       Remove one or more images
    run       Run a command in a new container
    save      Save one or more images to a tar archive
    search    Search the Docker Hub for images
    start     Start one or more stopped containers
    stats     Display a live stream of container(s) resource usage statistics
    stop      Stop a running container
    tag       Tag an image into a repository
    top       Display the running processes of a container
    unpause   Unpause all processes within a container
    update    Update configuration of one or more containers
    version   Show the Docker version information
    volume    Manage Docker volumes
    wait      Block until a container stops, then print its exit code

برای مشاهده سوئیچ های موجود برای یک دستور خاص، تایپ کنید:

docker docker-subcommand --help

برای مشاهده اطلاعات کل سیستم:

docker info

مرحله 4 – کار با Docker Images

کانتینرهای داکر از Image های داکر اجرا می شوند. به طور پیش فرض، این تصاویر را از Docker Hub، یک رجیستری Docker که توسط Docker، شرکتی که پروژه Docker را مدیریت می کند، دریافت می کند. هرکسی می‌تواند تصاویر Docker خود را در Docker Hub بسازد و میزبانی کند، بنابراین اکثر برنامه‌ها و توزیع‌های لینوکس برای اجرای کانتینرهای Docker نیاز دارید که تصاویری دارند که در Docker Hub میزبانی می‌شوند.

برای بررسی اینکه نصب داکر در centos قابل انجام است و آیا می‌توانید به ایمیج از Docker Hub دسترسی داشته باشید و آن‌ها را دانلود کنید، تایپ کنید:

docker run hello-world

خروجی، که باید شامل موارد زیر باشد، باید نشان دهد که Docker به درستی کار می کند:

Output
         Hello from Docker.
This message shows that your installation appears to be working correctly.

با استفاده از دستور زیر فرمان می توانید ایمیج موجود در Docker Hub را جستجو کنید. به عنوان مثال، برای جستجوی ایمیج CentOS، تایپ کنید:

docker search centos

اسکریپت Docker Hub را می‌خزد و فهرستی از تمام ایمیج هایی که نام آنها با رشته جستجو مطابقت دارد را برمی‌گرداند. در این حالت خروجی مشابه این خواهد بود:

Output
         NAME                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                          The official build of CentOS.                   2224      [OK]       
jdeathe/centos-ssh              CentOS-6 6.7 x86_64 / CentOS-7 7.2.1511 x8...   22                   [OK]
jdeathe/centos-ssh-apache-php   CentOS-6 6.7 x86_64 / Apache / PHP / PHP M...   17                   [OK]
million12/centos-supervisor     Base CentOS-7 with supervisord launcher, h...   11                   [OK]
nimmis/java-centos              This is docker images of CentOS 7 with dif...   10                   [OK]
torusware/speedus-centos        Always updated official CentOS docker imag...   8                    [OK]
nickistre/centos-lamp           LAMP on centos setup                            3                    [OK]

در ستون OFFICIAL ، OK ایمیجی را نشان می دهد که توسط شرکت پشتیبان پروژه ساخته و پشتیبانی می شود. هنگامی که ایمیجی را که می خواهید استفاده کنید شناسایی کردید، می توانید آن را با استفاده از pull دستور فرعی در رایانه خود بارگیری کنید، مانند:

docker pull centos

پس از بارگیری یک ایمیج، می توانید با استفاده از ایمیج دانلود شده با run دستور فرعی، یک کانتینر را اجرا کنید. docker اگر هنگام اجرای دستور فرعی ایمیجی دانلود نشده باشد، سرویس گیرنده Docker ابتدا ایمیج را دانلود می کند، سپس یک کانتینر را با استفاده از آن اجرا می کند:

docker run centos

برای مشاهده ایمیج هایی که در رایانه شما دانلود شده اند، تایپ کنید:

docker images

مرحله 5 – اجرای یک Docker Container

با نصب داکر در centos کانتینری hello-world که در مرحله قبل اجرا کردید نمونه ای از کانتینری است که پس از ارسال یک پیام آزمایشی اجرا می شود و خارج می شود. با این حال، کانتینرها می توانند بسیار مفیدتر از آن باشند و می توانند تعاملی باشند. پس از همه، آنها شبیه به ماشین های مجازی هستند، فقط منابع دوستانه تر هستند.

به عنوان مثال، اجازه دهید یک کانتینر را با استفاده از آخرین ایمیج CentOS اجرا کنیم. ترکیب سوئیچ های -i و -t به شما امکان دسترسی تعاملی پوسته به کانتینر را می دهد:

docker run -it centos

خط فرمان شما باید تغییر کند تا این واقعیت را منعکس کند که اکنون در داخل کانتینر کار می کنید و باید به این شکل باشد:

          Output
         [root@59839a1b7de2 /]#

هم اکنون داخل کانتینر موردنظر هستید و می توانید دستورات را داخل آن اضافه نمایید: به عنوان مثال، اجازه دهید سرور MariaDB را در کانتینر در حال اجرا نصب کنیم. نیازی به پیشوند sudoنیست:

yum install mariadb-server

مرحله 6 – انجام تغییرات در یک کانتینر به یک ایمیج Docker

پس از نصب داکر در centos و هنگامی که یک ایمیج Docker را راه اندازی می کنید، می توانید مانند یک ماشین مجازی فایل ها را ایجاد، اصلاح و حذف کنید. تغییراتی که ایجاد می کنید فقط برای آن کانتینر اعمال می شود. شما می توانید آن را شروع و متوقف کنید، اما هنگامی که آن را با docker rm دستور از بین ببرید، تغییرات برای همیشه از بین می روند.

این بخش به شما نشان می دهد که چگونه وضعیت یک کانتینر را به عنوان یک ایمیج داکر جدید ذخیره کنید.

پس از نصب سرور MariaDB در داخل کانتینر CentOS، اکنون یک کانتینر در حال اجرا از یک ایمیج هستید، اما کانتینر با ایمیج که برای ایجاد آن استفاده کرده اید متفاوت است.

برای ذخیره وضعیت کانتینر به عنوان یک ایمیج جدید، ابتدا از آن خارج شوید:

exit

سپس با استفاده از دستور زیر تغییرات را در یک نمونه ایمیج جدید Docker انجام دهید. سوئیچ -m برای پیام commit است که به شما و دیگران کمک می کند تا بدانید چه تغییراتی ایجاد کرده اید، در حالی که -a برای تعیین نویسنده استفاده می شود.

docker commit -m "What did you do to the image" -a "Author Name" container-id repository/new_image_name

مثلا:

docker commit -m "added mariadb-server" -a "Sunday Ogwu-Chinuwa" 59839a1b7de2 finid/centos-mariadb

پس از تکمیل این عملیات، فهرست کردن ایمیج Docker اکنون در رایانه شما باید ایمیج جدید و همچنین ایمیج قدیمی که از آن مشتق شده است را نشان دهد:

docker images

خروجی باید از این نوع باشد:

Output
         REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
finid/centos-mariadb   latest              23390430ec73        6 seconds ago       424.6 MB
centos                 latest              778a53015523        5 weeks ago         196.7 MB
hello-world            latest              94df4f0ce8a4        2 weeks ago         967 B

در مثال بالا، centos-mariadb ایمیج جدیدی است که از ایمیج CentOS موجود از Docker Hub مشتق شده است. تفاوت اندازه نشان دهنده تغییرات ایجاد شده است. و در این مثال تغییر این بود که MariaDB نصب شده بود. بنابراین دفعه بعد که نیاز دارید یک کانتینر را با استفاده از CentOS با سرور MariaDB از پیش نصب شده اجرا کنید، فقط می توانید از ایمیج جدید استفاده کنید. همچنین ممکن است ایمیج از فایل هایی که Dockerfile نامیده می شود ساخته شوند.

مرحله 7 – فهرست کردن کانتینرهای Docker

پس از مدتی استفاده از Docker، کانتینرهای فعال (در حال اجرا) و غیرفعال زیادی در رایانه خود خواهید داشت. برای مشاهده موارد فعال از:

docker ps

خروجی مشابه زیر را خواهید دید:

Output
         CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
         i7c79cc556dd        centos              "/bin/bash"         3 hours ago         Up 3 hours                              silly_spence

برای مشاهده همه کانتینرها – فعال و غیرفعال، -aسوئیچ را به آن اضافه کنید:

docker ps -a

برای مشاهده آخرین کانتینری که ایجاد کرده اید، -lسوئیچ را به آن منتقل کنید:

docker ps -l

توقف یک کانتینر در حال اجرا یا فعال به سادگی تایپ کردن است:

docker stop container-id

container-id را می توان در خروجی docker ps دستور یافت.

نتیجه

مطالب Docker بسیار بیشتر از آنچه در این مقاله ارائه شد وجود دارد، اما این مقاله برای شروع کار با آن در CentOS 7 کافی می باشد. مانند بسیاری از پروژه های منبع باز، Docker از یک پایگاه کد در حال توسعه سریع ساخته شده است، که می توانید از سایت منبع آخرین اطلاعات را بررسی نمایید.

خروج از نسخه موبایل