آموزش نصب داکر Docker در Ubuntu 16.04
داکر چیست؟
Docker ( داکر ) یک سکوی متن باز برای ساخت، طراحی و اجرای اپلیکیشن های توزیع شده است . توسط داکر می توانید اپلیکیشن های خود را سریع تر و راحت تر منتشر کنید. Docker به صورتی عمل می کند که عملیات بسته بندی ، حمل و توسعه هر برنامه کاربردی که به صورت سبک و قابل حمل ایجاد شده است را بطور خودکار انجام دهد. از دیگر ویژگی های این پلتفرم، امکان گسترش سرویس های قابل توسعه به شیوه ای امن و قابل اعتماد در طیف گسترده ای از پلتفرم ها است. از دیگرقابلیت های داکر می توان به انتقال اپلیکیشن ها و انعطاف پذیری زیر ساخت، به روز رسانی پویا و ایجاد تغییرات در لحظه را نام برد.
محبوبیت داکر
این روزها داکر و Moby که به عنوان مجموعه بالاسری داکر شناخته میشود، مخاطبین بسیار زیادی جذب کرده و بنا به گزارش داکر چیزی بیشتر از ۳.۵ اپلیکیشن در کانتینرها از طریق فناوری داکر قرار دارند و بیشتر از ۳.۷ میلیارد اپلیکیشن از این طریق دانلود شده است.
این موارد باعث شده است بزرگانی مانند ردهت، کنونیکال، اوراکل و مایکروسافت نیز به استفاده از داکر گرایش پیدا کنند و در حال حاضر تقریباً تمامی بزرگان حاضر در بستر رایانش ابری به نوعی از داکر استفاده میکنند.
در این آموزش ، نحوه نصب و استفاده از آن را در اوبونتو 16.04 یاد خواهید گرفت.
پیش نیاز ها
برای دنبال کردن این آموزش به موارد زیر نیاز دارید:
- همانطور که در این آموزش مشخص هست، نیازمند به سرور لینوکسی Ubuntu 16.04 میباشد، برای دریافت این سرور میتوانید به این لینک مراجعه کنید.
- اگر میخواهید خودتان پروژه ای به اشتراک بگذارید باید در Docker Hub عضو شوید و مراحل 5 و 6 را انجام دهید.
مرحله 1 – نصب Docker
ابتدا باید با استفاده از کلید 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
استفاده کنید،
مرحله 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 به حساب کاربری ، باید مانند تصویر زیر نشان داده شده است ، در داشبورد حساب کاربری خود قرار دهید.
در این مقاله آموزش مختصری از جزئیات داکر و نحوه نصب و فعالسازی، تغییر، حذف و پابلیک سازی پروژه و ایمیج گفته شد، امیدواریم این آموزش برای شما مفید واقع شده باشد.
اولین نفری باشید که از آموزشها و تخفیفهای ویژه با خبر میشوید 😉
با عضویت در خبرنامه از 80 درصد تخفیف بهره مند شوید
اولین نفر باشید که نظر ارسال میکنید