Πώς να εγκαταστήσετε το Docker και να εκτελέσετε το Docker Containers στο Ubuntu
Το Docker είναι μια ανοιχτού κώδικα και δημοφιλής τεχνολογία εικονικοποίησης σε επίπεδο λειτουργικού συστήματος (κοινώς γνωστή ως "containerization ") που εκτελείται κυρίως σε Linux και Windows. Το Docker διευκολύνει τη δημιουργία, την ανάπτυξη και την εκτέλεση εφαρμογών χρησιμοποιώντας κοντέινερ.
Με τα κοντέινερ, οι προγραμματιστές (και οι διαχειριστές συστήματος) μπορούν να συσκευάσουν μια εφαρμογή με όλα όσα χρειάζονται για την εκτέλεση της εφαρμογής – τον κώδικα, έναν χρόνο εκτέλεσης, βιβλιοθήκες, μεταβλητές περιβάλλοντος και αρχεία διαμόρφωσης και να τα στείλουν όλα ως ένα πακέτο. Ναι, είναι τόσο υπέροχο!
Σε αυτό το άρθρο, θα σας δείξουμε πώς να εγκαταστήσετε το Docker CE (Community Edition), να δημιουργήσετε και να εκτελέσετε κοντέινερ Docker στη διανομή Ubuntu.
Εγκατάσταση του Docker CE (Community Edition) στο Ubuntu
1. Για να εγκαταστήσετε το Docker CE, πρέπει πρώτα να καταργήσετε τις παλαιότερες εκδόσεις του Docker που ονομάζονταν docker
, docker.io
ή docker-engine
από το σύστημα χρησιμοποιώντας την ακόλουθη εντολή.
sudo apt-get remove docker docker-engine docker.io containerd runc
2. Στη συνέχεια, πρέπει να ρυθμίσετε το αποθετήριο Docker για να εγκαταστήσετε και να ενημερώσετε το Docker από το αποθετήριο χρησιμοποιώντας τις ακόλουθες εντολές.
sudo apt-get update
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
3. Ενημερώστε το ευρετήριο πακέτου apt και εγκαταστήστε την πιο πρόσφατη έκδοση του Docker CE χρησιμοποιώντας τις ακόλουθες εντολές.
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
aufs-tools cgroupfs-mount pigz
The following NEW packages will be installed:
aufs-tools cgroupfs-mount containerd.io docker-ce docker-ce-cli pigz
0 upgraded, 6 newly installed, 0 to remove and 167 not upgraded.
Need to get 50.7 MB of archives.
After this operation, 243 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu.com/ubuntu bionic/universe amd64 pigz amd64 2.4-1 [57.4 kB]
Get:2 https://download.docker.com/linux/ubuntu bionic/stable amd64 containerd.io amd64 1.2.4-1 [19.9 MB]
Get:3 http://archive.ubuntu.com/ubuntu bionic/universe amd64 aufs-tools amd64 1:4.9+20170918-1ubuntu1 [104 kB]
Get:4 http://archive.ubuntu.com/ubuntu bionic/universe amd64 cgroupfs-mount all 1.4 [6,320 B]
Get:5 https://download.docker.com/linux/ubuntu bionic/stable amd64 docker-ce-cli amd64 5:18.09.3~3-0~ubuntu-bionic [13.1 MB]
Get:6 https://download.docker.com/linux/ubuntu bionic/stable amd64 docker-ce amd64 5:18.09.3~3-0~ubuntu-bionic [17.4 MB]
Fetched 50.7 MB in 7s (7,779 kB/s)
...
4. Μετά την επιτυχή εγκατάσταση του πακέτου Docker CE, η υπηρεσία θα πρέπει να ξεκινήσει αυτόματα και να ενεργοποιηθεί αυτόματα για να ξεκινήσει κατά την εκκίνηση του συστήματος, μπορείτε να ελέγξετε την κατάστασή της χρησιμοποιώντας την ακόλουθη εντολή .
sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2019-03-06 08:06:42 UTC; 2min 18s ago
Docs: https://docs.docker.com
Main PID: 5274 (dockerd)
Tasks: 8
CGroup: /system.slice/docker.service
└─5274 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.562587408Z" level=warning msg="Your kernel does not support cgroup rt runtime"
Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.562767803Z" level=warning msg="Your kernel does not support cgroup blkio weight"
Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.562966844Z" level=warning msg="Your kernel does not support cgroup blkio weight_device"
Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.565298457Z" level=info msg="Loading containers: start."
Mar 06 08:06:41 tecmint dockerd[5274]: time="2019-03-06T08:06:41.950942467Z" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a prefer
Mar 06 08:06:42 tecmint dockerd[5274]: time="2019-03-06T08:06:42.036964493Z" level=info msg="Loading containers: done."
Mar 06 08:06:42 tecmint dockerd[5274]: time="2019-03-06T08:06:42.156279378Z" level=info msg="Docker daemon" commit=774a1f4 graphdriver(s)=overlay2 version=18.09.3
Mar 06 08:06:42 tecmint dockerd[5274]: time="2019-03-06T08:06:42.157145045Z" level=info msg="Daemon has completed initialization"
Mar 06 08:06:42 tecmint systemd[1]: Started Docker Application Container Engine.
Mar 06 08:06:42 tecmint dockerd[5274]: time="2019-03-06T08:06:42.224229999Z" level=info msg="API listen on /var/run/docker.sock"
5. Τέλος, επαληθεύστε ότι το Docker CE έχει εγκατασταθεί σωστά εκτελώντας την εικόνα hello-world
.
sudo docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Μάθετε Βασικές εντολές Docker στο Ubuntu
6. Για να λάβετε πληροφορίες σχετικά με το Docker, εκτελέστε την ακόλουθη εντολή.
sudo docker info
Kernel Version: 5.0.0-050000-generic
Operating System: Ubuntu 18.04.1 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.452GiB
Name: tecmint
ID: FWSB:IRIF:DYL7:PRB5:Y66E:37MY:ISPO:HZVY:6YJO:2IYL:TO6Y:GNB7
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine
7. Για να λάβετε πληροφορίες σχετικά με την έκδοση Docker, εκτελέστε την ακόλουθη εντολή.
sudo docker version
Client:
Version: 18.09.3
API version: 1.39
Go version: go1.10.8
Git commit: 774a1f4
Built: Thu Feb 28 06:53:11 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.3
API version: 1.39 (minimum version 1.12)
Go version: go1.10.8
Git commit: 774a1f4
Built: Thu Feb 28 05:59:55 2019
OS/Arch: linux/amd64
Experimental: false
8. Για να λάβετε μια λίστα με όλες τις διαθέσιμες εντολές Docker, εκτελέστε το docker
στο τερματικό σας.
docker
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Options:
--config string Location of client config files (default "/home/tecmint/.docker")
-D, --debug Enable debug mode
-H, --host list Daemon socket(s) to connect to
-l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/home/tecmint/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/home/tecmint/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/home/tecmint/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit
Management Commands:
builder Manage builds
config Manage Docker configs
container Manage containers
engine Manage the docker engine
image Manage images
network Manage networks
node Manage Swarm nodes
plugin Manage plugins
secret Manage Docker secrets
service Manage services
stack Manage Docker stacks
swarm Manage Swarm
system Manage Docker
trust Manage trust on Docker images
volume Manage volumes
....
Κατεβάστε μια εικόνα Docker στο Ubuntu
9. Για να εκτελέσετε ένα κοντέινερ Docker, πρώτα, πρέπει να κάνετε λήψη μιας εικόνας από το Docker Hub – παρέχει δωρεάν εικόνες από τα αποθετήρια του.
Για παράδειγμα, για να κάνετε λήψη μιας εικόνας Docker που ονομάζεται CentOS 7
, εκτελέστε την ακόλουθη εντολή.
sudo docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 5227 [OK]
ansible/centos7-ansible Ansible on Centos7 120 [OK]
jdeathe/centos-ssh CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x86… 107 [OK]
consol/centos-xfce-vnc Centos container with "headless" VNC session… 81 [OK]
imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 50 [OK]
centos/mysql-57-centos7 MySQL 5.7 SQL database server 47
tutum/centos Simple CentOS docker image with SSH access 43
gluster/gluster-centos Official GlusterFS Image [ CentOS-7 + Glust… 40 [OK]
openshift/base-centos7 A Centos7 derived base image for Source-To-I… 39
centos/postgresql-96-centos7 PostgreSQL is an advanced Object-Relational … 37
centos/python-35-centos7 Platform for building and running Python 3.5… 33
kinogmt/centos-ssh CentOS with SSH 26 [OK]
openshift/jenkins-2-centos7 A Centos7 based Jenkins v2.x image for use w… 20
centos/php-56-centos7 Platform for building and running PHP 5.6 ap… 19
pivotaldata/centos-gpdb-dev CentOS image for GPDB development. Tag names… 10
openshift/wildfly-101-centos7 A Centos7 based WildFly v10.1 image for use … 6
openshift/jenkins-1-centos7 DEPRECATED: A Centos7 based Jenkins v1.x ima… 4
darksheer/centos Base Centos Image -- Updated hourly 3 [OK]
pivotaldata/centos Base centos, freshened up a little with a Do… 2
pivotaldata/centos-mingw Using the mingw toolchain to cross-compile t… 2
pivotaldata/centos-gcc-toolchain CentOS with a toolchain, but unaffiliated wi… 1
openshift/wildfly-81-centos7 A Centos7 based WildFly v8.1 image for use w… 1
blacklabelops/centos CentOS Base Image! Built and Updates Daily! 1 [OK]
smartentry/centos centos with smartentry 0 [OK]
jameseckersall/sonarr-centos Sonarr on CentOS 7 0 [OK]
10. Αφού καθορίσετε ποια εικόνα θέλετε να εκτελεστεί με βάση τις απαιτήσεις σας, κάντε λήψη της τοπικά εκτελώντας την παρακάτω εντολή (σε αυτήν την περίπτωση γίνεται λήψη και χρήση μιας εικόνας CentOS ).
docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a02a4930cb5d: Pull complete
Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
Status: Downloaded newer image for centos:latest
11. Για να παραθέσετε όλες τις διαθέσιμες εικόνες Docker στον κεντρικό υπολογιστή σας, εκτελέστε την ακόλουθη εντολή.
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest fce289e99eb9 2 months ago 1.84kB
centos latest 1e1148e4cc2c 3 months ago 202MB
12. Εάν δεν θέλετε πλέον μια εικόνα Docker και μπορείτε να την καταργήσετε χρησιμοποιώντας την ακόλουθη εντολή.
sudo docker rmi centos
Untagged: centos:latest
Untagged: centos@sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
Deleted: sha256:1e1148e4cc2c148c6890a18e3b2d2dde41a6745ceb4e5fe94a923d811bf82ddb
Deleted: sha256:071d8bd765171080d01682844524be57ac9883e53079b6ac66707e192ea25956
Εκτελέστε ένα Docker Container στο Ubuntu
13. Για να δημιουργήσετε και να εκτελέσετε ένα κοντέινερ Docker, πρέπει πρώτα να εκτελέσετε μια εντολή σε μια εικόνα CentOS
που έχετε λάβει, επομένως μια βασική εντολή θα ήταν να ελέγξετε την έκδοση διανομής αρχείο μέσα στο κοντέινερ χρησιμοποιώντας την εντολή cat, όπως φαίνεται.
docker run centos cat /etc/issue
14. Για να εκτελέσετε ξανά τα κοντέινερ, πρώτα πρέπει να λάβετε το Αναγνωριστικό κοντέινερ ή όνομα εκτελώντας την ακόλουθη εντολή, η οποία θα εμφανίσει μια λίστα με τα κοντέινερ που βρίσκονται σε λειτουργία και σταματημένα:
sudo docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0ddfa81c5779 centos "cat /etc/issue" About a minute ago Exited (0) About a minute ago elastic_shirley
15. Μόλις αποκτήσετε το Αναγνωριστικό κοντέινερ ή όνομα, μπορείτε να ξεκινήσετε το κοντέινερ χρησιμοποιώντας την ακόλουθη εντολή:
sudo docker start 0ddfa81c5779
OR
sudo docker start elastic_shirley
Εδώ, η συμβολοσειρά 0ddfa81c5779
αντιπροσωπεύει το αναγνωριστικό κοντέινερ και το elastic_shirley
αντιπροσωπεύει το όνομα κοντέινερ.
16. Για να διακόψετε το τρέχον κοντέινερ, εκτελέστε την εντολή docker stop
καθορίζοντας το Αναγνωριστικό κοντέινερ ή όνομα.
sudo docker stop 0ddfa81c5779
OR
sudo docker stop elastic_shirley
17. Ένας καλύτερος τρόπος, έτσι ώστε να μην χρειάζεται να θυμάστε το αναγνωριστικό κοντέινερ θα ήταν να ορίσετε ένα μοναδικό όνομα για κάθε κοντέινερ που δημιουργείτε χρησιμοποιώντας το --name
επιλογή όπως φαίνεται.
docker run --name myname centos cat /etc/issue
18. Για να συνδέσετε και να εκτελέσετε εντολές Linux σε ένα κοντέινερ εκδώστε την ακόλουθη εντολή.
docker run -it centos bash
[root@6213ec547863 /]# uname -a
Linux 6213ec547863 5.0.0-050000-generic #201903032031 SMP Mon Mar 4 01:33:18 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
[root@6213ec547863 /]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
19. Για έξοδο και επιστροφή στον κεντρικό υπολογιστή από την τρέχουσα περίοδο λειτουργίας κοντέινερ, πρέπει να πληκτρολογήσετε την εντολή exit
όπως φαίνεται.
exit
Αυτό είναι όλο για τον βασικό χειρισμό του κοντέινερ. Εάν έχετε ερωτήσεις ή σχόλια σχετικά με αυτό το άρθρο, χρησιμοποιήστε την παρακάτω φόρμα σχολίων για να επικοινωνήσετε μαζί μας.