آموزش نصب داکر Docker در Ubuntu 16.04 - وان سرور آکـادمی
داکر اوبنتو

آموزش نصب داکر Docker در Ubuntu 16.04

زمان تقریبی مطالعه: 8 دقیقه

آموزش نصب داکر Docker در Ubuntu 16.04

داکر چیست؟

Docker ( داکر ) یک سکوی متن باز برای ساخت، طراحی و اجرای اپلیکیشن های توزیع شده است . توسط داکر می توانید اپلیکیشن های خود را سریع تر و راحت تر منتشر کنید. Docker به صورتی عمل می کند که عملیات بسته بندی ، حمل و توسعه هر برنامه کاربردی که به صورت سبک و قابل حمل ایجاد شده است را بطور خودکار انجام دهد. از دیگر ویژگی های این پلتفرم، امکان گسترش سرویس های قابل توسعه به شیوه ای امن و قابل اعتماد در طیف گسترده ای از پلتفرم ها است. از دیگرقابلیت های داکر می توان به انتقال اپلیکیشن ها و انعطاف پذیری زیر ساخت، به روز رسانی پویا و ایجاد تغییرات در لحظه را نام برد.

محبوبیت داکر

این روزها داکر و Moby که به عنوان مجموعه بالاسری داکر شناخته می‌شود، مخاطبین بسیار زیادی جذب کرده و بنا به گزارش داکر چیزی بیشتر از ۳.۵ اپلیکیشن در کانتینرها از طریق فناوری داکر قرار دارند و بیشتر از ۳.۷ میلیارد اپلیکیشن از این طریق دانلود شده است.

این موارد باعث شده است بزرگانی مانند ردهت، کنونیکال، اوراکل و مایکروسافت نیز به استفاده از داکر گرایش پیدا کنند و در حال حاضر تقریباً تمامی بزرگان حاضر در بستر رایانش ابری به نوعی از داکر استفاده می‌کنند.

در این آموزش ، نحوه نصب و استفاده از آن را در اوبونتو 16.04 یاد خواهید گرفت.

پیش نیاز ها

برای دنبال کردن این آموزش به موارد زیر نیاز دارید:

مرحله 1 – نصب Docker

برای دریافت سرورهای ubuntu 16.04 تحویل آنی کلیک کنید

ابتدا باید با استفاده از کلید GPG مخازن اصلی داکر را به سیستم عامل اضافه میکنیم:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

مخزن Docker را به منابع APT اضافه میکنیم:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

سپس ، پایگاه داده بسته را با بسته های Docker از repo تازه اضافه شده به روز میکنیم:

sudo apt-get update

اطمینان حاصل کنید که به جای repo پیش فرض Ubuntu 16.04 می توانید از repo داکر را نصب کنید:

apt-cache policy docker-ce

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

docker-ce:
  Installed: (none)
  Candidate: 18.06.1~ce~3-0~ubuntu
  Version table:
     18.06.1~ce~3-0~ubuntu 500
        500 https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages

توجه کنید که docker-ce نصب نشده است! اما مخزن Docker برای Ubuntu 16.04 (xenial) فعال میباشد.

و حال با دستور زیر داکر را نصب میکنیم:

sudo apt-get install -y docker-ce

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

sudo systemctl status docker

مرحله 2 – استفاده از دستورات داکر

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

docker [option] [command] [arguments]
docker

مطابق با Docker 18.06.1 ، لیست کاملی از دستورات موجود شامل موارد زیر نمایان میشود:

Output

  attach      Attach local standard input, output, and error streams 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 to files or directories 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 Docker objects
  kill        Kill one or more running containers
  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
  pause       Pause all processes within one or more containers
  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 one or more containers
  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 (streamed to STDOUT by default)
  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 one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

برای مشاهده راهنمای هر دستور زیر مجموعه موجود:

docker docker-subcommand --help

برای مشاهده اطلاعات بیشتر Docker ، از دستور زیر استفاده کنید:

docker info

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

در اینجا مراحل نصب یک image یا تمپلت آماده ای از یک پروژه که در Docker Hub به اشتراک در آمده گفته خواهد شد، این روند برای اشتراک گذاری و استفاده راحت برنامه ها و اسکریپتها در سطح عموم و خصوصی مورد استفاده قرار میگیرد،
نمونه ساده ای از این ایمیج داکر برای تست میتوانید از دستور زیر استفاده کنید:

docker run hello-world

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

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

با استفاده از دستور docker و دستور زیر مجموعه search میتوانید در مجموعه image docker پروژه بخصوص را جستجو کنید، به عنوان مثال با دستور زیر پروژه های مربوط به Ubuntu را جستجو میکنیم:

docker search ubuntu

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

Output

NAME                                                   DESCRIPTION                                     STARS            OFFICIAL            AUTOMATED
ubuntu                                                 Ubuntu is a Debian-based Linux operating sys…   8564                [OK]                
dorowu/ubuntu-desktop-lxde-vnc                         Ubuntu with openssh-server and NoVNC            230                                     [OK]
rastasheep/ubuntu-sshd                                 Dockerized SSH service, built on top of offi…   176                                     [OK]
consol/ubuntu-xfce-vnc                                 Ubuntu container with "headless" VNC session…   129                                     [OK]
ansible/ubuntu14.04-ansible                            Ubuntu 14.04 LTS with ansible                   95                                      [OK]
ubuntu-upstart                                         Upstart is an event-based replacement for th…   91                  [OK]                
neurodebian                                            NeuroDebian provides neuroscience research s…   54                  [OK]                
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5   ubuntu-16-nginx-php-phpmyadmin-mysql-5          48                                      [OK]
ubuntu-debootstrap                                     debootstrap --variant=minbase --components=m…   39                  [OK]                
nuagebec/ubuntu                                        Simple always updated Ubuntu docker images w…   23                                      [OK]
tutum/ubuntu                                           Simple Ubuntu docker images with SSH access     18                                      
i386/ubuntu                                            Ubuntu is a Debian-based Linux operating sys…   14                                      
1and1internet/ubuntu-16-apache-php-7.0                 ubuntu-16-apache-php-7.0                        13                                      [OK]
ppc64le/ubuntu                                         Ubuntu is a Debian-based Linux operating sys…   12                                      
eclipse/ubuntu_jdk8                                    Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, …   6                                       [OK]
1and1internet/ubuntu-16-nginx-php-5.6-wordpress-4      ubuntu-16-nginx-php-5.6-wordpress-4             6                                       [OK]
codenvy/ubuntu_jdk8                                    Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, …   4                                       [OK]
darksheer/ubuntu                                       Base Ubuntu Image -- Updated hourly             4                                       [OK]
pivotaldata/ubuntu                                     A quick freshening-up of the base Ubuntu doc…   2                                       
1and1internet/ubuntu-16-sshd                           ubuntu-16-sshd                                  1                                       [OK]
smartentry/ubuntu                                      ubuntu with smartentry                          1                                       [OK]
ossobv/ubuntu                                          Custom ubuntu image from scratch (based on o…   0                                       
paasmule/bosh-tools-ubuntu                             Ubuntu based bosh-cli                           0                                       [OK]
1and1internet/ubuntu-16-healthcheck                    ubuntu-16-healthcheck                           0                                       [OK]
pivotaldata/ubuntu-gpdb-dev                            Ubuntu images for GPDB development              0                                       


در ستون OFFICIAL گزینه های [ ok ] نشانگر این میباشد که این image توسط شرکت پشتیبانی ساخته و پشتیبانی میشود.
پس از شناسایی image مورد نظر با استفاده از دستور pull میتوانید آن را در سیستم عامل خود دانلود کنید:

docker pull ubuntu

بعد از بارگیری یک image ، می توانید یک محتوا را با استفاده از image بارگیری شده با دستور زیرمجموع run اجرا کنید:

docker run ubuntu

با دستور زیر تمام image هایی که در داکر نصب شده را نشان میدهد:

docker images

Output
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              ea4c82dcd15a        16 hours ago        85.8MB
hello-world         latest              4ab4c602aa5e        5 weeks ago         1.84kB

همانطور که در بخش های بعد توضیح داده خواهد شد با استفاده از Docker Hub شما میتوانید پروژه image که به داکر اضافه کردید را تغییر و بروزرسانی کنید. برای این کار باید در داکر هاب عضو شوید

مرحله 4 – مدیریت محتوای پروژه های داکر

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

docker ps

Output
CONTAINER ID        IMAGE               COMMAND             CREATED             

در این آموزش سه پروژه نصب شده، یکی hello-world و دو پروژه در مورد اوبنتو، که در حال اجرا نیستن و در مجازی ساز داکر شما موجود میباشد.
برای مشاهده همه پروژه های فعال و غیر فعال از دستور docker ps با علامت اختصار a- چنین خروجی خواهیم دید:

docker ps -a

Output
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                          PORTS               NAMES
9b0db8a30ad1        ubuntu              "/bin/bash"         21 minutes ago      Exited (0) About a minute ago                       xenodochial_neumann
d7851eb12e23        ubuntu              "/bin/bash"         24 minutes ago      Exited (0) 24 minutes ago                           boring_chebyshev
d54945b6510b        hello-world         "/hello"            32 minutes ago      Exited (0) 32 minutes ago                           youthful_roentgen

برای مشاهده جدیدترین پروژه ساخته شده از علامت اختصار l- استفاده میکنیم:

docker ps -l

Output
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                            PORTS               NAMES
9b0db8a30ad1        ubuntu              "/bin/bash"         22 minutes ago      Exited (127) About a minute ago                       xenodochial_neumann

برای شروع یک پروژه متوقف شده از دستور docker start استفاده میکنیم، باید شناسه انحصاری آن یا Container ID را وارد کنیم، نمونه بالا برای ایمیج ubuntu آی دی آن 9b0db8a30ad1 میباشد:

docker start 9b0db8a30ad1 

برای دیدن وضعیت Container مربوطه از دستور docker ps میتوانیم مشاهده کنیم:

docker ps

Output
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
9b0db8a30ad1        ubuntu              "/bin/bash"         23 minutes ago      Up 11 seconds                           xenodochial_neumann

برای توقف یک پروژه کافیست از دستور docker stop استفاده کنید و سپس شناسه پروژه یا نام آن را وارد کنید:

docker stop xenodochial_neumann

برای حذف پروژه از دستور docker rm استفاده کنید،

سرورهای مجازی مخصوص داکر Docker ازلوکیشنهای مختلف

مرحله 5 – تغییر در یک Container ( پروژه ) و image Docker

شما زمانی که یک پروژه داکر راه اندازی میکنید، همانند یک مجازی ساز میتوانید در آن تغییرات اعمال کنید و یا آن را متوقف و استارت کنید و همچنین حذف کنید.
در این بخش نحوه ذخیره یک پروژه به عنوان image را به شما آموزش میدهیم.

بعد از نصب node.js در پروژه ubuntu ، آن image را خاموش میکنیم، حال میخواهیم این پروژه را به صورت یک image در سیستم عاملی دیگر نصب کنیم که Node.js در آن نصب باشد. برای این که در هر سرور مراحل نصب مجدد انجام نباشد پس از تغییرات اعمال شده یک image با نصب Nodejs گرفته و در سرورهای دیگر از این پروژه کامل شده استفاده میکنیم

برای این کار ابتدا در ایمیج قبلی که نصب است تغییرات را اعمال میکنیم:

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

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

به عنوان مثال ، برای کاربر sammy ، با شناسه کانتینر d9b100f2f636 ، دستور زیر است:

docker commit -m "added node.js" -a "sammy" d9b100f2f636 sammy/ubuntu-nodejs

پس از اتمام این کار ، لیست تمامی ایمیج Docker مشاهده میشود که در حال حاضر هم image قدیمی و هم image جدید اضافه شده است

docker images

Output
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
sammy/ubuntu-nodejs       latest              6a1784a63edf        2 minutes ago       170MB
ubuntu                    latest              ea4c82dcd15a        17 hours ago        85.8MB
hello-world               latest              4ab4c602aa5e        5 weeks ago         1.84kB

در مثال بالا image با نام ubuntu-nodejs همان ایمیج ساخته شده ای هست که در داکر هاب قرار داده شده است، این دو نسخه در این مثال با فرق نصب Node.js است.

حال بیاییم این image را به اشتراک بگذاریم تا دیگران هم از این پروژه استفاده کنند:

مرحله 6 – انتشار image در مخزن داکر

در قدم بعدی انتشار این image در دنیای اینترنت برای استفاده چند نفر از دوستانتان یا همگان بر روی image تولید شده شما میباشد. کل دنیای Docker Hub برگرفته از کاربرهای عضو شده بسیاری میباشد که این image ها را به اشتراک گذاشتند”
شما نیز برای اشتراک گذاری image خود باید در سایت داکر هاب عضو شوید.

برای انتشار ایمیج خود ابتدا وارد داکر هاب شوید:

docker login -u docker-registry-username

سپس با دستور زیر میتوانید ایمیج خود را منتشر کنید:

docker push docker-registry-username/ubuntu-nodejs

برای انتشار ایمیج ubuntu-nodejs در مخزن نام کاربری sammy اینطور عمل میکنیم:

docker push sammy/ubuntu-nodejs

ممکن است این فرآیند با آپلود کردن image مدتی طول بکشد ، اما پس از اتمام ، خروجی به این صورت خواهد بود:

Output
The push refers to repository [docker.io/sammy/ubuntu-nodejs]
1aa927602b6a: Pushed
76c033092e10: Pushed
2146d867acf3: Pushed
ae1f631f14b7: Pushed
102645f1cf72: Pushed
latest: digest: sha256:2be90a210910f60f74f433350185feadbbdaca0d050d97181bf593dd85195f06 size: 1362

بعد از انتشار دادن image به حساب کاربری ، باید مانند تصویر زیر نشان داده شده است ، در داشبورد حساب کاربری خود قرار دهید.

docker hub register

در این مقاله آموزش مختصری از جزئیات داکر و نحوه نصب و فعالسازی، تغییر، حذف و پابلیک سازی پروژه و ایمیج گفته شد، امیدواریم این آموزش برای شما مفید واقع شده باشد.

اولین نفری باشید که از آموزشها و تخفیفهای ویژه با خبر میشوید 😉
با عضویت در خبرنامه از 80 درصد تخفیف بهره مند شوید

3/5 - (1 امتیاز)